@vizbeetv/sdk-qa 7.8.40 → 7.8.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chromecast-v2/es5/index.js +1 -1
- package/chromecast-v2/es6/index.js +1 -1
- package/lg/es5/index.js +1 -1
- package/lg/es6/index.js +1 -1
- package/lg-el/es5/index.js +1 -0
- package/lg-el/es6/index.js +1 -0
- package/package.json +37 -1
- package/samsung/es5/index.js +1 -1
- package/samsung/es6/index.js +1 -1
- package/samsung-el/es5/index.js +1 -0
- package/samsung-el/es6/index.js +1 -0
- package/types/index.d.ts +9 -2
- package/vizio/index.js +1 -1
- package/xbox/es5/index.js +1 -1
- package/xbox/es6/index.js +1 -1
- package/xbox-el/es5/index.js +1 -0
- package/xbox-el/es6/index.js +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
if(window.VizbeeSDK||(window.VizbeeSDK={}),!window.VizbeeSDK.logger){var e=function(){};window.VizbeeSDK.logger={debug:e,info:e,warn:e,error:e,d:e,i:e,w:e,e,critical:e,verbose:e}}const t="UNKNOWN",i="subtitle",r="audio",n="chromecast_caf",s="chromecast_v2",a="avplayer",o="bitmovin",l="videojs",d="theo",c="shaka";class u{constructor(e){if("Platform"===this.constructor.name)throw new TypeError("Platform::constructor() - Abstract class.");this.config=e||{},this.launchParams=void 0,this.isAppExitInProgress=!1}setConfig(e){this.config=e}get cloudPlatformName(){throw new TypeError("Platform::cloudPlatformName() - Abstract method.")}uniqueDeviceID(e,t){this.deviceId.uniqueDeviceID(e,t)}set deviceIDAlgorithm(e){}get deviceIDAlgorithm(){return this.deviceId.algorithm}get platformModel(){}get deviceInfo(){}get platformVersion(){}get networkInfo(){}get adId(){}get isAdTrackingDisabled(){}createInputDevice(){throw new TypeError("Platform::createInputDevice() - Abstract method.")}enableScreenSaver(e){}get defaultAppletAppId(){throw new TypeError("Platform::defaultAppletAppId() - Abstract method.")}get launchParamsDeferral(){return this.launchParams}get appLifeCycleManager(){}exit(){VizbeeTV.logger.i("BasePlatform","exit"),this.appLifeCycleManager&&this.appLifeCycleManager.emit("onEnd")}set isAppExiting(e){this.isAppExitInProgress=e}get isAppExiting(){return this.isAppExitInProgress}createPlayer(){throw new TypeError("Platform::createPlayer() - Abstract method.")}}class p{constructor(e,t){if("BaseEvent"===this.constructor.name)throw new TypeError("BaseEvent::constructor() - Abstract class.");this.nativeEvent=e,this.source=t}}class h extends p{constructor(e,t){super(e,t)}}class g extends h{constructor(e,t){if(!(t instanceof N))throw new TypeError("TVRemoteEvent::constructor() - source must be an instance of BaseTVRemote.");super(e,t),this.keyCode=t.keyCodeMap[e.keyCode],this.keyName=t.keyNameMap[this.keyCode]}}class f{constructor(){if("BaseEventDispatcher"===this.constructor.name)throw new TypeError("BaseEventDispatcher::constructor() - Abstract class.");this.eventType=void 0,this._eventHandlers=[],this.registerListener()}registerListener(){throw new TypeError("BaseEventDispatcher::registerListener() - Abstract method.")}set onevent(e){if(void 0===e)this._eventHandlers=[];else{if(!(e instanceof Function))throw new TypeError("BaseEventDispatcher::onevent setter - callback must be an instance of Function.");this._eventHandlers.push(e)}}dispatchEvent(e){if(!(e instanceof p))throw new TypeError("BaseEventDispatcher::dispatchEvent() - event must be instance of BaseEvent.");this._eventHandlers.forEach(t=>{t instanceof Function&&t(e)})}reset(){this._eventHandlers=[]}}class v extends f{constructor(){if(super(),"BaseInputDevice"===this.constructor.name)throw new TypeError("BaseInputDevice::constructor() - Abstract class.")}}var y,m,b,S={exports:{}},_=S.exports;function T(){return y||(y=1,e=S,function(t){var i=setTimeout;function r(){}var n="function"==typeof setImmediate&&setImmediate||function(e){i(e,1)},s=function(e){"undefined"!=typeof console&&console},a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],h(e,this)}function l(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n(function(){var i=1===e._state?t.onFulfilled:t.onRejected;if(null!==i){var r;try{r=i(e._value)}catch(e){return void c(t.promise,e)}d(t.promise,r)}else(1===e._state?d:c)(t.promise,e._value)})):e._deferreds.push(t)}function d(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var i=t.then;if(t instanceof o)return e._state=3,e._value=t,void u(e);if("function"==typeof i)return void h((r=i,n=t,function(){r.apply(n,arguments)}),e)}e._state=1,e._value=t,u(e)}catch(t){c(e,t)}var r,n}function c(e,t){e._state=2,e._value=t,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&setTimeout(function(){e._handled||s(e._value)},1);for(var t=0,i=e._deferreds.length;t<i;t++)l(e,e._deferreds[t]);e._deferreds=null}function p(e,t,i){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=i}function h(e,t){var i=!1;try{e(function(e){i||(i=!0,d(t,e))},function(e){i||(i=!0,c(t,e))})}catch(e){if(i)return;i=!0,c(t,e)}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var i=new o(r);return l(this,new p(e,t,i)),i},o.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&a(arguments[0])?arguments[0]:arguments);return new o(function(t,i){if(0===e.length)return t([]);var r=e.length;function n(s,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var o=a.then;if("function"==typeof o)return void o.call(a,function(e){n(s,e)},i)}e[s]=a,0===--r&&t(e)}catch(e){i(e)}}for(var s=0;s<e.length;s++)n(s,e[s])})},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o(function(t){t(e)})},o.reject=function(e){return new o(function(t,i){i(e)})},o.race=function(e){return new o(function(t,i){for(var r=0,n=e.length;r<n;r++)e[r].then(t,i)})},o._setImmediateFn=function(e){n=e},o._setUnhandledRejectionFn=function(e){s=e},e.exports?e.exports=o:t.Promise||(t.Promise=o)}(_)),S.exports;var e}function E(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function I(){if(b)return m;b=1;var e={get:function(e,t,i){for(var r=Array.isArray(t)?t:[t],n=e,s=0;s<r.length;s++){if(null==n)return i;n=n[r[s]]}return void 0===n?i:n},extend:function(e){if(null==e)return e;for(var t=1;t<arguments.length;t++){var i=arguments[t];if(null!=i)for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e},isObject:function(e){return null!==e&&"object"==typeof e},find:function(e,t){if(null!=e){if(Array.isArray(e))return e.find(t);for(var i=Object.keys(e),r=0;r<i.length;r++){var n=e[i[r]];if(t(n,i[r],e))return n}}},keys:function(e){return Object.keys(e)},isString:function(e){return"string"==typeof e},filter:function(e,t){return Array.isArray(e)?e.filter(t):Object.keys(e).reduce(function(i,r){return t(e[r],r,e)&&i.push(e[r]),i},[])},omit:function(e){var t=Array.isArray(arguments[1])?arguments[1]:Array.prototype.slice.call(arguments,1),i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(i[r]=e[r]);return i},isUndefined:function(e){return void 0===e},isNumber:function(e){return"number"==typeof e},isArray:function(e){return Array.isArray(e)},each:function(e,t){return Array.isArray(e)?e.forEach(t):null!=e&&Object.keys(e).forEach(function(i){t(e[i],i,e)}),e},contains:function(e,t){return-1!==e.indexOf(t)},values:function(e){return Object.keys(e).map(function(t){return e[t]})},isFunction:function(e){return"function"==typeof e},isEmpty:function(e){return null==e||(Array.isArray(e)||"string"==typeof e?0===e.length:0===Object.keys(e).length)},clone:function(t){return Array.isArray(t)?t.slice():e.extend({},t)},reject:function(e,t){return Array.isArray(e)?e.filter(function(e){return!t(e)}):Object.keys(e).reduce(function(i,r){return t(e[r],r,e)||i.push(e[r]),i},[])},reduce:function(e,t,i){return Array.isArray(e)?e.reduce(t,i):(Object.keys(e).forEach(function(r){i=t(i,e[r],r,e)}),i)},isBoolean:function(e){return!0===e||!1===e},isNaN:function(e){return"number"==typeof e&&e!=e},isEqual:function(e,t){return JSON.stringify(e)===JSON.stringify(t)},pluck:function(e,t){return e.map(function(e){return e[t]})},findIndex:function(e,t){var i="function"==typeof t?t:function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})};return e.findIndex(i)},findLastIndex:function(e,t){for(var i="function"==typeof t?t:function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})},r=e.length-1;r>=0;r--)if(i(e[r],r,e))return r;return-1},findWhere:function(e,t){return e.find(function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})})},without:function(e){var t=Array.prototype.slice.call(arguments,1);return e.filter(function(e){return-1===t.indexOf(e)})},sortBy:function(e,t){var i="function"==typeof t?t:function(e){return e[t]};return e.slice().sort(function(e,t){var r=i(e),n=i(t);return r<n?-1:r>n?1:0})},rest:function(e,t){return e.slice(void 0===t?1:t)},indexOf:function(e,t){return e.indexOf(t)},intersection:function(){var e=Array.prototype.slice.call(arguments);return e[0].filter(function(t){return e.every(function(e){return-1!==e.indexOf(t)})})}};return m=e}var P=E(I());let V=[],A=[],C=[],k=document.getElementsByTagName("HEAD")[0],D=document.getElementsByTagName("BODY")[0];class M{static xchangeHLSUrl(e,t,i,r,n,s){var a="unknown",o="unknown";t&&(a=t),i&&(o=i);var l="https://hlsxchange.claspws.tv/"+a+"/"+o;return e&&e.indexOf(l)>=0?e:(r&&n&&s&&(l+="/"+r+"/"+n+"/"+s),l+="/x.m3u8?hlsurl="+e)}static getRandomIntInclusive(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static buildErrorEvent(e,t,i){return{code:e,reason:t,data:i}}static loadStyleSheet(e){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadStyleSheet - Url must be a string.");var t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),k.appendChild(t),C.push(t),t.setAttribute("href",e)}static loadSynchronousScripts(e){var t=t||void 0;if(t||(t=T()),void 0===M.loadSynchronousScripts.scripts&&(M.loadSynchronousScripts.scripts=[],M.loadSynchronousScripts.index=-1,M.loadSynchronousScripts.loading=!1,M.loadSynchronousScripts.next=function(){if(!M.loadSynchronousScripts.loading){M.loadSynchronousScripts.loading=!0;var e=M.loadSynchronousScripts.scripts[++M.loadSynchronousScripts.index],t=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.src=e.src,i.onload=()=>{M.loadSynchronousScripts.loading=!1,M.loadSynchronousScripts.index<M.loadSynchronousScripts.scripts.length-1&&M.loadSynchronousScripts.next(),e.resolve()},t.appendChild(i)}}),e){for(var i=0;i<M.loadSynchronousScripts.scripts.length;i++)if(M.loadSynchronousScripts.scripts[i].src==e)return M.loadSynchronousScripts.scripts[i].promise;var r={src:e};r.promise=new t(e=>{r.resolve=e}),M.loadSynchronousScripts.scripts.push(r),M.loadSynchronousScripts.next()}return M.loadSynchronousScripts.scripts[M.loadSynchronousScripts.scripts.length-1].promise}static loadScript(e,t,i){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadScript - Url must be a string.");t=!(!t&&void 0!==t);var r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("async",t),r.onload=i||(()=>{}),k.appendChild(r),V.push(r),r.setAttribute("src",e)}static loadScriptToBody(e,t,i){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadScript - Url must be a string.");t=!(!t&&void 0!==t);var r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("async",t),r.onload=i||(()=>{}),D.appendChild(r),A.push(r),r.setAttribute("src",e)}static clearLoadedScripts(){for(let e=0;e<V.length;e++)V[e]&&V[e]instanceof Node&&(k.removeChild(V[e]),delete V[e])}static clearBodyLoadedScripts(){for(let e=0;e<A.length;e++)A[e]&&A[e]instanceof Node&&(D.removeChild(A[e]),delete A[e])}static clearLoadedStyleSheets(){for(let e=0;e<C.length;e++)C[e]&&C[e]instanceof Node&&(C[e].disabled=!0,k.removeChild(C[e]),delete C[e])}static clearAllLoadedScriptsAndStyleSheets(){M.clearLoadedScripts(),M.clearLoadedStyleSheets()}static addClass(e,t){if(t){var i=t.className;if(-1!=i.indexOf(e))return;""!=i&&(e=" "+e),t.className=i+e}}static removeClass(e,t){if(t){var i=t.className,r=new RegExp(e,"g");i=i.replace(r,""),t.className=i}}static hasClass(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}static elementInViewport(e,t,i){var r=e.getBoundingClientRect(),n=r.top,s=r.bottom,a=r.left,o=r.right,l=document.documentElement.clientHeight,d=document.documentElement.clientWidth,c=window.innerHeight,u=window.innerWidth;return i&&(n-=i),t?n>=0&&s<=window.innerHeight:n>=0&&n<=(c||l)&&a>=0&&a<=(u||d)||s>=0&&s<=(c||l)&&o>=0&&o<=(u||d)}static smoothScroll(e,t){var i=e,r=e;do{if(!(i=i.parentNode))return;i.scrollTop+=1}while(0==i.scrollTop);var n=0;do{if(e==i)break;n+=e.offsetTop}while(e=e.offsetParent);M.myscroll(r,t,i,i.scrollTop,n-t,0)}static myscroll(e,t,i,r,n,s){++s>10||e.children.length>0&&M.elementInViewport(e.children.item(0),!0,t)||(i.scrollTop=r+(n-r)/10*s,setTimeout(function(){M.myscroll(e,t,i,r,n,s)},20))}static xhr(e){var t=t||void 0;return t||(t=T()),new t(function(t,i){var r=0===e.retries?0:e.retries||3;!function n(){var s=new XMLHttpRequest;e.disableSSL||(e.url=e.url.replace(/^http:\/\//i,"https://")),s.open(e.method||"GET",e.url,!0),Object.keys(e.headers||{}).forEach(function(t){s.setRequestHeader(t,e.headers[t])});var a=void 0;s.onreadystatechange=function(o){var l,d;if(2==s.readyState&&(l=s.getAllResponseHeaders().trim().split(/[\r\n]+/),d={},l.forEach(function(e){var t=e.split(": "),i=t.shift(),r=t.join(": ");d[i]=r}),a=d),4===s.readyState)if(-1===[200,201,202,203,204,304].indexOf(s.status))r>0?(r--,n()):e.isFullResponse?i(s):i(new Error("Server responded with a status of "+s.status));else try{var c=o.target;e.format=e.format||"json","json"===e.format?(c=c.response?JSON.parse(c.response):{}).headers?Object.assign(c.headers,a):c.headers=a:"xml"===e.format&&(c=c.responseXML),e.isFullResponse?t({xhr:o.target,data:c,headers:a}):t(c)}catch(o){r>0?(r--,n()):e.isFullResponse?i(s):i("JSON parse error with Server response")}},e.timeout&&(s.timeout=e.timeout,s.ontimeout=function(t){r>0?(r--,n()):i(new Error("Server timeout "+e.timeout+"ms"))}),s.send(e.data)}()})}static timeSnapToMs(e){e.split(".").length<=1&&(e+=".000");let t=e.split(":"),i=t.pop().split("."),r=1e3*Number(i[0])+Number(i[1]);return r+=1e3*Number(t.pop())*60,r+=1e3*Number(t.pop())*60*60,r}static millisecondsToString(e,t){var i="",r=Math.floor(e%31536e3%86400%3600%60);i=isNaN(r)||r<=0?":00":r<10?":0"+r:":"+r;var n=Math.floor(e%31536e3%86400%3600/60);i=isNaN(n)||n<=0?"00"+i:n<10?"0"+n+i:n+i;var s=Math.floor(e%31536e3%86400/3600);return t?i=isNaN(s)||s<=0?"00:"+i:s<10?"0"+s+":"+i:s+":"+i:s>0&&(i=s+":"+i),i}static getUrlVars(e=window.location.href){for(var t,i={},r=e.slice(e.indexOf("?")+1).split("&"),n=0;n<r.length;n++)i[(t=r[n].split("="))[0]]=decodeURIComponent(t[1]);return i}static updateUrlQueryParams(e,t){if(!e)return VizbeeUtils.logger.warn("Util::updateUrlQueryParams - INVALID inputUrl, doing nothing"),e;if(P.isEmpty(t))return VizbeeUtils.logger.warn("Util::updateUrlQueryParams - INVALID inputParams, doing nothing"),e;try{let i=new URL(e),r=new URLSearchParams(i.search);Object.keys(t).forEach(e=>r.set(e,t[e])),i.search=r.toString();let n=i.toString();return VizbeeUtils.logger.debug("Util::updateUrlQueryParams - updated url="+n),n}catch(t){return VizbeeUtils.logger.error("Util::updateUrlQueryParams - failed to update query params for url="+e),e}}static get docCookies(){return{getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,t,i,r,n,s){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(i)switch(i.constructor){case Number:a=i===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+i;break;case String:a="; expires="+i;break;case Date:a="; expires="+i.toUTCString()}return document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(n?"; domain="+n:"")+(r?"; path="+r:"")+(s?"; secure":""),!0},removeItem:function(e,t,i){return!!this.hasItem(e)&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(i?"; domain="+i:"")+(t?"; path="+t:""),!0)},hasItem:function(e){return!!e&&new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),t=e.length,i=0;i<t;i++)e[i]=decodeURIComponent(e[i]);return e},eraseCookieFromAllPaths:function(e){var t=location.pathname.split("/"),i=" path=";document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for(var r=0;r<t.length;r++)i+=("/"!=i.substr(-1)?"/":"")+t[r],document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;"+i+";"}}}static invert(e){for(var t={},i=Object.keys(e),r=0,n=i.length;r<n;r++)t[e[i[r]]]=i[r];return t}static deepMerge(e,t){var i=Array.isArray(t),r=i&&[]||{};return i?(e=e||[],r=r.concat(e),t.forEach(function(t,i){void 0===r[i]?r[i]=t:"object"==typeof t?r[i]=M.deepMerge(e[i],t):-1===e.indexOf(t)&&r.push(t)})):("object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){r[t]=e[t]}),Object.keys(t).forEach(function(i){"object"==typeof t[i]&&t[i]&&e[i]?r[i]=M.deepMerge(e[i],t[i]):r[i]=t[i]})),r}static isEqual(e,t){return P.isEqual(e,t)}static flatten(e){var t={};return function e(i,r){if(Object(i)!==i)t[r]=i;else if(Array.isArray(i)){for(var n=0,s=i.length;n<s;n++)e(i[n],r+"["+n+"]");0==s&&(t[r]=[])}else{var a=!0;for(var o in i)a=!1,e(i[o],r?r+"."+o:o);a&&r&&(t[r]={})}}(e,""),t}static unflatten(e){if(Object(e)!==e||Array.isArray(e))return e;var t=/\.?([^.\[\]]+)|\[(\d+)\]/g,i={};for(var r in e){for(var n,s=i,a="";n=t.exec(r);)s=s[a]||(s[a]=n[2]?[]:{}),a=n[2]||n[1];s[a]=e[r]}return i[""]||i}static decodeB64Recurse(e,t){if(!e||!t)return e;for(var i in e){var r=e[i];if("object"==typeof r)M.decodeB64Recurse(r,t);else if(i.indexOf(t)>-1){var n=i.replace(t,"");if(e[n]=e[i],delete e[i],"string"==typeof e[n]){var s=decodeURIComponent(escape(atob(e[n])));e[n]=M.parseFunction(s)}}}return e}static parseFunction(e){var t=e.indexOf("{"),i=e.substring(t+1,e.lastIndexOf("}")),r=e.substring(0,t),n=r.substring(r.indexOf("(")+1,r.lastIndexOf(")")).split(",");function s(){return Function.apply(this,n)}return n.push(i),s.prototype=Function.prototype,new s}static padStart(e,t,i){return t|=0,i=String(void 0!==i?i:" "),e.length>t?String(e):((t-=e.length)>i.length&&(i+=M.repeat(i,t/i.length)),i.slice(0,t)+String(e))}static padEnd(e,t,i){return t|=0,i=String(void 0!==i?i:" "),e.length>t?String(e):((t-=e.length)>i.length&&(i+=M.repeat(i,t/i.length)),String(e)+i.slice(0,t))}static repeat(e,t){if(!e)throw new TypeError("can't convert "+e+" to object");var i=""+e;if((t=+t)!=t&&(t=0),t<0)throw new RangeError("repeat count must be non-negative");if(t==1/0)throw new RangeError("repeat count must be less than infinity");if(t=Math.floor(t),0==i.length||0==t)return"";if(i.length*t>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");var r=i.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)i+=i,t--;return i+i.substring(0,r-i.length)}static getShortString(e,t){if(!P.isString(t))return e;if(!P.isString(e))return e;if(-1!=e.indexOf(t)){let i=e.trim().split(t);return P.reduce(i,(e,t)=>e+t.charAt(0),"")}return e}static toCamelCase(e){return void 0===e?e:(e=e.replace(/([-_][a-z])/g,e=>e.toUpperCase().replace("-","").replace("_",""))).charAt(0).toLowerCase()+e.slice(1)}static matchStringWithRegex(e,t){return null!=t&&null!=e&&new RegExp(e,"i").test(t)}static isValidIPv4Address(e){return null!=e&&M.matchStringWithRegex(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,e)}static convertObjectsToString(e){if(!e)return e;if(!Array.isArray(e))return e;for(let t=0;t<e.length;t++){let i=e[t];try{"object"==typeof i&&(i=JSON.stringify(i))}catch(e){}e[t]=i}return e}static getUpdatedStringWithReplacedValues(e,t){return P.isString(e)?!t||Array.isArray(t)||"object"!=typeof t?(VizbeeUtils.logger.d("Util","getUpdatedStringWithReplacedValues","INVALID input json, NOT updating input string"),e):(Object.keys(t).forEach(i=>{e=e.replace(new RegExp(i,"gi"),t[i])}),e):(VizbeeUtils.logger.warn("Util::getUpdatedStringWithReplacedValues - INVALID inputString, NOT updating input string"),e)}static uuidv4(){return crypto&&crypto.getRandomValues?([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)):Math.floor(1e10*Math.random()).toString()}static checkIfImageExists(e){var t=t||void 0;return t||(t=T()),new t(function(t,i){const r=new Image;r.src=e,r.complete?t(!0):(r.onload=()=>{t(!0)},r.onerror=()=>{t(!1)})})}static getFormEncodedUriFormat(e){if(P.isObject(e)){var t=[];for(var i in e){var r=encodeURIComponent(i),n=encodeURIComponent(e[i]);t.push(r+"="+n)}return t.join("&")}}}let w=!1;class N extends v{constructor(e){if(super(),VizbeeTV.logger.debug("constructing BaseTVRemote"),this.eventType=g,!(e&&e instanceof u))throw new Error("BaseTVRemote::constructor() -- platform cannot be empty or invalid.");this.platform=e}static get keys(){return{up:1,down:2,left:3,right:4,select:5,play:6,pause:7,stop:8,ffw:9,rw:10,back:11,exit:12,play_pause:13,alt_up:14,alt_down:15,alt_left:16,alt_right:17,skip_next:18,skip_prev:19}}get keyNameMap(){return{1:"up",2:"down",3:"left",4:"right",5:"select",6:"play",7:"pause",8:"stop",9:"fast-forward",10:"rewind",11:"back",12:"exit",13:"play-pause",14:"alt_up",15:"alt_down",16:"alt_left",17:"alt_right",18:"skip_next",19:"skip_prev"}}get keyCodeMap(){throw new TypeError("Abstract method - BaseTVRemote::keyMap getter.")}registerListener(){try{w=!0;let e="keydown";document.addEventListener(e,e=>{this.dispatchEvent(new g(e,this))})}catch(e){VizbeeTV.logger.error("registerListener error - ",e.message,e)}}sendKeyEvent(e){try{var t=M.invert(this.keyCodeMap)[e],i=new Event("keydown");i.keyCode=t,i.charCode=t,document.dispatchEvent(i)}catch(e){VizbeeTV.logger.error("sendKeyEvent error ",e.message,e)}}sendPlay(){this.sendKeyEvent(N.keys.play)}sendPause(){this.sendKeyEvent(N.keys.pause)}sendStop(){this.sendKeyEvent(N.keys.stop)}}class O extends N{get keyCodeMap(){return{80:N.keys.play,85:N.keys.pause,83:N.keys.stop}}sendPlay(){this.isStandalone()?this.platform.player.play():super.sendPlay()}sendPause(){this.isStandalone()?this.platform.player.pause():super.sendPause()}sendStop(e){this.isStandalone()?this.platform.player.stop(e):super.sendStop(e)}isStandalone(){return this.platform.config.standalone}}class x{init(){this.player=void 0}setPlayer(e){this.player=e}getPlayer(){return this.player}getTracks(e){return[]}getEnabledTracks(e){return[]}enableTracks(e=[]){}disableTracks(e){}}let z=class{constructor(){this._type="",this._id=-1}toJSON(){return{type:this._type,id:this._id}}fromJSON(e){e&&e.type&&!isNaN(e.id)?(this._type=e.type,this._id=e.id):VizbeeTV.logger.verbose("Track::fromJSON - invalid trackInfo")}set type(e){this._type=e}get type(){return this._type}set id(e){this._id=e}get id(){return this._id}},L=class extends z{constructor(){super(),this.type=i,this.subtype="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.subtype=this._subtype,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._subtype=e.subtype):VizbeeTV.logger.verbose("SubtitleTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set subtype(e){this._subtype=e}get subtype(){return this._subtype}};class R extends x{constructor(){super()}init(){this._playerManager=cast.framework.CastReceiverContext.getInstance().getPlayerManager()}getTracks(e){if(!e)return[];let t=[];try{if(this._isTextTracksManagerAvailable()){let r=this._playerManager.getTextTracksManager();if(r){let n=r.getTracks();if(n&&n.length>0&&e==i){let e=n.filter(e=>cast.framework.messages.TrackType.TEXT==e.type);e&&e.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:this._isValidTrackLanguage(e.language)?e.language:"en"}),t.push(i)})}}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getTracks - error",e&e.message),t=[]}return t}getEnabledTracks(e){if(!e)return[];let t=[];try{if(this._isTextTracksManagerAvailable()&&e==i){let e=this._playerManager.getTextTracksManager();if(e){let i=e.getActiveTracks(),r=i.length>0?i[0]:void 0,n=new L;n.fromJSON({id:r.trackId,lang:this._isValidTrackLanguage(r.language)?r.language:"en"}),t.push(n)}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getEnabledTracks - error",e),t=[]}return t}enableTracks(e=[]){!e||!Array.isArray(e)||e.length<=0?VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - enable subtitles command ignored due to invalid input"):this._isTextTracksManagerAvailable()?(VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - sending setActiveByIds to CAFPlayer"),this._playerManager.getTextTracksManager().setActiveByIds(e)):VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - ignoring command as textTracksManager is not available")}disableTracks(e){this._isTextTracksManagerAvailable()?(VizbeeTV.logger.debug("ChromecastCAFSubtitle::disableTracks - sending setActiveByIds[] to CAFPlayer"),this._playerManager.getTextTracksManager().setActiveByIds([])):VizbeeTV.logger.debug("ChromecastCAFSubtitle::disableTracks - ignoring command as textTracksManager is not available")}_isTextTracksManagerAvailable(){let e=this.getPlayer();return!(!e||!e.playerState)&&[e.playerState.STARTED,e.playerState.BUFFERING,e.playerState.PLAYING,e.playerState.PAUSED].indexOf(e.getCurrentState())>=0}_isValidTrackLanguage(e){return!(!e||e.indexOf("null")>=0)}}class K extends x{constructor(){super()}getTracks(e){if(!e||i!=e)return[];let t=this.getPlayer();if(!t)return[];let r=this._getTracksFromVideoInfo(t);return r&&r.length>0||(r=[],r=this._getTracksFromMediaManager(t)),r}_getTracksFromVideoInfo(e){if(!e)return[];let t=[];if(e.videoInfo&&e.videoInfo.tracks&&e.videoInfo.tracks.length>0){let i=e.videoInfo.tracks.filter(e=>"text"==e.type.toLowerCase());i.length>0&&i.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:e.language,subtype:e.trackContentType}),t.push(i)})}return t}_getTracksFromMediaManager(e){let t=[];try{let i=e.mediaManager&&e.mediaManager.getMediaInformation();if(i&&i.tracks&&i.tracks.length){let e=i.tracks.filter(e=>"text"==e.type.toLowerCase());e.length>0&&e.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:e.language,subtype:e.trackContentType}),t.push(i)})}}catch(e){t=[]}return t}getEnabledTracks(e){if(!e||i!=e)return[];let t=this.getPlayer();if(!t)return[];let r=[];return r=this._getEnabledTracksFromVideoInfo(t),r&&r.length>0||(r=[],r=this._getEnabledTracksFromMediaManager(t)),r}_getEnabledTracksFromVideoInfo(e){if(!e||!e.videoInfo)return[];let t=[];if(e.videoInfo.tracks&&e.videoInfo.tracks.length>0&&isFinite(e.videoInfo.activeTrackId)){let i=e.videoInfo.tracks.find(t=>e.videoInfo.activeTrackId==t.trackId);if(i){let e=new L;e.fromJSON({id:i.trackId,lang:i.language,subtype:i.trackContentType}),t.push(e)}}return t}_getEnabledTracksFromMediaManager(e){let t=[];try{let i=e.mediaManager&&e.mediaManager.getMediaInformation();if(i&&i.tracks&&i.tracks.length){let r,n=i.tracks.filter(e=>"text"==e.type.toLowerCase()),s=e.playerElement&&e.playerElement.textTracks.length||0;for(let t=0;t<s;t++){let i=e.playerElement.textTracks[t];if("showing"==i.mode){""==i.id?e.platformConfig.captionsType&&"cea608"==e.platformConfig.captionsType.toLowerCase()?(i.trackId=99,r=i):r=n&&n[0]:r=n.find(e=>e.trackId==i.id);break}}if(r){let e=new L;e.fromJSON({id:r.trackId,lang:r.language,subtype:r.trackContentType}),t.push(e)}}}catch(e){t=[]}return t}enableTracks(e=[]){let t=this.getPlayer();this._areInbandCaptionAvailable(t)?this._enableInbandTracks(e,t):this._enableExternalTracks(e,t)}_enableInbandTracks(e=[],t){VizbeeTV.logger.debug("ChromecastV2InbandSubtitle::enableTracks - ",e);for(var i=t.castPlayer.getStreamingProtocol(),r=i.getStreamCount(),n=0;n<r;n++){for(var s=n+1,a=!1,o=0;o<e.length;o++)if(e[o]==s){a=!0;break}var l=i.isStreamEnabled(n);a&&!l&&i.enableStream(n,!0)}t.castPlayer.enableCaptions(!0)}_enableExternalTracks(e=[],t){if(0==e.length)return;var r=this.getTracks(i,t);if(0==r.length)return;let n=e[0];var s=r.find(e=>n==e.id);if(s){var a,o="ttml";s.subtype.indexOf("vtt")>=0&&(a="webvtt"),s.subtype.indexOf(o)>=0&&(a=o),a&&(t.videoInfo.activeTrackId=n,t.castPlayer.enableCaptions(!0,a,n))}}disableTracks(e=[]){let t=this.getPlayer();this._areInbandCaptionAvailable(t)?this._disableInbandTracks(e,t):this._disableExternalTracks(e,t)}_disableInbandTracks(e=[],t){VizbeeTV.logger.debug("ChromecastV2InbandSubtitle::disableTracks - ",e);for(var i=t.castPlayer.getStreamingProtocol(),r=i.getStreamCount(),n=0;n<r;n++){for(var s=n+1,a=!1,o=0;o<e.length;o++)if(e[o]==s){a=!0;break}var l=i.isStreamEnabled(n);!a&&l&&i.enableStream(n,!1)}t.castPlayer.enableCaptions(!0)}_disableExternalTracks(e=[],t){if(0!=e.length){var r=this.getEnabledTracks(i,t);if(r&&r.length>0){let i=r.find(t=>t.id==e[0]);if(i){var n,s="ttml";i.subtype.indexOf("vtt")>=0&&(n="webvtt"),i.subtype.indexOf(s)>=0&&(n=s),n&&(t.videoInfo.activeTrackId=void 0,t.castPlayer.enableCaptions(!1,n))}}}}_areInbandCaptionAvailable(e){VizbeeTV.logger.verbose("ChromecastV2InbandSubtitle::_areInbandCaptionAvailable");let t=e.mediaManager.getMediaInformation();return 0!=(t&&t.tracks).length||(VizbeeTV.logger.verbose("ChromecastV2InbandSubtitle::_areInbandCaptionAvailable - No in_band captions"),!1)}}class U{static getInstance(e,t){if(VizbeeTV.logger.debug("SubtitleFactory::getInstance - playerType = "+e+", subtitleType = "+t),e)return n==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Chromecast CAFSubtitle"),new R):s==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Chromecast V2Subtitle"),new K):a==e?"in_band"==t||"in_manifest"==t?new null:void 0:o==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Bitmovin Subtitle"),new null):l==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating VideoJS Subtitle"),new null):d==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating THEO Subtitle"),new null):c==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Shaka Subtitle"),new null):void 0}}class B extends x{constructor(){super(),this.init()}init(){this.subtitleInstance=void 0,this.playerType=void 0,this.subtitleType=void 0,this.videoPlayer=void 0}setPlayerWithType(e,t){e?t?(this.playerType=e,this.playerType==o?this.videoPlayer=t.bitmovinPlayer:this.playerType==l?this.videoPlayer=t.playerElement:this.playerType==d?this.videoPlayer=t.playerInstance:this.playerType==c?this.videoPlayer=t.shakaPlayer:this.videoPlayer=t,this._setSubtitleInstance()):VizbeeTV.logger.warn("VirtualSubtitle::setPlayer - invalid parameter 'videoPlayer'"):VizbeeTV.logger.warn("VirtualSubtitle::setPlayer - invalid parameter 'playerType'")}getPlayer(){return this.videoPlayer}setSubtitleType(e){this.subtitleType=e,this._setSubtitleInstance()}_setSubtitleInstance(){this.playerType&&this.videoPlayer&&this.subtitleType&&(this.subtitleInstance=U.getInstance(this.playerType,this.subtitleType),this.subtitleInstance&&(this.subtitleInstance.init(),this.subtitleInstance.setPlayer(this.videoPlayer)))}isReady(){return!!this.subtitleInstance}getTracks(e){return VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - trackType = ",e),this.subtitleInstance?this.subtitleInstance.getTracks(e):(VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - sending empty data as there is no valid subtitle instance"),[])}getEnabledTracks(e){return VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - trackType = ",e),this.subtitleInstance?this.subtitleInstance.getEnabledTracks(e):(VizbeeTV.logger.verbose("VirtualSubtitle::getEnabledTracks - sending empty data as there is no valid subtitle instance"),[])}enableTracks(e=[]){this.subtitleInstance&&this.subtitleInstance.enableTracks(e)}disableTracks(e){this.subtitleInstance&&this.subtitleInstance.disableTracks(e)}}const F={en:"English","en-US":"English (United States)","en-GB":"English (United Kingdom)","en-CA":"English (Canada)","en-AU":"English (Australia)",es:"Spanish","es-ES":"Spanish (Spain)","es-MX":"Spanish (Mexico)",fr:"French","fr-FR":"French (France)","fr-CA":"French (Canada)","fr-BE":"French (Belgium)",de:"German","de-DE":"German (Germany)","de-AT":"German (Austria)","de-CH":"German (Switzerland)",it:"Italian","it-IT":"Italian (Italy)",pt:"Portuguese","pt-PT":"Portuguese (Portugal)","pt-BR":"Portuguese (Brazil)",ru:"Russian","ru-RU":"Russian (Russia)",zh:"Chinese","zh-CN":"Chinese (Simplified)","zh-TW":"Chinese (Traditional)",ja:"Japanese",ko:"Korean",ar:"Arabic","ar-SA":"Arabic (Saudi Arabia)","ar-EG":"Arabic (Egypt)",hi:"Hindi",bn:"Bengali",pa:"Punjabi",mr:"Marathi",te:"Telugu",tr:"Turkish",vi:"Vietnamese",th:"Thai",id:"Indonesian",ms:"Malay",tl:"Tagalog",sw:"Swahili",fi:"Finnish",sv:"Swedish",no:"Norwegian",da:"Danish",pl:"Polish",hu:"Hungarian",cs:"Czech",sk:"Slovak",el:"Greek",ro:"Romanian",bg:"Bulgarian",sr:"Serbian",hr:"Croatian",uk:"Ukrainian",he:"Hebrew",ur:"Urdu",fa:"Persian",gu:"Gujarati",kn:"Kannada",ml:"Malayalam",ta:"Tamil",si:"Sinhalese",cy:"Welsh",sq:"Albanian",mk:"Macedonian",bs:"Bosnian",et:"Estonian",lv:"Latvian",lt:"Lithuanian",ka:"Georgian",am:"Amharic",yo:"Yoruba",ig:"Igbo",zu:"Zulu",xh:"Xhosa",ne:"Nepali",ms:"Malay","hi-IN":"Hindi (India)","bn-IN":"Bengali (India)","pa-IN":"Punjabi (India)"};class H{init(){this.player=void 0,this._reset()}setPlayer(e){this.player=e}getPlayer(){return this.player}getTracks(e){return[]}getEnabledTracks(e){return[]}setActiveTrack(e){}_setTrackIdStringToNumberMap(e){if(!this.trackIdStringToNumberMap[e]){let t=parseInt(e);P.isNaN(t)&&(t=Object.keys(this.trackIdStringToNumberMap).length+1),this.trackIdStringToNumberMap[e]=t,VizbeeTV.logger.verbose("BaseAudio::_setTrackIdStringToNumberMap - updated trackIdStringToNumberMap = ",this.trackIdStringToNumberMap)}}_setTrackLanguageCodeToNameMap(e){!e&&this.trackLanguageCodeToNameMap[e]||(this.trackLanguageCodeToNameMap[e]=F[e]||e,VizbeeTV.logger.verbose("BaseAudio::_setTrackLanguageCodeToNameMap - updated _setTrackLanguageCodeToNameMap = ",this.trackLanguageCodeToNameMap))}_reset(){this.trackIdStringToNumberMap={},this.trackLanguageCodeToNameMap={}}}class G extends z{constructor(){super(),this.type=r,this._label="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.label=this._label,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._label=e.label):VizbeeTV.logger.verbose("AudioTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set label(e){this._label=e}get label(){return this._label}}class W extends H{constructor(){super()}init(){super.init(),this._playerManager=cast.framework.CastReceiverContext.getInstance().getPlayerManager()}getTracks(e){if(!e||r!=e)return VizbeeTV.logger.verbose("ChromecastCAFAudio::getTracks - INVALID trackType"),[];let t=[],i=[];try{if(this._isAudioTracksManagerAvailable()){let e=this._playerManager.getAudioTracksManager();if(e){let r=e.getTracks();r&&r.length>0&&r.forEach(e=>{if(this._isDuplicateTrack(i,e))return;let r=e.name;r&&r!==e.language||(this._setTrackLanguageCodeToNameMap(e.language),r=this.trackLanguageCodeToNameMap[e.language]);let n=new G;n.fromJSON({id:e.trackId,lang:e.language,label:r||e.language}),t.push(n),i.push({language:e.language,name:e.name})})}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getTracks - error",e)}return t}getEnabledTracks(e){if(!e||r!=e)return VizbeeTV.logger.verbose("ChromecastCAFAudio::getEnabledTracks - INVALID trackType"),[];let t;try{if(this._isAudioTracksManagerAvailable()){let e=this._playerManager.getAudioTracksManager();if(e){let i=e.getActiveTrack();if(!i){let t=e.getTracks();t&&t.length>0&&(i=t[0])}if(i){let e=i.name;e&&e!==i.language||(this._setTrackLanguageCodeToNameMap(i.language),e=this.trackLanguageCodeToNameMap[i.language]),t=new G,t.fromJSON({id:i.trackId,lang:i.language,label:e||i.language})}}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getEnabledTracks - error",e)}return[t]}setActiveTrack(e){if(isNaN(e))VizbeeTV.logger.debug("ChromecastCAFAudio::setActiveTrack - enable audio command ignored due to invalid input");else try{if(this._isAudioTracksManagerAvailable()){let t=this._playerManager.getAudioTracksManager();t&&t.setActiveById(e)}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::setActiveTrack - error",e)}}_isAudioTracksManagerAvailable(){let e=this.getPlayer();return!(!e||!e.playerState)&&[e.playerState.STARTED,e.playerState.BUFFERING,e.playerState.PLAYING,e.playerState.PAUSED].indexOf(e.getCurrentState())>=0}_isDuplicateTrack(e,t){const{language:i,name:r}=t;return!!P.find(e,function(e){return e.name==r&&e.language==i})}}class j{static getInstance(e){return o==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating Bitmovin Audio"),new null):d==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating THEO Audio"),new W):n==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating Chromecast CAF Audio"),new W):void 0}}class q extends H{constructor(){super(),this.init()}init(){this.audioInstance=void 0,this.playerType=void 0,this.videoPlayer=void 0}setPlayerWithType(e,t){VizbeeTV.logger.debug("VirtualAudio::setPlayerWithType - playerType = ",e,", playerInstance = ",t),e?t?(this.playerType=e,this.playerType==o?this.videoPlayer=t.bitmovinPlayer:this.playerType==l?this.videoPlayer=t.playerElement:this.playerType==c?this.videoPlayer=t.shakaPlayer:this.videoPlayer=t,this._setAudioInstance()):VizbeeTV.logger.warn("VirtualAudio::setPlayerWithType - invalid parameter 'videoPlayer'"):VizbeeTV.logger.warn("VirtualAudio::setPlayerWithType - invalid parameter 'playerType'")}getPlayer(){return this.videoPlayer}_setAudioInstance(){this.playerType&&this.videoPlayer&&(VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - playerType = ",this.playerType),VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - videoPlayer = ",this.videoPlayer),this.audioInstance=j.getInstance(this.playerType),this.audioInstance&&(VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - setting audio instance"),this.audioInstance.init(),this.audioInstance.setPlayer(this.videoPlayer)))}isReady(){return!!this.audioInstance}getTracks(e){return VizbeeTV.logger.verbose("VirtualAudio::getTracks - trackType = ",e),this.audioInstance?this.audioInstance.getTracks(e):(VizbeeTV.logger.verbose("VirtualAudio::getTracks - sending empty data as there is no valid audio instance"),[])}getEnabledTracks(e){return VizbeeTV.logger.verbose("VirtualAudio::getEnabledTracks - trackType = ",e),this.audioInstance?this.audioInstance.getEnabledTracks(e):(VizbeeTV.logger.verbose("VirtualAudio::getEnabledTracks - sending empty data as there is no valid audio instance"),[])}setActiveTrack(e){this.audioInstance&&this.audioInstance.setActiveTrack(e)}}class J{constructor(){this.adPodStartedTimeInMs=0,this.adPodEndedTimeInMs=0,this.loadReceivedByAppTimeInMs=0,this.loadReceivedByPlayerTimeInMs=0,this.metadataLoadedTimeInMs=0,this.playerReadyToPlayTimeInMs=0,this.playbackStartedTimeInMs=0}toJSON(){return{adPodStartedTimeInMs:this._adPodStartedTimeInMs,adPodEndedTimeInMs:this._adPodEndedTimeInMs,loadReceivedByAppTimeInMs:this._loadReceivedByAppTimeInMs,loadReceivedByPlayerTimeInMs:this._loadReceivedByPlayerTimeInMs,metadataLoadedTimeInMs:this._metadataLoadedTimeInMs,playerReadyToPlayTimeInMs:this._playerReadyToPlayTimeInMs,playbackStartedTimeInMs:this._playbackStartedTimeInMs}}fromJSON(e){e&&(e.adPodStartedTimeInMs&&(this.adPodStartedTimeInMs=e.adPodStartedTimeInMs),e.adPodEndedTimeInMs&&(this.adPodEndedTimeInMs=e.adPodEndedTimeInMs),e.loadReceivedByAppTimeInMs&&(this.loadReceivedByAppTimeInMs=e.loadReceivedByAppTimeInMs),e.loadReceivedByPlayerTimeInMs&&(this.loadReceivedByPlayerTimeInMs=e.loadReceivedByPlayerTimeInMs),e.metadataLoadedTimeInMs&&(this.metadataLoadedTimeInMs=e.metadataLoadedTimeInMs),e.playerReadyToPlayTimeInMs&&(this.playerReadyToPlayTimeInMs=e.playerReadyToPlayTimeInMs),e.playbackStartedTimeInMs&&(this.playbackStartedTimeInMs=e.playbackStartedTimeInMs))}reset(){this.adPodStartedTimeInMs=0,this.adPodEndedTimeInMs=0,this.loadReceivedByAppTimeInMs=0,this.loadReceivedByPlayerTimeInMs=0,this.metadataLoadedTimeInMs=0,this.playerReadyToPlayTimeInMs=0,this.playbackStartedTimeInMs=0}set adPodStartedTimeInMs(e){this._adPodStartedTimeInMs=e}get adPodStartedTimeInMs(){return this._adPodStartedTimeInMs}set adPodEndedTimeInMs(e){this._adPodEndedTimeInMs=e}get adPodEndedTimeInMs(){return this._adPodEndedTimeInMs}set loadReceivedByAppTimeInMs(e){this._loadReceivedByAppTimeInMs=e}get loadReceivedByAppTimeInMs(){return this._loadReceivedByAppTimeInMs}set loadReceivedByPlayerTimeInMs(e){this._loadReceivedByPlayerTimeInMs=e}get loadReceivedByPlayerTimeInMs(){return this._loadReceivedByPlayerTimeInMs}set metadataLoadedTimeInMs(e){this._metadataLoadedTimeInMs=e}get metadataLoadedTimeInMs(){return this._metadataLoadedTimeInMs}set playerReadyToPlayTimeInMs(e){this._playerReadyToPlayTimeInMs=e}get playerReadyToPlayTimeInMs(){return this._playerReadyToPlayTimeInMs}set playbackStartedTimeInMs(e){this._playbackStartedTimeInMs=e}get playbackStartedTimeInMs(){return this._playbackStartedTimeInMs}}class Y{constructor(e){if(VizbeeTV.logger.debug("BasePlayer::constructor() platform =",e),"BasePlayer"===this.constructor.name)throw new TypeError("BasePlayer::constructor() -- Abstract class.");if(!(e&&e instanceof u))throw new Error("BasePlayer::constructor() -- platform cannot be empty or invalid.");this.playerState={IDLE:"idle",PREPARING:"preparing",LOADING:"loading",STARTED:"started",PLAYING:"playing",PAUSED:"paused",BUFFERING:"buffering",INTERRUPTED:"interrupted",ENDED:"ended",ERROR:"error"},this.currentState=this.playerState.IDLE,this.platform=e,this.platformConfig=e.config,this.videoInfo={},this.hlsxchange=!0,this.currentSrc="",this.startVideoTimestampInMS=0,this.onStartedTimestampInMS=0,this.resetListeners(),this.subtitlesDelegate=new B,this.audioDelegate=new q,this.streamQualityInfo=new J}reconstruct(e){}set enableHLSExchange(e){this.hlsxchange=e}set onLoading(e){"function"==typeof e&&this._loadingListeners.push(e)}dispatchOnLoading(){this.currentState=this.playerState.LOADING;for(var e=this._loadingListeners.length-1;e>-1;e--)if(this._loadingListeners[e]())return}set onStarted(e){"function"==typeof e&&this._startedListeners.push(e)}dispatchOnStarted(){this.onStartedTimestampInMS=(new Date).getTime(),this.currentState=this.playerState.STARTED;for(var e=this._startedListeners.length-1;e>-1;e--)if(this._startedListeners[e]())return}set onPlaying(e){"function"==typeof e&&this._playingListeners.push(e)}dispatchOnPlaying(){this.currentState=this.playerState.PLAYING;for(var e=this._playingListeners.length-1;e>-1;e--)if(this._playingListeners[e]())return}set onPaused(e){"function"==typeof e&&this._pausedListeners.push(e)}dispatchOnPaused(){this.currentState=this.playerState.PAUSED;for(var e=this._pausedListeners.length-1;e>-1;e--)if(this._pausedListeners[e]())return}set onTimeUpdate(e){"function"==typeof e&&this._timeupdateListeners.push(e)}dispatchOnTimeUpdate(e){this.currentState=this.playerState.PLAYING;for(var t=this._timeupdateListeners.length-1;t>-1;t--)if(this._timeupdateListeners[t](e))return}set onBuffering(e){"function"==typeof e&&this._bufferingListeners.push(e)}dispatchOnBuffering(e){this.currentState=this.playerState.BUFFERING;for(var t=this._bufferingListeners.length-1;t>-1;t--)if(this._bufferingListeners[t](e))return}set onBufferingComplete(e){"function"==typeof e&&this._bufferingCompleteListeners.push(e)}dispatchOnBufferingComplete(e){for(var t=this._bufferingCompleteListeners.length-1;t>-1;t--)if(this._bufferingCompleteListeners[t](e))return}set onEnded(e){"function"==typeof e&&this._endedListeners.push(e)}dispatchOnEnded(){VizbeeTV.logger.info(this.constructor.name+"::dispatchOnEnded ["+this.currentState+"] sending ended"),this.currentState=this.playerState.ENDED;for(var e=this._endedListeners.length-1;e>-1;e--)if(this._endedListeners[e]())return;this.currentState=this.playerState.IDLE}set onInterrupted(e){"function"==typeof e&&this._interruptedListeners.push(e)}dispatchOnInterrupted(e){if(!this._canBeInterrupted())return VizbeeTV.logger.warn(this.constructor.name+"::dispatchOnInterrupted ["+this.currentState+"] tried to send interrupted in wrong state ",e),!1;VizbeeTV.logger.info(this.constructor.name+"::dispatchOnInterrupted ["+this.currentState+"] sending interrupted ",e),this.currentState=this.playerState.INTERRUPTED;for(var t=this._interruptedListeners.length-1;t>-1;t--)if(this._interruptedListeners[t](e))return;return this.currentState=this.playerState.IDLE,!0}_canBeInterrupted(){return this.currentState==this.playerState.STARTED||this.currentState==this.playerState.PLAYING||this.currentState==this.playerState.PAUSED||this.currentState==this.playerState.BUFFERING}set onError(e){"function"==typeof e&&this._errorListeners.push(e)}dispatchOnError(e){if(!this._canBeErrored())return VizbeeTV.logger.warn(this.constructor.name+"::dispatchOnError ["+this.currentState+"] tried to send error in wrong state ",e),!1;VizbeeTV.logger.info(this.constructor.name+"::dispatchOnError ["+this.currentState+"] sending error ",e),this.currentState=this.playerState.ERROR;for(var t=this._errorListeners.length-1;t>-1;t--)if(this._errorListeners[t](e))return;return this.currentState=this.playerState.IDLE,!0}_canBeErrored(){return this.currentState!=this.playerState.IDLE}set onEvent(e){"function"==typeof e&&this._eventListeners.push(e)}dispatchOnEvent(e){for(var t=this._eventListeners.length-1;t>-1;t--)if(this._eventListeners[t](e))return}resetListeners(){this._startedListeners=[],this._loadingListeners=[],this._playingListeners=[],this._pausedListeners=[],this._timeupdateListeners=[],this._bufferingListeners=[],this._bufferingCompleteListeners=[],this._endedListeners=[],this._interruptedListeners=[],this._errorListeners=[],this._eventListeners=[]}start(e){VizbeeTV.logger.debug(this.constructor.name+"::Start() BEGINNING - CURRENT_PLAYER_STATE -- ",this.currentState),this.videoInfo=e,this.currentState=this.playerState.PREPARING,this.startVideoTimestampInMS=(new Date).getTime(),this.subtitlesDelegate.init();let t=this.getPlayerType();this.subtitlesDelegate.setPlayerWithType(t,this);let i=this.getSubtitleTypeFromVideoInfo(e);this.subtitlesDelegate.setSubtitleType(i),this.audioDelegate.init(),this.audioDelegate.setPlayerWithType(t,this),VizbeeTV.logger.debug(this.constructor.name+"::Start() ENDING - CURRENT_PLAYER_STATE -- ",this.currentState)}play(){throw new TypeError(this.constructor.name+"::play() - Abstract method.")}pause(){throw new TypeError(this.constructor.name+"::pause() - Abstract method.")}togglePlayPause(){throw new TypeError(this.constructor.name+"::togglePlayPause() - Abstract method.")}seek(e){throw new TypeError(this.constructor.name+"::seek() - Abstract method.")}stop(e){throw new TypeError(this.constructor.name+"::stop() - Abstract method.")}currentTime(){throw new TypeError(this.constructor.name+"::currentTime() - Abstract method.")}getDuration(){throw new TypeError(this.constructor.name+"::getDuration() - Abstract method.")}getStartTime(){return this.startVideoTimestampInMS>0&&this.onStartedTimestampInMS>this.startVideoTimestampInMS?this.onStartedTimestampInMS-this.startVideoTimestampInMS:0}getBufferLevel(){return{current:0,target:0}}getAudioBufferLevel(){return{current:0,target:0,didDetectSeparateAudio:!1}}getCurrentState(){return this.currentState}getName(){return this.constructor.name}getPlayerType(){let e,t=this.getName().toLowerCase();return-1!=t.indexOf("bitmovin")?e=o:-1!=t.indexOf("videojs")?e=l:-1!=t.indexOf("theo")?e=d:-1!=t.indexOf("shaka")?e=c:-1!=t.indexOf("avplayer")?e=a:-1!=t.indexOf("caf")?e=n:-1!=t.indexOf("chromecast")&&(e=s),e}getCurrentVersion(){return""}getHlsxchangeUrl(){return this.hlsxchange&&(this.videoInfo.src.lastIndexOf(".m3u8")>=0||this.videoInfo.src.lastIndexOf("m3u")>=0)?M.xchangeHLSUrl(this.videoInfo.src,this.videoInfo.appID,this.platform.cloudPlatformName,this.videoInfo.minBitrate,this.videoInfo.maxBitrate,1):this.videoInfo.src}getAppVideoStartErrorInfo(e,t){let i,r;if(this.videoInfo&&this.videoInfo.videourl&&-1!=this.videoInfo.videourl.indexOf("start_video_failure")){let e=M.getUrlVars(this.videoInfo.videourl);i=e.errorCode,r=e.errorReason}return i&&r?{errorCode:i,errorReason:r}:{errorCode:e,errorReason:t}}buildErrorEvent(e,t,i){return{player:this.constructor.name,code:e,reason:t,data:i}}doAction(e){}reset(){this.resetListeners()}destroy(){this.resetListeners()}getTracks(e){return e==i?this.subtitlesDelegate&&this.subtitlesDelegate.isReady()?this.subtitlesDelegate.getTracks(e):[]:e==r&&this.audioDelegate&&this.audioDelegate.isReady()?this.audioDelegate.getTracks(e):[]}getEnabledTracks(e){return e==i?this.subtitlesDelegate&&this.subtitlesDelegate.isReady()?this.subtitlesDelegate.getEnabledTracks(e):[]:e==r&&this.audioDelegate&&this.audioDelegate.isReady()?this.audioDelegate.getEnabledTracks(e):[]}getSubtitleTypeFromVideoInfo(e){return"any"}enableTracks(e){this.subtitlesDelegate.isReady()&&this.subtitlesDelegate.enableTracks(e)}disableTracks(e){this.subtitlesDelegate.isReady()&&this.subtitlesDelegate.disableTracks(e)}changeAudioTrack(e){this.audioDelegate.isReady()?this.audioDelegate.setActiveTrack(e):VizbeeTV.logger.warn(this.constructor.name+"::changeAudioTrack - audio delegate is not ready")}getStreamQualityInfo(){return this.streamQualityInfo&&this.streamQualityInfo.toJSON()}setStreamQualityInfo(e){this.streamQualityInfo&&this.streamQualityInfo.fromJSON(e)}resetStreamQualityInfo(){this.streamQualityInfo&&this.streamQualityInfo.reset()}setTracks(e){}getCurrentTrack(){var e;return this.videoInfo.tracks&&this.videoInfo.tracks.length>0&&isFinite(this.videoInfo.activeTrackId)&&(e=this.videoInfo.tracks.find(e=>this.videoInfo.activeTrackId==e.trackId)),e}}class $ extends Y{extend(){throw new TypeError("BasePlayerExtensible::extend() - Abstract method.")}beforeStart(){throw new TypeError("BasePlayerExtensible::beforeStart() - Abstract method.")}}class Q extends ${constructor(e){super(e),this.playerElement=this.platformConfig.videoElement,this.currentSrc="",this.eventListenersSet=!1,this.bypassCanPlay=!1,this.hlsxchange=!1,this.invokedWithStartVideo=!1,this.startedPlaying=!1,this.finishedStartSeek=!1,this.isVideoStopped=!1,this.isVideoEnded=!1,this.logEvents=["abort","error","canplay","canplaythrough","durationchange","emptied","ended","loadeddata","loadedmetadata","loadstart","pause","play","playing","ratechange","seeked","seeking","stalled","volumechange","waiting"],this.playbackEvents=["canplay","canplaythrough","durationchange","loadeddata","loadedmetadata","pause","play","playing","seeked","seeking"],this.loadingEvents=["loadeddata","loadedmetadata"],this.startedEvents=["loadedmetadata"],this.platformConfig.standalone?this.registerEventHandlers():this.configurePlayerElement()}configurePlayerElement(){let e=this.playerElement;e.removeAttribute("style"),e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e.style.backgroundColor="black",e.style.display="block"}baseStart(e){super.start(e)}start(e){this.baseStart(e),this.platformConfig.standalone||this.configurePlayerElement(),this.invokedWithStartVideo=!0,VizbeeTV.logger.debug("HtmlPlayer::Start() -- ",this.currentSrc,this.videoInfo.src),this.startedPlaying=!1,this.finishedStartSeek=!1,VizbeeTV.logger.debug("HtmlPlayer::start() -- Playing video"),this.videoInfo.src=this.getHlsxchangeUrl(),VizbeeTV.logger.info("HtmlPlayer::start() - video url ",this.videoInfo.src),""!=this.playerElement.src&&(VizbeeTV.logger.debug("HtmlPlayer::start - setting src to empty"),this.playerElement.src=""),this.playerElement.removeAttribute("src"),this.playerElement.removeAttribute("type"),this.playerElement.setAttribute("src",this.videoInfo.src),this.videoInfo.src.lastIndexOf(".m3u8")>=0||this.videoInfo.src.lastIndexOf("m3u")>=0?this.playerElement.setAttribute("type","application/vnd.apple.mpegurl"):this.videoInfo.src.lastIndexOf(".ism")>=0?this.playerElement.setAttribute("type","application/vnd.ms-sstr+xml"):this.videoInfo.src.lastIndexOf(".mpd")>=0?this.playerElement.setAttribute("type","application/dash+xml"):this.playerElement.setAttribute("type","video/mp4"),this.registerEventHandlers(),this.bypassCanPlay=!1,this.playerElement.load(),this.currentSrc=this.videoInfo.src}play(){VizbeeTV.logger.debug("HtmlPlayer::play() called."),this.playerElement.play(),this.bypassCanPlay=!1}pause(){VizbeeTV.logger.debug("HtmlPlayer::pause() called."),this.playerElement.pause(),void 0===this.playerElement.paused&&(this.bypassCanPlay=!0)}seek(e){VizbeeTV.logger.debug("HtmlPlayer::seek() called with time ",e);var t=e/1e3;0==t&&(t=1),this.playerElement.currentTime=t}togglePlayPause(){this.playerElement.paused?this.playerElement.play():this.playerElement.pause()}stop(e){this.isVideoStopped=!0,this.playerElement.src&&this.playerElement.src!=location.origin+location.pathname&&(this.playerElement.src=""),this.videoInfo&&(this.videoInfo.src=""),this.currentSrc=""}currentTime(){return this.playerElement.currentTime}getDuration(){return this.playerElement.duration}destroy(){return new Promise((e,t)=>{this.unregisterEventHandlers(),super.destroy(),e()})}registerEventHandlers(){VizbeeTV.logger.debug("HtmlPlayer::registerEventHandlers called",this,this.playerElement),this.playerElement&&(this.eventListenersSet||(this._eventCallbackHandles={logEvent:e=>this.defaultLogHandler(e),loadingEvent:e=>this.loadingHandler(e),startedEvent:e=>this.startedEventHandler(e),canplayEvent:e=>this.videoCanPlayHandler(e),playEvent:e=>this.videoPlayHandler(e),playingEvent:e=>this.videoPlayingHandler(e),seekedEvent:e=>this.videoSeekedHandler(e),pauseEvent:e=>this.videoPausedHandler(e),bufferingEvent:e=>this.bufferingHandler(e),timeupdateEvent:e=>this.timeUpdateHandler(e),endedEvent:()=>this.endedHandler(),errorEvent:e=>this.errorHandler(e),abortEvent:e=>this.abortHandler(e)},this.logEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.logEvent,!1)}),this.playbackEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.playbackEvent,!1)}),this.loadingEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.loadingEvent,!1)}),this.startedEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.startedEvent,!1)}),this.playerElement.addEventListener("canplay",this._eventCallbackHandles.canplayEvent,!1),this.playerElement.addEventListener("play",this._eventCallbackHandles.playEvent,!1),this.playerElement.addEventListener("playing",this._eventCallbackHandles.playingEvent,!1),this.playerElement.addEventListener("seeked",this._eventCallbackHandles.seekedEvent,!1),this.playerElement.addEventListener("pause",this._eventCallbackHandles.pauseEvent,!1),this.playerElement.addEventListener("seeking",this._eventCallbackHandles.bufferingEvent,!1),this.playerElement.addEventListener("timeupdate",this._eventCallbackHandles.timeupdateEvent,!1),this.playerElement.addEventListener("ended",this._eventCallbackHandles.endedEvent,!1),this.playerElement.addEventListener("error",this._eventCallbackHandles.errorEvent,!1),this.playerElement.addEventListener("abort",this._eventCallbackHandles.abortEvent,!1),this.eventListenersSet=!0))}unregisterEventHandlers(){VizbeeTV.logger.debug("HtmlPlayer::unregisterEventHandlers called"),this.playerElement&&this.eventListenersSet&&this._eventCallbackHandles&&(this.logEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.logEvent)}),this.playbackEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.playbackEvent)}),this.loadingEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.loadingEvent)}),this.startedEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.startedEvent)}),this.playerElement.removeEventListener("canplay",this._eventCallbackHandles.canplayEvent),this.playerElement.removeEventListener("play",this._eventCallbackHandles.playEvent),this.playerElement.removeEventListener("playing",this._eventCallbackHandles.playingEvent),this.playerElement.removeEventListener("seeked",this._eventCallbackHandles.seekedEvent),this.playerElement.removeEventListener("pause",this._eventCallbackHandles.pauseEvent),this.playerElement.removeEventListener("seeking",this._eventCallbackHandles.bufferingEvent),this.playerElement.removeEventListener("timeupdate",this._eventCallbackHandles.timeupdateEvent),this.playerElement.removeEventListener("ended",this._eventCallbackHandles.endedEvent),this.playerElement.removeEventListener("error",this._eventCallbackHandles.errorEvent),this.playerElement.removeEventListener("abort",this._eventCallbackHandles.abortEvent),this.eventListenersSet=!1)}defaultLogHandler(e){VizbeeTV.logger.debug("HtmlPlayer::defaultLogHandler ["+this.getCurrentState()+"] "+e.type+" -- ",e,this.currentSrc,this.getDuration(),this.currentTime(),this),VizbeeTV.logger.debug("---------------------"),VizbeeTV.logger.debug("readyState",this.playerElement.readyState),VizbeeTV.logger.debug("---------------------")}loadingHandler(e){this.isVideoEnded=!1,this.dispatchOnLoading()}startedEventHandler(e){this.dispatchOnStarted()}videoCanPlayHandler(e){if(this.invokedWithStartVideo&&(VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - checking and playing video",this,this.playerElement.duration,this.startedPlaying),this.isVideoEnded=!1,!this.startedPlaying)){this.videoInfo&&this.videoInfo.startTime||(this.videoInfo=this.videoInfo||{},this.videoInfo.startTime=0);var t=this.videoInfo.startTime/1e3;if(VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - starttime = "+t),!this.finishedStartSeek&&0!=t)try{VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - seeking to start time = ",t),this.finishedStartSeek=!0,this.playerElement.currentTime=t||0}catch(e){VizbeeTV.logger.error("HtmlPlayer::videoCanPlayHandler::canplay - Error setting start time for video",e)}this.bypassCanPlay||(VizbeeTV.tv.player.play(!0),this.startedPlaying=!0)}}videoPlayHandler(e){this.isVideoEnded=!1,this.dispatchOnPlaying()}videoPlayingHandler(e){this.isVideoEnded=!1,this.dispatchOnPlaying()}videoPausedHandler(e){this.dispatchOnPaused()}videoSeekedHandler(e){this.dispatchOnBufferingComplete(),this.playerElement.paused?this.dispatchOnPaused():this.dispatchOnPlaying()}bufferingHandler(e){this.isVideoEnded=!1,this.dispatchOnBuffering()}timeUpdateHandler(e){this.playerElement.paused||this.dispatchOnTimeUpdate(e)}endedHandler(){this.isVideoEnded=!0,this.dispatchOnEnded()}abortHandler(e){let t,i=this.buildErrorEvent(0,"UNKNOWN",{});i.data=e,e&&e.currentTarget&&e.currentTarget.error?t=e.currentTarget.error:e&&e.target&&e.target.error&&(t=e.target.error),t&&void 0!==t.code&&null!=t.code&&(i.code=t.code),i.reason="STOP_BY_USER",this.dispatchOnInterrupted(i)||this.errorHandler(e),this.isVideoStopped=!1}errorHandler(e){let t,i=this.buildErrorEvent(0,"UNKNOWN",{});if(i.data=e,e&&e.currentTarget&&e.currentTarget.error?t=e.currentTarget.error:e&&e.target&&e.target.error&&(t=e.target.error),this.isVideoStopped)return this.isVideoStopped=!1,i.reason="STOP_BY_USER",void this.dispatchOnError(i);if(t&&void 0!==t.code&&null!=t.code)switch(i.code=t.code,t.code){case t.MEDIA_ERR_ABORTED:i.reason="MEDIA_ERR_ABORTED",VizbeeTV.logger.error("HtmlPlayer::ERROR ** You aborted the video playback.");break;case t.MEDIA_ERR_NETWORK:i.reason="MEDIA_ERR_NETWORK",VizbeeTV.logger.error("HtmlPlayer::ERROR ** A network error caused the video download to fail part-way.");break;case t.MEDIA_ERR_DECODE:i.reason="MEDIA_ERR_DECODE",VizbeeTV.logger.error("HtmlPlayer::ERROR ** The video playback was aborted due to a corruption problem or because the video used features your browser did not support.");break;case t.MEDIA_ERR_SRC_NOT_SUPPORTED:i.reason="MEDIA_ERR_SRC_NOT_SUPPORTED",VizbeeTV.logger.error("HtmlPlayer::ERROR ** The video could not be loaded, either because the server or network failed or because the format is not supported.");break;default:VizbeeTV.logger.error("HtmlPlayer::ERROR ** An unknown error occurred.",t)}let r=this.getAppVideoStartErrorInfo(i.code,i.reason);i.code=r.errorCode,i.reason=r.errorReason,VizbeeTV.logger.error("HtmlPlayer::ErrorHandler ["+this.currentState+"]",i.reason,i.code),this.dispatchOnError(i)}}let Z=Math.pow(10,1e3);class X extends Q{constructor(e){VizbeeTV.logger.debug("ChromecastPlayer::constructor()"),super(e),this.mediaManager=this.platformConfig.mediaManager,this.registerMediaManagerEvents(),this.subtitlesDelegate.init(),this.subtitlesDelegate.setPlayerWithType(s,this),this.subtitlesDelegate.setSubtitleType("any"),this.needRequestWithCredentials=["chivasott1-i.akamaihd.net","chivasott2-i.akamaihd.net","chivasott3-i.akamaihd.net","chivasott4-i.akamaihd.net","chivasott5-i.akamaihd.net","chivasott6-i.akamaihd.net"]}start(e){if(super.baseStart(e),VizbeeTV.logger.debug("ChromeCastPlayer::Start() -- ",this.currentSrc,this.videoInfo.src),this.invokedWithStartVideo=!0,this.startedPlaying=!1,this.finishedStartSeek=!1,this.screenSaverEnabled=!1,this.resetPlayer(),VizbeeTV.logger.debug("ChromecastPlayer::start() with source ",this.videoInfo.src),this.videoInfo.src.indexOf(".m3u8")>0||this.videoInfo.src.lastIndexOf("m3u")>=0||this.videoInfo.src.indexOf(".ism")>0){var t=new cast.player.api.Host({mediaElement:this.playerElement,url:this.videoInfo.src});new RegExp(this.needRequestWithCredentials.join("|")).test(this.videoInfo.src)&&(t.updateManifestRequestInfo=e=>{e.withCredentials=!0},t.updateSegmentRequestInfo=e=>{e.withCredentials=!0}),t.onError=e=>{this.resetPlayer(),this.onCastPlayerError(e)},this.castPlayer=new cast.player.api.Player(t)}else this.playerElement.setAttribute("src",this.videoInfo.src);if(this.eventListenersSet||(this.registerEventHandlers(),this.eventListenersSet=!0),this.videoInfo.src.indexOf(".m3u8")>0||this.videoInfo.src.lastIndexOf("m3u")>=0){VizbeeTV.logger.debug("ChromecastPlayer::start() with streaming protocol hls - starts at current position",this.videoInfo.src);let e=this.getHlsSegmentFormat();i=null!=e?cast.player.api.CreateHlsStreamingProtocol(t,e):cast.player.api.CreateHlsStreamingProtocol(t),this.castPlayer.protocol=i,this.videoInfo.isLive?(this.videoInfo.startTime=0,this.castPlayer.load(this.castPlayer.protocol,Z)):this.castPlayer.load(this.castPlayer.protocol,this.videoInfo.startTime/1e3)}else if(this.videoInfo.src.indexOf(".ism")>0){VizbeeTV.logger.debug("ChromecastPlayer::start() with streaming protocol Smooth streaming",this.videoInfo.src);var i=cast.player.api.CreateSmoothStreamingProtocol(t);this.castPlayer.protocol=i,this.videoInfo.isLive?(this.videoInfo.startTime=0,this.castPlayer.load(this.castPlayer.protocol,Z)):this.castPlayer.load(this.castPlayer.protocol,this.videoInfo.startTime/1e3)}else this.playerElement.load();this.currentSrc=this.videoInfo.src}seek(e){this.videoInfo.isLive?VizbeeTV.logger.debug("ChromecastPlayer::seek called on live video - not supported"):super.seek(e)}stop(e){this.castPlayer&&(this.castPlayer.unload(),this.castPlayer=null),super.stop(e)}pause(){super.pause(),this.pauseFromSync=!0}setTracks(e){var t,i,r=this.videoInfo.tracks||[],n="ttml",s="webvtt";if(0!=r.length)if(e.length>0&&(i=e[0]),i){var a=r.find(e=>i==e.trackId);a&&(a.trackContentType.indexOf("vtt")>=0&&(t=s),a.trackContentType.indexOf(n)>=0&&(t=n),t&&(this.videoInfo.activeTrackId=i,this.castPlayer.enableCaptions(!0,t,a.trackContentId)))}else{var o=this.getCurrentTrack();o&&(o.trackContentType.indexOf("vtt")>=0&&(t=s),o.trackContentType.indexOf(n)>=0&&(t=n),t&&(this.videoInfo.activeTrackId=void 0,this.castPlayer.enableCaptions(!1,t)))}else this.checkForInbandCaptions(e)}checkForInbandCaptions(e){VizbeeTV.logger.debug("ChromecastHtmlPlayer::checkForInbandCaptions() - ",e),0!=this.mediaManager.getMediaInformation().length?this.processInBandTracks(e):VizbeeTV.logger.debug("ChromecastHtmlPlayer::checkForInbandCaptions() - No in_band captions")}processInBandTracks(e){VizbeeTV.logger.debug("ChromecastHtmlPlayer::processInBandTracks() - ",e);for(var t=this.castPlayer.getStreamingProtocol(),i=t.getStreamCount(),r=0;r<i;r++){for(var n=r+1,s=!1,a=0;a<e.length;a++)if(e[a]==n){s=!0;break}var o=t.isStreamEnabled(r);s&&!o?t.enableStream(r,!0):!s&&o&&t.enableStream(r,!1)}this.castPlayer.enableCaptions(!0)}registerMediaManagerEvents(){if(this.mediaManager){let e=this.mediaManager.onStop;this.mediaManager.onStop=t=>{this.isVideoStopped=!0,e(t)}}}videoPausedHandler(e){try{if(this.castPlayer&&this.castPlayer.getState().underflow)return void this.dispatchOnBuffering()}catch(e){if(this.pauseFromSync)return this.dispatchOnPaused(),void(this.pauseFromSync=!1)}if(this.pauseFromSync)return this.dispatchOnPaused(),void(this.pauseFromSync=!1)}videoSeekedHandler(e){!this.playerElement.paused||this.castPlayer&&this.castPlayer.getState()&&this.castPlayer.getState().underflow?this.dispatchOnPlaying():this.dispatchOnPaused()}onCastPlayerError(e){VizbeeTV.logger.debug("ChromecastPlayer::onCastPlayerError()",e);let t="UNKNOWN";switch(e){case cast.player.api.ErrorCode.PLAYBACK:VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error related to media playback"),t="MEDIA_ERR_PLAYBACK";break;case cast.player.api.ErrorCode.MEDIAKEYS:t="MEDIAKEYS_ERR",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error fetching the keys or decrypting the content");break;case cast.player.api.ErrorCode.NETWORK:t="MEDIA_ERR_NETWORK",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Network error");break;case cast.player.api.ErrorCode.MANIFEST:t="MEDIA_ERR_MANIFEST",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error loading or parsing the manifest");break;default:VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Unknown player error.")}let i=this.getAppVideoStartErrorInfo(e,t);e=i.errorCode,t=i.errorReason;let r={code:e,reason:t},n=this.buildErrorEvent(e,t,r);this.dispatchOnError(n)}resetPlayer(){this.playerElement.removeAttribute("type"),this.playerElement.removeAttribute("src"),this.playerElement.load(),this.castPlayer&&(this.castPlayer.unload(),this.castPlayer=null)}getHlsSegmentFormat(){let e=cast.player.api.HlsSegmentFormat.MPEG2_TS;if(this.videoInfo&&this.videoInfo.streamTypeInfo){let t=this.videoInfo.streamTypeInfo;"hls"==t.type&&("cmaf"==t.subType?e=cast.player.api.HlsSegmentFormat.FMP4:"single"==t.audioBitrateFormat&&(e=void 0))}return e}}class ee{constructor(){this._instance=void 0}getInstance(e){return this._instance||(e&&"v3"==e.toLowerCase()?this._instance=null:this._instance=X),this._instance}}class te extends ${constructor(e,t){if(super(e),!t)throw ReferenceError("DynamicPlayerSelector::constructor | DefaultPlatformPlayer is not passed.");this.nativePlayerClass=t.nativePlayer,this.htmlPlayerClass=t.htmlPlayer,this.bitmovinPlayerClass=t.bitmovinPlayer,this.modularBitmovinPlayerClass=t.modularBitmovinPlayer,this.videoJSPlayerClass=t.videoJSPlayer,this.theoPlayerPlayerClass=t.theoPlayer,this.shakaPlayerClass=t.shakaPlayer,this.topPlayerClass=t.topPlayer,this.currentPlayer=void 0,this.nativePlayer=void 0,this.htmlPlayer=void 0,this.bitmovinPlayer=void 0,this.modularBitmovinPlayer=void 0,this.videoJSPlayer=void 0,this.theoPlayer=void 0,this.shakaPlayer=void 0,this.topPlayer=void 0,VizbeeTV.logger.info("DynamicPlayerSelector::constructor - creating and selecting player");let i=e.config.vtvPlayerListConfig||[{type:"native"}];i.forEach(e=>{this._createPlayer(e)}),this._selectPlayer(i[0])}reconstruct(e){VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - newPlatformConfig",e),this.platform.config=e,e.standalone&&this._destroyAllPlayers();let t=[{type:"native"}];t=!e.vtvPlayerListConfig||P.isArray(e.vtvPlayerListConfig)&&0==e.vtvPlayerListConfig.length?[{type:"native"}]:e.vtvPlayerListConfig,VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - updated vtvPlayerListConfig",t),VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - creating and selecting player"),t.forEach(e=>{this._createPlayer(e)}),this._selectPlayer(t[0])}_destroyAllPlayers(){VizbeeTV.logger.info("DynamicPlayerSelector::_destroyAllPlayers - destroying all players"),this.nativePlayer&&(this.nativePlayer.destroy(),this.nativePlayer=void 0),this.htmlPlayer&&(this.htmlPlayer.destroy(),this.htmlPlayer=void 0),this.bitmovinPlayer&&(this.bitmovinPlayer.destroy(),this.bitmovinPlayer=void 0),this.modularBitmovinPlayer&&(this.modularBitmovinPlayer.destroy(),this.modularBitmovinPlayer=void 0),this.videoJSPlayer&&(this.videoJSPlayer.destroy(),this.videoJSPlayer=void 0),this.theoPlayer&&(this.theoPlayer.destroy(),this.theoPlayer=void 0),this.shakaPlayer&&(this.shakaPlayer.destroy(),this.shakaPlayer=void 0),this.topPlayer&&(this.topPlayer.destroy(),this.topPlayer=void 0),this.currentPlayer=void 0}_createPlayer(e){switch(e&&e.type){case"top":null==this.topPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Top Player"),this.topPlayer=new this.topPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Top Player");break;case"bitmovin":"modular"==e.subtype&&this.modularBitmovinPlayerClass?null==this.modularBitmovinPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Modular Bitmovin Player"),this.modularBitmovinPlayer=new this.modularBitmovinPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Modular Bitmovin Player"):null==this.bitmovinPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Static Bitmovin Player"),this.bitmovinPlayer=new this.bitmovinPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Static Bitmovin Player");break;case"videojs":null==this.videoJSPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING VideoJS Player"),this.videoJSPlayer=new this.videoJSPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED VideoJS Player");break;case"theo":null==this.theoPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING THEO Player"),this.theoPlayer=new this.theoPlayerPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED THEO Player");break;case"shaka":null==this.shakaPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Shaka Player"),this.shakaPlayer=new this.shakaPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Shaka Player");break;case"html":null==this.htmlPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING HTML Player"),this.htmlPlayer=new this.htmlPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED HTML Player");break;default:null==this.nativePlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Native Player"),this.nativePlayer=new this.nativePlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Native Player")}}_selectPlayer(e){if(e&&e.type)switch(e.type){case"top":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Top Player"),this._preparePlayer(this.topPlayer);break;case"bitmovin":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Bitmovin Player"),"modular"==e.subtype?this._preparePlayer(this.modularBitmovinPlayer):this._preparePlayer(this.bitmovinPlayer);break;case"videojs":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING VideoJS Player"),this._preparePlayer(this.videoJSPlayer);break;case"theo":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING THEO Player"),this._preparePlayer(this.theoPlayer);break;case"shaka":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Shaka Player"),this._preparePlayer(this.shakaPlayer);break;case"html":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING HTML Player"),this._preparePlayer(this.htmlPlayer);break;default:VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Native Player"),this._preparePlayer(this.nativePlayer)}else null==this.currentPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - DEFAULTING to native player"),this._preparePlayer(this.nativePlayer)):VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - REUSING current player")}_preparePlayer(e){e?this.currentPlayer&&this.currentPlayer.constructor.name==e.constructor.name?VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - NO CHANGE to already prepared player"):(VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - CHANGING player listeners"),this.currentPlayer&&this.currentPlayer.constructor.name!=e.constructor.name&&this._removePlayerListeners(this.currentPlayer),this.currentPlayer=e,this._addPlayerListeners(this.currentPlayer)):VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - INVALID player argument")}beforeStart(e){super.start(e)}start(e){this.beforeStart(e),VizbeeTV.logger.info("START TIME TRACKING [DynamicPlayerSelector Start Video] - player="+this.currentPlayer.constructor.name,e),VizbeeTV.logger.info("DynamicPlayerSelector::_start - current player="+this.currentPlayer.constructor.name),e.vtvPlayerConfig&&(VizbeeTV.logger.info("DynamicPlayerSelector::_start - playerType="+e.vtvPlayerConfig.type),this._createPlayer(e.vtvPlayerConfig),this._selectPlayer(e.vtvPlayerConfig)),this.currentPlayer.enableHLSExchange=e.useHLSExchange,this.currentPlayer.start(e)}play(){this.currentPlayer&&this.currentPlayer.play()}pause(){this.currentPlayer&&this.currentPlayer.pause()}togglePlayPause(){this.currentPlayer&&this.currentPlayer.togglePlayPause()}stop(e){this.currentPlayer&&this.currentPlayer.stop(e)}seek(e){this.currentPlayer&&this.currentPlayer.seek(e)}currentTime(){return this.currentPlayer?this.currentPlayer.currentTime():-1}getDuration(){return this.currentPlayer?this.currentPlayer.getDuration():-1}getStartTime(){return this.currentPlayer?this.currentPlayer.getStartTime():-1}getBufferLevel(){return this.currentPlayer?this.currentPlayer.getBufferLevel():{current:0,target:0}}getAudioBufferLevel(){return this.currentPlayer?this.currentPlayer.getAudioBufferLevel():{current:0,target:0,didDetectSeparateAudio:!1}}getCurrentState(){return this.currentPlayer?this.currentPlayer.getCurrentState():"IDLE"}setTracks(e){if(this.currentPlayer)return this.currentPlayer.setTracks(e)}getTracks(e){return this.currentPlayer?this.currentPlayer.getTracks(e):[]}getEnabledTracks(e){return this.currentPlayer?this.currentPlayer.getEnabledTracks(e):[]}enableTracks(e){this.currentPlayer&&this.currentPlayer.enableTracks(e)}disableTracks(e){this.currentPlayer&&this.currentPlayer.disableTracks(e)}changeAudioTrack(e){this.currentPlayer&&this.currentPlayer.changeAudioTrack(e)}getStreamQualityInfo(){return this.currentPlayer?this.currentPlayer.getStreamQualityInfo():{}}setStreamQualityInfo(e){this.currentPlayer&&this.currentPlayer.setStreamQualityInfo(e)}resetStreamQualityInfo(){this.currentPlayer&&this.currentPlayer.resetStreamQualityInfo()}getName(){return this.currentPlayer.getName()}getCurrentVersion(){return this.currentPlayer.getCurrentVersion()}doAction(e){return this.currentPlayer.doAction(e)}wrapAVPlayerListener(e){return this.currentPlayer.wrapAVPlayerListener(e)}destroy(){super.destroy(),this._destroyAllPlayers()}_addPlayerListeners(e){e.onLoading=e=>{this.dispatchOnLoading.call(this,e)},e.onStarted=e=>{this.dispatchOnStarted.call(this,e)},e.onPlaying=e=>{this.dispatchOnPlaying.call(this,e)},e.onPaused=e=>{this.dispatchOnPaused.call(this,e)},e.onBuffering=e=>{this.dispatchOnBuffering.call(this,e)},e.onBufferingComplete=e=>{this.dispatchOnBufferingComplete.call(this,e)},e.onTimeUpdate=e=>{this.dispatchOnTimeUpdate.call(this,e)},e.onInterrupted=e=>{this.dispatchOnInterrupted.call(this,e)},e.onEnded=e=>{this.dispatchOnEnded.call(this,e)},e.onError=e=>{this.dispatchOnError.call(this,e)},e.onEvent=e=>{this.dispatchOnEvent.call(this,e)}}_removePlayerListeners(e){e.resetListeners()}}class ie{constructor(){if("BaseDeviceID"===this.constructor.name)throw new TypeError("BaseDeviceID::constructor() - Abstract class.");this.deviceIdAlgorithm="VTV_DEFAULT",this.deviceIdKey="deviceid"}uniqueDeviceID(e,t){VizbeeTV.logger.error("BaseDeviceID::uniqueDeviceID - subclass did not override; no deviceId available"),t()}get algorithm(){return this.deviceIdAlgorithm}}class re extends ie{constructor(){super(),this.deviceIdAlgorithm="VTV_SESSION_ID"}uniqueDeviceID(e,t){let i,r=cast.receiver.CastReceiverManager.getInstance();r?r.getApplicationData()&&r.getApplicationData().sessionId?(i=r.getApplicationData().sessionId,e(i)):r.onReady=this.chain(r.onReady,function(i){i.length>0?e(i[0].data.sessionId):i.data&&i.data.sessionId?e(i.data.sessionId):(VizbeeTV.logger.error("SessionDeviceID::uniqueDeviceID - onReady fired without a sessionId"),t())}):t()}chain(e,t){return e?function(){e.call(this,arguments),t.call(this,arguments)}:t}}class ne extends ie{constructor(){super(),this.deviceIdAlgorithm="VTV_SESSION_ID"}uniqueDeviceID(e,t){let i,r=cast.framework.CastReceiverContext.getInstance();r?r.getApplicationData()&&r.getApplicationData().sessionId?(i=r.getApplicationData().sessionId,e(i)):r.addEventListener(cast.framework.system.EventType.READY,i=>{i&&i.data&&i.data.sessionId?e(i.data.sessionId):(VizbeeTV.logger.error("CAFSessionDeviceID::uniqueDeviceID - READY fired without a sessionId"),t())}):t()}}class se{constructor(){this._instance=void 0}getInstance(e){return this._instance||(e&&"v3"==e.toLowerCase()?this._instance=new ne:this._instance=new re),this._instance}}class ae{constructor(){var e,t,i,r,n;this._uaParser=(e=navigator.userAgent,i={name:"",version:""},r={name:"",version:""},n={name:"",version:""},(t=/Windows\s*(?:NT\s*)?([\d.]+)?/i.exec(e))?(i.name="Windows",i.version=t[1]||""):(t=/Mac OS X\s*([\d_.]+)?/i.exec(e))?(i.name="Mac OS",i.version=(t[1]||"").replace(/_/g,".")):(t=/CrOS[\s/]*([\w.]+)?/i.exec(e))?(i.name="Chromium OS",i.version=t[1]||""):(t=/Android\s*([\d.]+)?/i.exec(e))?(i.name="Android",i.version=t[1]||""):(t=/(?:iPhone|iPad).*OS\s*([\d_]+)/i.exec(e))?(i.name="iOS",i.version=(t[1]||"").replace(/_/g,".")):(t=/Linux/i.exec(e))&&(i.name="Linux"),(t=/(?:Edg|EdgA|EdgIOS)\/([\d.]+)/i.exec(e))?(r.name="Edge",r.version=t[1]):(t=/OPR\/([\d.]+)/i.exec(e))?(r.name="Opera",r.version=t[1]):(t=/Firefox\/([\d.]+)/i.exec(e))?(r.name="Firefox",r.version=t[1]):(t=/Chrome\/([\d.]+)/i.exec(e))?(r.name="Chrome",r.version=t[1]):(t=/Safari\/([\d.]+)/i.exec(e))&&/Version\/([\d.]+)/.test(e)&&(r.name="Safari",r.version=/Version\/([\d.]+)/.exec(e)[1]),(t=/AppleWebKit\/([\d.]+)/i.exec(e))?(n.name="WebKit",n.version=t[1]):(t=/Gecko\/([\d.]+)/i.exec(e))?(n.name="Gecko",n.version=t[1]):(t=/Trident\/([\d.]+)/i.exec(e))&&(n.name="Trident",n.version=t[1]),{os:i,browser:r,engine:n})}get deviceId(){return t}get make(){return t}get model(){return t}get modelYear(){return t}get serialNumber(){return t}get friendlyName(){return t}get macAddress(){return t}get userAgent(){return navigator.userAgent}get os(){return{name:this._uaParser.os.name,sdkVersion:this._uaParser.os.version,version:this._uaParser.os.version}}get browser(){return{name:this._uaParser.browser.name,version:this._uaParser.browser.version,engine_name:this._uaParser.engine.name,engine_version:this._uaParser.engine.version}}get screen(){return{height:document.body.clientHeight,width:document.body.clientWidth}}}class oe extends ae{constructor(){super()}}class le{constructor(){}get internalIP(){return t}get externalIP(){return t}get isWifiConnected(){return!0}get connectionType(){return t}get bssid(){return t}get ssid(){return t}}class de extends le{constructor(){super()}}class ce{constructor(){}isLaunchedbyVizbee(){throw new TypeError("BaseLaunchParams::isLaunchedbyVizbee() - Abstract method. This method must be implemented by derived classes.")}getLaunchParams(e){}setLaunchParams(e){}waitUntilReady(){return this._readyPromise||Promise.resolve()}}class ue extends ce{constructor(){super()}isLaunchedbyVizbee(){return!0}getLaunchParams(){let e,t={};if(e=window.location.href,!this.isValidUrl(e))return;let i=!1,r=e.indexOf("?");if(r>=0){let n=e.slice(r+1).split("&");for(let e=0;e<n.length;e++){let r,s;r=n[e].split("="),2==r.length&&r[0].length&&r[1].length&&(i=!0,s=r[0],t[s]=r[1])}}return i?t:void 0}isValidUrl(e){return/(http|https):\/\//.test(e)}}class pe{constructor(){this.eventMap={}}addHandler(e,t){this.eventMap[e]||(this.eventMap[e]=[]),this.eventMap[e].push(t)}removeHandler(e,t){if(this.eventMap&&this.eventMap[e]){let i,r=this.eventMap[e];if(r&&r.length&&(i=r.reduce((e,i,r)=>this._isFunction(i)&&i==t?e=r:e,-1),i>-1))return r.splice(i,1),this.eventMap[e]=r,!0}return!1}emit(e,t){e&&(VizbeeTV.logger.i("BaseAppLifeCycleManager","emit","eventName=",e,"; eventData=",t),this.eventMap&&this.eventMap[e]&&this.eventMap[e].forEach(i=>{VizbeeTV.logger.i("BaseAppLifeCycleManager","emit","calling handler for event=",e),i.apply({},t)}))}reset(){this.eventMap={}}_isFunction(e){return"function"==typeof e||!1}}class he extends pe{constructor(){super(),this._didBackgroundOnce=!1}init(){document&&this._listen()}_listen(){document.addEventListener("visibilitychange",()=>{try{if(VizbeeTV.tv.isAppExiting)return void VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is exiting");document.hidden?(VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is in background"),this._emitOnBackground()):(VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is in foreground"),this._emitOnForeground())}catch(e){VizbeeTV.logger.error("ChromecastAppLifeCycleManager::_listen - error reading lifecycle events",e)}})}_emitOnBackground(){this._didBackgroundOnce=!0,(this.eventMap.onBackground||[]).forEach(e=>{VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_emitOnBackground"),e.apply({})})}_emitOnForeground(){this._didBackgroundOnce&&(this.eventMap.onForeground||[]).forEach(e=>{VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_emitOnForeground"),e.apply({})})}}const ge={chromecast:class extends u{constructor(e){super(e),this.deviceId=this._getDeviceId(),this.launchParams=new ue,this._deviceInfo=new oe,this._networkInfo=new de,this.chromecastAppLifeCycleManager=new he,this.chromecastAppLifeCycleManager.init()}createPlayer(){let e={nativePlayer:this._getPlayer(),htmlPlayer:this._getPlayer(),bitmovinPlayer:null,modularBitmovinPlayer:null,videoJSPlayer:null,theoPlayer:null,shakaPlayer:null,topPlayer:null};return this.player=new te(this,e),this.player}createInputDevice(){return this.inputDevice=new O(this),this.inputDevice}reset(){}exit(){VizbeeTV.logger.i("Chromecast","exit"),this.isAppExiting=!0;try{window.cast&&window.cast.framework?window.cast.framework.CastReceiverContext.getInstance().stop():window.cast&&window.cast.receiver?window.cast.receiver.CastReceiverManager.getInstance().stop():window.close()}catch(e){VizbeeTV.logger.w("Chromecast","exit","failed to stop receiver",e)}}get platformVersion(){return window.cast&&window.cast.framework?"v3":"v2"}get defaultAppletAppId(){return"vzb0000001"}get cloudPlatformName(){return"chromecast"}get deviceInfo(){return this._deviceInfo}get networkInfo(){return this._networkInfo}get launchParamsDeferral(){return this.launchParams}get appLifeCycleManager(){return this.chromecastAppLifeCycleManager}_getDeviceId(){return(new se).getInstance(this.platformVersion)}_getPlayer(){return(new ee).getInstance(this.platformVersion)}}};let fe,ve;class ye extends u{constructor(e,t){if(super(t),e=e.toLowerCase(),!ge[e])throw new TypeError("ChromecastVirtualPlatform::constructor() - platform "+e+" does not exist.");this.__platform=new ge[e](t),this.player,this.inputDevice}static getPlatformType(){if(window.cast)return"Chromecast"}static detectPlatformWhenReady(e){e(ye.getPlatformType())}reset(){fe&&(fe.stop(),VizbeeTV.logger.debug("player reset",fe)),ve&&(ve.reset(),ve=void 0)}uniqueDeviceID(e,t){this.__platform.uniqueDeviceID(e,t)}set enableHLSExchange(e){fe.enableHLSExchange=e}set deviceIDAlgorithm(e){return this.__platform.deviceIDAlgorithm=e}get deviceIDAlgorithm(){return this.__platform.deviceIDAlgorithm}get player(){return void 0===fe&&(fe=this.__platform.createPlayer()),fe}set player(e){e&&(fe=e)}destroyPlayer(){fe.destroy().then(()=>{fe=void 0})}get inputDevice(){return void 0===ve&&(ve=this.__platform.createInputDevice()),ve}set screenSaverEnabled(e){e=e||!1,void 0!==this.__platform&&this.__platform.enableScreenSaver&&(VizbeeTV.logger.debug("ChromecastVirtualPlatform::screenSaverEnabled = "+e),this.__platform.enableScreenSaver(e))}exit(){void 0!==this.__platform&&this.__platform.exit&&this.__platform.exit()}set isAppExiting(e){this.__platform.isAppExiting=e}get isAppExiting(){return this.__platform.isAppExiting}get defaultAppletAppId(){return this.__platform.defaultAppletAppId}get cloudPlatformName(){return this.__platform.cloudPlatformName}get platformModel(){return this.__platform.platformModel}get platformVersion(){return this.__platform.platformVersion}get adId(){return this.__platform.adId}get isAdTrackingDisabled(){return this.__platform.isAdTrackingDisabled}get appLifeCycleManager(){return this.__platform.appLifeCycleManager}get launchParamsDeferral(){return this.__platform.launchParamsDeferral}get deviceInfo(){return this.__platform.deviceInfo}get networkInfo(){return this.__platform.networkInfo}}class me extends ye{constructor(e,t){super(e,t),this.setUIStyleConfig("transparent","white","black")}extendPlayer(e,t){VizbeeTV.logger.debug("ExtendPlayer - ",this.player.constructor.name),this.player=new e(this.player,t)}unextendPlayer(){try{if(this.player.extendedPlayer){var e=this.player.extendedPlayer;this.player.reset(),this.player=e}}catch(e){VizbeeTV.logger.error("Error while unextending Player",e,this.player,this.player.extendedPlayer)}}wrapExtension(e,t){this.extendPlayer(e,t)}unwrapExtensionToBasePlayer(){for(;this.player.extendedPlayer;)this.unextendPlayer();this.player.reset()}unwrapExtensionToStandardPlayerControls(){for(;!(this.player instanceof StandardPlayerControls);)this.unextendPlayer()}setUIStyleConfig(e,t,i){this.config.primaryColor=e||this.config.primaryColor,this.config.secondaryColor=t||this.config.secondaryColor,this.config.tertiaryColor=i||this.config.tertiaryColor}}class be{constructor(){this.currentLevel=this.LEVEL.CRITICAL,this.enableLogging=!0,this.logPrefix=""}static enableRemoteLogging(e,t){window.console.log=window.console.info=window.console.error=window.console.warn=window.console.debug=function(){let i=new XMLHttpRequest;try{let r=Array.prototype.slice.call(arguments);r=M.convertObjectsToString(r);let n=[t];Array.prototype.push.apply(n,r);let s=encodeURIComponent(JSON.stringify({data:n.join(" ")}));i.open("GET",e+s,!0),i.send(null)}catch(e){}}}get LEVEL(){return{CRITICAL:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,VERBOSE:5}}setLevel(e){this.currentLevel=e}setPrefix(e){this.logPrefix=e}enable(){this.enableLogging=!0}disable(){this.enableLogging=!1}c(){let e=this._getLogArguments.apply(this,arguments);e&&this.critical.apply(this,e)}critical(){if(this.shouldLog(this.LEVEL.CRITICAL)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [CRITICAL]:"];Array.prototype.push.apply(t,e),console.error.apply(console,t)}}e(){let e=this._getLogArguments.apply(this,arguments);e&&this.error.apply(this,e)}error(){if(this.shouldLog(this.LEVEL.ERROR)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [ERROR]:"];Array.prototype.push.apply(t,e),console.error.apply(console,t)}}w(){let e=this._getLogArguments.apply(this,arguments);e&&this.warn.apply(this,e)}warn(){if(this.shouldLog(this.LEVEL.WARN)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [WARN]:"];Array.prototype.push.apply(t,e),console.warn.apply(console,t)}}i(){let e=this._getLogArguments.apply(this,arguments);e&&this.info.apply(this,e)}info(){if(this.shouldLog(this.LEVEL.INFO)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [INFO]:"];Array.prototype.push.apply(t,e),console.info.apply(console,t)}}d(){let e=this._getLogArguments.apply(this,arguments);e&&this.debug.apply(this,e)}debug(){if(this.shouldLog(this.LEVEL.DEBUG)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [DEBUG]:"];Array.prototype.push.apply(t,e),console.log.apply(console,t)}}v(){let e=this._getLogArguments.apply(this,arguments);e&&this.verbose.apply(this,e)}verbose(){if(this.shouldLog(this.LEVEL.VERBOSE)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [VERBOSE]:"];Array.prototype.push.apply(t,e),console.log.apply(console,t)}}shouldLog(e){return!!this.enableLogging&&e<=this.currentLevel}_getLogArguments(){let e=Array.prototype.slice.call(arguments);if(e&&e.length>=2){let t=[this._getClassAndMethodNamePrefix(e[0],e[1])],i=Array.prototype.slice.call(arguments,2);return Array.prototype.push.apply(t,i),t}}_getClassAndMethodNamePrefix(e,t){return e&&t?M.padEnd(e+"::",40," ")+M.padEnd(t,30," ")+" - ":""}getCurrentTimeString(){return"["+(new Date).toISOString()+"]"}}class Se extends be{constructor(){super()}critical(){try{super.critical(...arguments);let e=Array.prototype.slice.call(arguments);if(e.length>0){let t=e[e.length-1],i=window.Raven||window.Sentry;this._shouldLogException()&&i&&(P.isObject(t)||P.isString(t))&&i.captureException(t)}}catch(e){}}_shouldLogException(){return!0}}var _e,Te,Ee,Ie;function Pe(){if(Te)return _e;Te=1;var e,t={getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,t,i,r,n,s){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(i)switch(i.constructor){case Number:a=i===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+i;break;case String:a="; expires="+i;break;case Date:a="; expires="+i.toUTCString()}return document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(n?"; domain="+n:"")+(r?"; path="+r:"")+(s?"; secure":""),!0},removeItem:function(e,t,i){return!!this.hasItem(e)&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(i?"; domain="+i:"")+(t?"; path="+t:""),!0)},hasItem:function(e){return!!e&&new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),t=e.length,i=0;i<t;i++)e[i]=decodeURIComponent(e[i]);return e},eraseCookieFromAllPaths:function(e){var t=location.pathname.split("/"),i=" path=";document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for(var r=0;r<t.length;r++)i+=("/"!=i.substr(-1)?"/":"")+t[r],document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;"+i+";"}},i=(e=function(){for(var e,t={},i=decodeURIComponent(window.location.href),r=i.slice(i.indexOf("?")+1).split("&"),n=0;n<r.length;n++)t[(e=r[n].split("="))[0]]=e[1];return t}()||{},{getQueryParamForKey:function(t){return e[t]||!1},getQueryParams:function(){return e}});return _e={chain:function(e,t){return e?function(){e.call(this,arguments),t.call(this,arguments)}:t},xhr:function(e){return new Promise(function(t,i){var r=e.retries||2;!function n(){var s=new XMLHttpRequest;e.url=e.url.replace(/^http:\/\//i,"https://"),s.open(e.method||"GET",e.url,!0),Object.keys(e.headers||{}).forEach(function(t){s.setRequestHeader(t,e.headers[t])}),s.onreadystatechange=function(a){if(4===s.readyState)if(-1===[200,304].indexOf(s.status))VizbeeSDK.logger.error("xhr error",a),r>0?(r--,n()):i(new Error("Server responded with a status of "+s.status));else try{e.format=e.format||"json";var o=a.target;"json"===e.format?o=JSON.parse(o.response):"xml"===e.format&&(o=o.responseXML),VizbeeSDK.logger.debug("Util::xhr() -- response object --",o),t(o)}catch(a){r>0?(r--,n()):i("JSON parse error with Server response")}},e.timeout&&(s.timeout=e.timeout,s.ontimeout=function(t){r>0?(r--,n()):i(new Error("Server timeout "+e.timeout+"ms"))}),s.send(e.data)}()})},log:function(){var e=Array.prototype.slice.call(arguments);e.unshift("VIZBEE [LOG]"),console.log.apply(console,e)},docCookies:t,urlParser:i},_e}window.VizbeeTV={init:function(e,t,i){this.logger=new Se,this.logger.setPrefix("[VTVLIB]"),this.Util=M,i?this.tv instanceof me?this.tv.config=P.extend(this.tv.config,t):this.tv=new me(e,t):this.tv instanceof ye?this.tv.config=P.extend(this.tv.config,t):this.tv=new ye(e,t)}};var Ve,Ae,Ce,ke,De={getIpv6Address:function(e){M.xhr({url:"https://ip.claspws.tv",timeout:5e3,retries:3}).then(t=>{var i=t&&t.headers&&t.headers["x-vzb-client-ip"];i?(VizbeeSDK.logger.debug("Ipv6::getIpv6Address - ipv6Address=",i),e(i)):(VizbeeSDK.logger.warn("Ipv6::getIpv6Address - ipv6Address=empty"),e())}).catch(t=>{VizbeeSDK.logger.warn("Ipv6::getIpv6Address - failed",t),e()})}};function Me(){if(Ae)return Ve;function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function r(e){return void 0===e}return Ae=1,Ve=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(e){var n,s,a,o,l,d;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((n=arguments[1])instanceof Error)throw n;var c=new Error('Uncaught, unspecified "error" event. ('+n+")");throw c.context=n,c}if(r(s=this._events[e]))return!1;if(t(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:o=Array.prototype.slice.call(arguments,1),s.apply(this,o)}else if(i(s))for(o=Array.prototype.slice.call(arguments,1),a=(d=s.slice()).length,l=0;l<a;l++)d[l].apply(this,o);return!0},e.prototype.addListener=function(n,s){var a;if(!t(s))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",n,t(s.listener)?s.listener:s),this._events[n]?i(this._events[n])?this._events[n].push(s):this._events[n]=[this._events[n],s]:this._events[n]=s,i(this._events[n])&&!this._events[n].warned&&(a=r(this._maxListeners)?e.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[n].length>a&&(this._events[n].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[n].length),"function"==typeof console.trace&&console.trace()),this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(e,i){if(!t(i))throw TypeError("listener must be a function");var r=!1;function n(){this.removeListener(e,n),r||(r=!0,i.apply(this,arguments))}return n.listener=i,this.on(e,n),this},e.prototype.removeListener=function(e,r){var n,s,a,o;if(!t(r))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,s=-1,n===r||t(n.listener)&&n.listener===r)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,r);else if(i(n)){for(o=a;o-- >0;)if(n[o]===r||n[o].listener&&n[o].listener===r){s=o;break}if(s<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,r)}return this},e.prototype.removeAllListeners=function(e){var i,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(t(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},e.prototype.listeners=function(e){return this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.prototype.listenerCount=function(e){if(this._events){var i=this._events[e];if(t(i))return 1;if(i)return i.length}return 0},e.listenerCount=function(e,t){return e.listenerCount(t)},Ve}function we(){if(ke)return Ce;ke=1;var e,t=new(0,Me().EventEmitter);return Ce={reset:function(){e=void 0},getApp:function(){return e},setApp:function(i){i&&(e=i,VizbeeSDK.logger.debug("AppAdapter::setApp in setApp"),t.emit("app",{type:"app",obj:i}))},isAppSet:function(){return!!e},preInit:function(){VizbeeSDK.logger.debug("AppAdapter::preInit() called"),e&&e.preInit?e.preInit():VizbeeSDK.logger.error("AppAdapter::preInit() - app.preInit() callback not provided by host app")},willStartVideo:function(t,i){e&&e.willStartVideo?e.willStartVideo(t,i):VizbeeSDK.logger.info("AppAdapter::willStartVideo() - app.willStartVideo() callback not provided by host app")},startVideo:function(t){e&&e.startVideo?e.startVideo(t):VizbeeSDK.logger.info("AppAdapter::StartVideo() - app.startVideo() callback not provided by host app")},playVideo:function(){return VizbeeSDK.logger.info("AppAdapter::PlayVideo() called"),e&&e.playVideo?e.playVideo():(VizbeeSDK.logger.info("AppAdapter::PlayVideo() - app.playVideo() callback not provided by host app"),!1)},pauseVideo:function(){return VizbeeSDK.logger.info("AppAdapter::PauseVideo() called"),e&&e.pauseVideo?e.pauseVideo():(VizbeeSDK.logger.info("AppAdapter::PauseVideo() - app.pauseVideo() callback not provided by host app"),!1)},stopVideo:function(t){return VizbeeSDK.logger.info("AppAdapter::StopVideo() called",t,e),VizbeeSDK.logger.debug("AppAdapter::StopVideo() called"),e&&e.stopVideo?(VizbeeSDK.logger.info("AppAdapter::StopVideo() called",t),e.stopVideo(t)):(VizbeeSDK.logger.info("AppAdapter::StopVideo() - app.stopVideo() callback not provided by host app"),!1)},seekVideo:function(t){return VizbeeSDK.logger.info("AppAdapter::SeekVideo() called",t),e&&e.seekVideo?e.seekVideo(t):(VizbeeSDK.logger.info("AppAdapter::SeekVideo() - app.seekVideo() callback not provided by host app"),!1)},getVideoInfo:function(){if(e&&e.getVideoInfo)return e.getVideoInfo()},getTracks:function(){return e&&e.getTracks?e.getTracks():(VizbeeSDK.logger.verbose("AppAdapter::getTracks() - app.getTracks() callback not provided by host app"),!1)},getEnabledTracks:function(){return e&&e.getEnabledTracks?e.getEnabledTracks():(VizbeeSDK.logger.verbose("AppAdapter::getEnabledTracks() - app.getEnabledTracks() callback not provided by host app"),!1)},enableTracks:function(t){return VizbeeSDK.logger.verbose("AppAdapter::enableTracks() called"),e&&e.enableTracks?e.enableTracks(t):(VizbeeSDK.logger.verbose("AppAdapter::enableTracks() - app.enableTracks() callback not provided by host app"),!1)},disableTracks:function(t){return VizbeeSDK.logger.verbose("AppAdapter::disableTracks() called"),e&&e.disableTracks?e.disableTracks(t):(VizbeeSDK.logger.verbose("AppAdapter::disableTracks() - app.disableTracks() callback not provided by host app"),!1)},getAudioTracks:function(){return e&&e.getAudioTracks?e.getAudioTracks():(VizbeeSDK.logger.verbose("AppAdapter::getAudioTracks() - app.getAudioTracks() callback not provided by host app"),!1)},getActiveAudioTrack:function(){return e&&e.getActiveAudioTrack?e.getActiveAudioTrack():(VizbeeSDK.logger.verbose("AppAdapter::getActiveAudioTrack() - app.getActiveAudioTrack() callback not provided by host app"),!1)},changeAudioTrack:function(t){return VizbeeSDK.logger.info("AppAdapter::changeAudioTrack() called"),e&&e.changeAudioTrack?e.changeAudioTrack(t):(VizbeeSDK.logger.info("AppAdapter::changeAudioTrack() - app.changeAudioTrack() callback not provided by host app"),!1)},onEvent:function(t){VizbeeSDK.logger.debug("AppAdapter::onEvent() called"),e&&e.onEvent?e.onEvent(t):VizbeeSDK.logger.info("AppAdapter::onEvent() - callback not provided by host app")},updatePresence:function(t){VizbeeSDK.logger.debug("AppAdapter::updatePresence() called"),e&&e.updatePresence?e.updatePresence(t):VizbeeSDK.logger.info("AppAdapter::updatePresence() - callback not provided by host app")},addListener:function(e){t.addListener("app",e)}},Ce}var Ne,Oe,xe=I(),ze=new(0,Me().EventEmitter),Le=we(),Re=void 0,Ke={isInProgress:!1},Ue=!1,Be="videoadapter_video",Fe="videoadapter_ad";function He(e){var t,i,r=!xe.contains(["timeupdate"],e.type);Ke.isInProgress||(Re&&"app"!==Re.app.state?(t=new We,e.type,"loading"===e.type&&(i="BUFFERING"),"playing"===e.type&&(i="PLAYING"),"paused"===e.type&&(i="PAUSED_BY_USER"),"ended"==e.type&&(i="FINISHED"),"interrupted"==e.type&&(i="INTERRUPTED"),"error"===e.type&&(i="INTERRUPTED",e.data&&e.data.reason&&"stop_by_user"!=e.data.reason.toLowerCase()&&(i="FAILED",t.error=e.data,t.error.data={})),i&&(t.state=i),ze.emit(Be,t,r)):VizbeeSDK.logger.verbose('VideoAdapter::videoEventHandler - app.state = "app"'))}function Ge(e,t){var i=e.playing||e.preparing;(i||!i&&Ke.isInProgress)&&ze.emit(Fe,e,t),Ke.isInProgress=i||!1,Ke.isInProgress||(Ue=!1),"FINISHED"==e.state||e.state}function We(e){var t={type:"video",position:-1,duration:-1,cc:{},tr:{}};return Oe?(t.position=1e3*Oe.currentTime(),t.duration=1e3*Oe.getDuration(),t.startTime=Oe.getStartTime(),t.videoBufferLevel=Oe.getBufferLevel(),t.audioBufferLevel=Oe.getAudioBufferLevel(),t.qos=Oe.getStreamQualityInfo(),t.volume=100,t.muted=!1):(t.position=-1,t.duration=-1,t.startTime=0,t.videoBufferLevel=0,t.audioBufferLevel=0,t.volume=1,t.muted=!1),t.qos||(t.qos={adPodStartedTimeInMs:0,adPodEndedTimeInMs:0,loadReceivedByAppTimeInMs:0,loadReceivedByPlayerTimeInMs:0,metadataLoadedTimeInMs:0,playerReadyToPlayTimeInMs:0,playbackStartedTimeInMs:0}),xe.extend(t,e)}function je(){Ke.isInProgress&&Ne.reset()}var qe,Je,Ye,$e,Qe,Ze,Xe,et,tt,it,rt,nt,st,at,ot={setVideo:function(e){var t;(t=e).onLoading=function(e){Ke.isInProgress||(He({type:"loading"}),Ue=!1)},t.onPlaying=function(e){Ke.isInProgress||(He({type:"playing"}),Ue=!0)},t.onPaused=function(e){Ke.isInProgress||(He({type:"paused"}),Ue=!1)},t.onBuffering=function(e){Ke.isInProgress||(He({type:"loading"}),Ue=!1)},t.onError=function(e){Ke.isInProgress||(He({type:"error",data:e}),Ue=!1)},t.onInterrupted=function(e){Ke.isInProgress||(He({type:"interrupted",data:e}),Ue=!1)},t.onEnded=function(){Ke.isInProgress||(He({type:"ended"}),Ue=!1)},t.onTimeUpdate=function(e){Ke.isInProgress||(Ue?He({type:"timeupdate"}):(Ue=!0,He({type:"playing"})))},Oe=e},setVideoInfo:function(e){e&&Re&&Re.setCurrentVideoInfo(e)},setId:function(e,t){if(Re){if(Re.video&&Re.video.id&&e&&Re.video.id!=e){VizbeeSDK.logger.debug("VideoAdapter::setId - SENDING INTERRUPTED");var i=new We({id:Re.video.id,state:"INTERRUPTED"});ze.emit(Be,i,!0)}var r=new We({id:e});r.position=r.duration=-1,r.state="UNKNOWN",ze.emit(Be,r,!0),VizbeeSDK.logger.debug("VideoAdapter::setId - setting currentGUID = "+e),Re.setCurrentVideoInfo(xe.extend(Re.getCurrentVideoInfo()||{},{id:e,islive:t}))}},setVideoStop:function(){Ke&&Ke.isInProgress&&Ne&&(Ke.isInProgress=!1,Ne.reset()),He({type:"error"})},willStart:function(e,t){Le.willStartVideo(e,t)},start:function(e){He({type:"loadedmetadata"}),je(),Le.startVideo(e)},play:function(){Le.playVideo()||VizbeeTV.tv.inputDevice.sendPlay()},pause:function(){Le.pauseVideo()||VizbeeTV.tv.inputDevice.sendPause()},seek:function(e){Le.seekVideo(e)||xe.isNumber(e)&&Oe.seek(e)},stop:function(e){if(!Le.stopVideo(e)){VizbeeTV.tv.inputDevice.sendStop(),VizbeeSDK.logger.debug("VideoAdapter::stop - sending INTERRUPTED state");var t=new We({state:"INTERRUPTED"});ze.emit(Be,t,!0),je()}},exit:function(){var e=new We({state:"INTERRUPTED"});ze.emit(Be,e,!0)},setTracks:function(e){Oe.setTracks(e)},getTracks:function(e){e=e||i;var t=Le.getTracks();return!1!==t?t:Oe.getTracks(e)},getEnabledTracks:function(e){e=e||i;var t=Le.getEnabledTracks();return!1!==t?t:Oe.getEnabledTracks(e)},enableTracks:function(e){Le.enableTracks(e)||Oe.enableTracks(e)},disableTracks:function(e){Le.disableTracks(e)||Oe.disableTracks(e)},getAudioTracks:function(e){e=e||r;var t=Le.getAudioTracks();return!1!==t?t:Oe.getTracks(e)},getActiveAudioTrack:function(e){e=e||r;var t=Le.getActiveAudioTrack();return!1!==t?t:(Oe.getEnabledTracks(e)||[])[0]},changeAudioTrack:function(e){Le.changeAudioTrack(e)||Oe.changeAudioTrack(e)},mute:function(e){},volumeUp:function(){ze.emit(Be,new We,!0)},volumeDown:function(){ze.emit(Be,new We,!0)},onEvent:function(e){Le.onEvent(e)},setAdAdapter:function(e){Ne&&Ne.removeListener(Ge),(Ne=e)&&Ne.addListener(Ge)},setAppStateManager:function(e){Re=e},reset:function(){Oe=void 0,Ke={playing:!1}},addListener:function(e){ze.addListener(Be,e),ze.addListener(Fe,e)},removeListener:function(e){ze.removeListener(Be,e),ze.removeListener(Fe,e)}};function lt(){if(Je)return qe;Je=1;var e,t=I();return qe={reset:function(){e=void 0},setVideoAdapter:function(t){e=t},isAdapterSet:function(){return!!e},getCurrentTime:function(){var i=0;return e&&t.isFunction(e.getCurrentTime)&&(i=e.getCurrentTime()),i},getDuration:function(){var i=0;return e&&t.isFunction(e.getDuration)&&(i=e.getDuration()),i}}}function dt(){if($e)return Ye;$e=1;var e=new(0,Me().EventEmitter),t=ot,i=lt(),r=void 0;function n(t,n){"video"==t.type&&(t=function(e,t){return t||e.position<=-1||e.duration<=-1||e.position>e.duration||i.isAdapterSet()&&(e.position=i.getCurrentTime(),e.duration=i.getDuration(),VizbeeSDK.logger.debug("ssaivideoadapater::modifyStatus",e.position,e.duration)),e}(t,r&&r.getSyncVideoInfo().islive)),function(t,i){e.emit("ssaivideoadapter_video",t,i)}(t,n)}return Ye={init:function(){t.addListener(n)},setVideo:t.setVideo,setVideoInfo:t.setVideoInfo,setId:t.setId,setVideoStop:t.setVideoStop,willStart:t.willStart,start:t.start,play:t.play,pause:t.pause,seek:t.seek,stop:t.stop,exit:t.exit,setTracks:t.setTracks,getTracks:t.getTracks,getEnabledTracks:t.getEnabledTracks,enableTracks:t.enableTracks,disableTracks:t.disableTracks,getAudioTracks:t.getAudioTracks,getActiveAudioTrack:t.getActiveAudioTrack,changeAudioTrack:t.changeAudioTrack,mute:t.mute,volumeUp:t.volumeUp,volumeDown:t.volumeDown,onEvent:t.onEvent,setAppStateManager:function(e){r=e,t.setAppStateManager(e)},setAdAdapter:t.setAdAdapter,reset:function(){r=void 0,t.removeListener(n),t.reset()},addListener:function(t){e.addListener("ssaivideoadapter_video",t)},removeListener:function(t){e.removeListener("ssaivideoadapter_video",t)}}}function ct(){if(Ze)return Qe;Ze=1;var e=I(),t=new(0,Me().EventEmitter),i=dt(),r=we(),n={state:"app"},s={},a={},o="default",l={},d={};function c(e){l=e}function u(t,i){"app"===t.type&&p(),"video"===t.type&&function(t,i){e.extend(s,t),["FINISHED","INTERRUPTED","FAILED"].indexOf(s.state)>-1?(VizbeeSDK.logger.debug("AppStateManager::videoEventHanlder() -- setting app.state to 'app'."),h(),n.state="app",g()):(n.state="video",i&&h())}(t,i),"ad"===t.type&&function(t,i){let r=i;t.playing||t.preparing?(n.state="ad",s.state="PAUSED_BY_AD",e.extend(a,t)):(a.preparing=!1,a.playing=!1,"INTERRUPTED"==t.state?(n.state="app",s.state="INTERRUPTED",r=!0):"PAUSED_BY_AD"==s.state&&(s.state="UNKNOWN"),s.duration<=s.position&&s.duration>0&&(n.state="app",s.state="FINISHED",r=!0)),r&&h()}(t,i)}function p(){VizbeeSDK.logger.debug("AppStateManager:appEventHandler appIsSet is TRUE"),t.emit("state",{type:"appIsSet"})}function h(){t.emit("state",{})}function g(){VizbeeSDK.logger.debug("AppStateManager:reset() previous video and ad objects = ",s,a,l),s.id="",s.state="UNKNOWN",s.position=-1,s.duration=-1,s.elapsedTime=0,s.tr={},s.error={},a.id="",a.state="UNKNOWN",a.position=-1,a.duration=-1,o={},VizbeeSDK.logger.debug("AppStateManager:reset() complete : current video and ad objects = ",s,a,l)}return g(),i.addListener(u),r.addListener(u),r.isAppSet()&&p(),Qe={type:"AppStateManager",app:n,video:s,ad:a,reset:g,syncStartVideoSource:o,syncVideoInfo:l,setSyncVideoInfo:c,getSyncVideoInfo:function(){return l},currentVideoInfo:d,setCurrentVideoInfo:function(e){d=e,l&&e&&l.id!=e.id&&c({})},getCurrentVideoInfo:function(){return d},wasVideoStartedByVizbee:function(){return!!(d&&d.senderInfo&&d.senderInfo.st)||!(!l||!d||l.id!=d.id)},addListener:function(e){t.addListener("state",e)},removeListener:function(e){t.removeListener("state",e)}}}function ut(){return it?tt:(it=1,tt={setVGA:function(t){t&&(e=t,VizbeeSDK.logger.debug("VGAAdapter::setVGA in setVGA"))},onSubscribedToSync:function(){VizbeeSDK.logger.debug("VGAAdapter::subscribedToSync in subscribedToSync"),e&&e.onSubscribedToSync&&e.onSubscribedToSync()},reset:function(){e=void 0}});var e}function pt(){if(nt)return rt;nt=1;var e=new(0,Me().EventEmitter),t="sync_proxy_video_cmds";return rt={send:function(i){e.emit(t,i)},reset:function(){e.removeAllListeners(t)},addListener:function(i){e.addListener(t,i)}}}class ht{constructor(e){this.appConfig=e||{},this._eventListeners=[]}connect(e){throw new TypeError("BaseSync::connect() - Abstract method.")}disconnect(){this._eventListeners=[]}send(e){}set onReceive(e){"function"==typeof e&&this._eventListeners.push(e)}dispatchReceive(e){for(var t=this._eventListeners.length-1;t>-1;t--)this._eventListeners[t](e)}}class gt{constructor(e,t){this.type=e,this.data=t}}class ft{static get SYNC_CONNECT(){return"sync-connect"}static get SYNC_MESSAGE(){return"sync-message"}static get SYNC_PRESENCE(){return"sync-presence"}}var vt,yt,mt,bt,St=E(function(){if(at)return st;at=1;var e=Pe().docCookies,t="screen_device_id",i="should_verify_screen_device_id",r="screen_device_id_verified_intermediate",n="screen_device_id_verified",s=e.getItem(n),a=e.getItem(t);return st={getDeviceId:function(){return a},getDeviceIdFromStorage:function(){return e.getItem(t)},isDeviceIdVerified:function(){return s},isDeviceIdVerifiedFlagStored:function(){return e.getItem(n)},isIntermediateVerifcationCookieSet:function(){return e.getItem(r)},isShouldVerifyDeviceIdFlagSet:function(){return e.getItem(i)},setDeviceId:function(n){s||(a!==n&&this.isIntermediateVerifcationCookieSet()&&e.eraseCookieFromAllPaths(r),a=n,e.setItem(t,a,1/0,"/"),e.setItem(i,"yes",1/0,"/"))},verifyDeviceId:function(){e.getItem(i)&&(e.getItem(n)||(e.getItem(r)?(s="yes",e.setItem(n,s,1/0,"/"),VizbeeSDK.logger.debug("SETTING VERIFIED COOKIE *** ",e.getItem(n))):(e.setItem(r,"yes",1/0,"/"),VizbeeSDK.logger.debug("SETTING INTERMEDIATE COOKIE *** ",e.getItem(r)))),e.eraseCookieFromAllPaths(i))},reset:function(){for(var o=[t,n,i,r],l=0;l<o.length;l++)e.eraseCookieFromAllPaths(o[l]);s=null,a=null}}}()),_t={exports:{}},Tt={exports:{}};function Et(){return vt||(vt=1,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&t.rotl(e,8)|4278255360&t.rotl(e,24);for(var i=0;i<e.length;i++)e[i]=t.endian(e[i]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],i=0,r=0;i<e.length;i++,r+=8)t[r>>>5]|=e[i]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],i=0;i<32*e.length;i+=8)t.push(e[i>>>5]>>>24-i%32&255);return t},bytesToHex:function(e){for(var t=[],i=0;i<e.length;i++)t.push((e[i]>>>4).toString(16)),t.push((15&e[i]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],i=0;i<e.length;i+=2)t.push(parseInt(e.substr(i,2),16));return t},bytesToBase64:function(t){for(var i=[],r=0;r<t.length;r+=3)for(var n=t[r]<<16|t[r+1]<<8|t[r+2],s=0;s<4;s++)8*r+6*s<=8*t.length?i.push(e.charAt(n>>>6*(3-s)&63)):i.push("=");return i.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var i=[],r=0,n=0;r<t.length;n=++r%4)0!=n&&i.push((e.indexOf(t.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|e.indexOf(t.charAt(r))>>>6-2*n);return i}},Tt.exports=t),Tt.exports;var e,t}function It(){if(mt)return yt;mt=1;var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(e){for(var t=[],i=0;i<e.length;i++)t.push(255&e.charCodeAt(i));return t},bytesToString:function(e){for(var t=[],i=0;i<e.length;i++)t.push(String.fromCharCode(e[i]));return t.join("")}}};return yt=e}var Pt,Vt,At,Ct=(bt||(bt=1,function(){var e=Et(),t=It().utf8,i=It().bin,r=function(n,s){n.constructor==String?n=s&&"binary"===s.encoding?i.stringToBytes(n):t.stringToBytes(n):"undefined"!=typeof Buffer&&"function"==typeof Buffer.isBuffer&&Buffer.isBuffer(n)?n=Array.prototype.slice.call(n,0):Array.isArray(n)||(n=n.toString());for(var a=e.bytesToWords(n),o=8*n.length,l=1732584193,d=-271733879,c=-1732584194,u=271733878,p=0;p<a.length;p++)a[p]=16711935&(a[p]<<8|a[p]>>>24)|4278255360&(a[p]<<24|a[p]>>>8);a[o>>>5]|=128<<o%32,a[14+(o+64>>>9<<4)]=o;var h=r._ff,g=r._gg,f=r._hh,v=r._ii;for(p=0;p<a.length;p+=16){var y=l,m=d,b=c,S=u;l=h(l,d,c,u,a[p+0],7,-680876936),u=h(u,l,d,c,a[p+1],12,-389564586),c=h(c,u,l,d,a[p+2],17,606105819),d=h(d,c,u,l,a[p+3],22,-1044525330),l=h(l,d,c,u,a[p+4],7,-176418897),u=h(u,l,d,c,a[p+5],12,1200080426),c=h(c,u,l,d,a[p+6],17,-1473231341),d=h(d,c,u,l,a[p+7],22,-45705983),l=h(l,d,c,u,a[p+8],7,1770035416),u=h(u,l,d,c,a[p+9],12,-1958414417),c=h(c,u,l,d,a[p+10],17,-42063),d=h(d,c,u,l,a[p+11],22,-1990404162),l=h(l,d,c,u,a[p+12],7,1804603682),u=h(u,l,d,c,a[p+13],12,-40341101),c=h(c,u,l,d,a[p+14],17,-1502002290),l=g(l,d=h(d,c,u,l,a[p+15],22,1236535329),c,u,a[p+1],5,-165796510),u=g(u,l,d,c,a[p+6],9,-1069501632),c=g(c,u,l,d,a[p+11],14,643717713),d=g(d,c,u,l,a[p+0],20,-373897302),l=g(l,d,c,u,a[p+5],5,-701558691),u=g(u,l,d,c,a[p+10],9,38016083),c=g(c,u,l,d,a[p+15],14,-660478335),d=g(d,c,u,l,a[p+4],20,-405537848),l=g(l,d,c,u,a[p+9],5,568446438),u=g(u,l,d,c,a[p+14],9,-1019803690),c=g(c,u,l,d,a[p+3],14,-187363961),d=g(d,c,u,l,a[p+8],20,1163531501),l=g(l,d,c,u,a[p+13],5,-1444681467),u=g(u,l,d,c,a[p+2],9,-51403784),c=g(c,u,l,d,a[p+7],14,1735328473),l=f(l,d=g(d,c,u,l,a[p+12],20,-1926607734),c,u,a[p+5],4,-378558),u=f(u,l,d,c,a[p+8],11,-2022574463),c=f(c,u,l,d,a[p+11],16,1839030562),d=f(d,c,u,l,a[p+14],23,-35309556),l=f(l,d,c,u,a[p+1],4,-1530992060),u=f(u,l,d,c,a[p+4],11,1272893353),c=f(c,u,l,d,a[p+7],16,-155497632),d=f(d,c,u,l,a[p+10],23,-1094730640),l=f(l,d,c,u,a[p+13],4,681279174),u=f(u,l,d,c,a[p+0],11,-358537222),c=f(c,u,l,d,a[p+3],16,-722521979),d=f(d,c,u,l,a[p+6],23,76029189),l=f(l,d,c,u,a[p+9],4,-640364487),u=f(u,l,d,c,a[p+12],11,-421815835),c=f(c,u,l,d,a[p+15],16,530742520),l=v(l,d=f(d,c,u,l,a[p+2],23,-995338651),c,u,a[p+0],6,-198630844),u=v(u,l,d,c,a[p+7],10,1126891415),c=v(c,u,l,d,a[p+14],15,-1416354905),d=v(d,c,u,l,a[p+5],21,-57434055),l=v(l,d,c,u,a[p+12],6,1700485571),u=v(u,l,d,c,a[p+3],10,-1894986606),c=v(c,u,l,d,a[p+10],15,-1051523),d=v(d,c,u,l,a[p+1],21,-2054922799),l=v(l,d,c,u,a[p+8],6,1873313359),u=v(u,l,d,c,a[p+15],10,-30611744),c=v(c,u,l,d,a[p+6],15,-1560198380),d=v(d,c,u,l,a[p+13],21,1309151649),l=v(l,d,c,u,a[p+4],6,-145523070),u=v(u,l,d,c,a[p+11],10,-1120210379),c=v(c,u,l,d,a[p+2],15,718787259),d=v(d,c,u,l,a[p+9],21,-343485551),l=l+y>>>0,d=d+m>>>0,c=c+b>>>0,u=u+S>>>0}return e.endian([l,d,c,u])};r._ff=function(e,t,i,r,n,s,a){var o=e+(t&i|~t&r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._gg=function(e,t,i,r,n,s,a){var o=e+(t&r|i&~r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._hh=function(e,t,i,r,n,s,a){var o=e+(t^i^r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._ii=function(e,t,i,r,n,s,a){var o=e+(i^(t|~r))+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._blocksize=16,r._digestsize=16,_t.exports=function(t,n){if(void 0!==t){var s=e.wordsToBytes(r(t,n));return n&&n.asBytes?s:n&&n.asString?i.bytesToString(s):e.bytesToHex(s)}}}()),_t.exports),kt=E(Ct),Dt={exports:{}},Mt={exports:{}},wt={exports:{}},Nt={exports:{}},Ot={exports:{}};function xt(){return Vt||(Vt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){return Pt||(Pt=1,e=Ot,function(e){var t={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i};function i(){var e,t,i="";for(e=0;e<32;e++)t=16*Math.random()|0,8!==e&&12!==e&&16!==e&&20!==e||(i+="-"),i+=(12===e?4:16===e?3&t|8:t).toString(16);return i}function r(e,i){var r=t[i||"all"];return r&&r.test(e)||!1}i.isUUID=r,i.VERSION="0.1.0",e.uuid=i,e.isUUID=r}(t=Ot.exports),null!==e&&(e.exports=t.uuid)),Ot.exports;var e,t}(),n=(i=r)&&i.__esModule?i:{default:i};t.default={createUUID:function(){return n.default.uuid?n.default.uuid():(0,n.default)()}},e.exports=t.default}(Nt,Nt.exports)),Nt.exports}function zt(){return At||(At=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),n=(i=xt())&&i.__esModule?i:{default:i},s=function(){function e(t){var i=t.setup,r=t.db;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._db=r,this.instanceId="pn-"+n.default.createUUID(),this.secretKey=i.secretKey||i.secret_key,this.subscribeKey=i.subscribeKey||i.subscribe_key,this.publishKey=i.publishKey||i.publish_key,this.sdkName=i.sdkName,this.sdkFamily=i.sdkFamily,this.partnerId=i.partnerId,this.setAuthKey(i.authKey),this.setCipherKey(i.cipherKey),this.setFilterExpression(i.filterExpression),this.origin=i.origin||"pubsub.pndsn.com",this.secure=i.ssl||!1,this.restore=i.restore||!1,this.proxy=i.proxy,this.keepAlive=i.keepAlive,this.keepAliveSettings=i.keepAliveSettings,this.autoNetworkDetection=i.autoNetworkDetection||!1,this.dedupeOnSubscribe=i.dedupeOnSubscribe||!1,this.maximumCacheSize=i.maximumCacheSize||100,this.customEncrypt=i.customEncrypt,this.customDecrypt=i.customDecrypt,"undefined"!=typeof location&&"https:"===location.protocol&&(this.secure=!0),this.logVerbosity=i.logVerbosity||!1,this.suppressLeaveEvents=i.suppressLeaveEvents||!1,this.announceFailedHeartbeats=i.announceFailedHeartbeats||!0,this.announceSuccessfulHeartbeats=i.announceSuccessfulHeartbeats||!1,this.useInstanceId=i.useInstanceId||!1,this.useRequestId=i.useRequestId||!1,this.requestMessageCountThreshold=i.requestMessageCountThreshold,this.setTransactionTimeout(i.transactionalRequestTimeout||15e3),this.setSubscribeTimeout(i.subscribeRequestTimeout||31e4),this.setSendBeaconConfig(i.useSendBeacon||!0),this.setPresenceTimeout(i.presenceTimeout||300),null!=i.heartbeatInterval&&this.setHeartbeatInterval(i.heartbeatInterval),this.setUUID(this._decideUUID(i.uuid))}return r(e,[{key:"getAuthKey",value:function(){return this.authKey}},{key:"setAuthKey",value:function(e){return this.authKey=e,this}},{key:"setCipherKey",value:function(e){return this.cipherKey=e,this}},{key:"getUUID",value:function(){return this.UUID}},{key:"setUUID",value:function(e){return this._db&&this._db.set&&this._db.set(this.subscribeKey+"uuid",e),this.UUID=e,this}},{key:"getFilterExpression",value:function(){return this.filterExpression}},{key:"setFilterExpression",value:function(e){return this.filterExpression=e,this}},{key:"getPresenceTimeout",value:function(){return this._presenceTimeout}},{key:"setPresenceTimeout",value:function(e){return this._presenceTimeout=e,this.setHeartbeatInterval(this._presenceTimeout/2-1),this}},{key:"setProxy",value:function(e){this.proxy=e}},{key:"getHeartbeatInterval",value:function(){return this._heartbeatInterval}},{key:"setHeartbeatInterval",value:function(e){return this._heartbeatInterval=e,this}},{key:"getSubscribeTimeout",value:function(){return this._subscribeRequestTimeout}},{key:"setSubscribeTimeout",value:function(e){return this._subscribeRequestTimeout=e,this}},{key:"getTransactionTimeout",value:function(){return this._transactionalRequestTimeout}},{key:"setTransactionTimeout",value:function(e){return this._transactionalRequestTimeout=e,this}},{key:"isSendBeaconEnabled",value:function(){return this._useSendBeacon}},{key:"setSendBeaconConfig",value:function(e){return this._useSendBeacon=e,this}},{key:"getVersion",value:function(){return"4.20.3"}},{key:"_decideUUID",value:function(e){return e||(this._db&&this._db.get&&this._db.get(this.subscribeKey+"uuid")?this._db.get(this.subscribeKey+"uuid"):"pn-"+n.default.createUUID())}}]),e}();t.default=s,e.exports=t.default}(wt,wt.exports)),wt.exports}var Lt,Rt={exports:{}};function Kt(){return Lt||(Lt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();n(zt());var r=n(null);function n(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t){var i=t.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._config=i,this._iv="0123456789012345",this._allowedKeyEncodings=["hex","utf8","base64","binary"],this._allowedKeyLengths=[128,256],this._allowedModes=["ecb","cbc"],this._defaultOptions={encryptKey:!0,keyEncoding:"utf8",keyLength:256,mode:"cbc"}}return i(e,[{key:"HMACSHA256",value:function(e){return r.default.HmacSHA256(e,this._config.secretKey).toString(r.default.enc.Base64)}},{key:"SHA256",value:function(e){return r.default.SHA256(e).toString(r.default.enc.Hex)}},{key:"_parseOptions",value:function(e){var t=e||{};return t.hasOwnProperty("encryptKey")||(t.encryptKey=this._defaultOptions.encryptKey),t.hasOwnProperty("keyEncoding")||(t.keyEncoding=this._defaultOptions.keyEncoding),t.hasOwnProperty("keyLength")||(t.keyLength=this._defaultOptions.keyLength),t.hasOwnProperty("mode")||(t.mode=this._defaultOptions.mode),-1===this._allowedKeyEncodings.indexOf(t.keyEncoding.toLowerCase())&&(t.keyEncoding=this._defaultOptions.keyEncoding),-1===this._allowedKeyLengths.indexOf(parseInt(t.keyLength,10))&&(t.keyLength=this._defaultOptions.keyLength),-1===this._allowedModes.indexOf(t.mode.toLowerCase())&&(t.mode=this._defaultOptions.mode),t}},{key:"_decodeKey",value:function(e,t){return"base64"===t.keyEncoding?r.default.enc.Base64.parse(e):"hex"===t.keyEncoding?r.default.enc.Hex.parse(e):e}},{key:"_getPaddedKey",value:function(e,t){return e=this._decodeKey(e,t),t.encryptKey?r.default.enc.Utf8.parse(this.SHA256(e).slice(0,32)):e}},{key:"_getMode",value:function(e){return"ecb"===e.mode?r.default.mode.ECB:r.default.mode.CBC}},{key:"_getIV",value:function(e){return"cbc"===e.mode?r.default.enc.Utf8.parse(this._iv):null}},{key:"encrypt",value:function(e,t,i){return this._config.customEncrypt?this._config.customEncrypt(e):this.pnEncrypt(e,t,i)}},{key:"decrypt",value:function(e,t,i){return this._config.customDecrypt?this._config.customDecrypt(e):this.pnDecrypt(e,t,i)}},{key:"pnEncrypt",value:function(e,t,i){if(!t&&!this._config.cipherKey)return e;i=this._parseOptions(i);var n=this._getIV(i),s=this._getMode(i),a=this._getPaddedKey(t||this._config.cipherKey,i);return r.default.AES.encrypt(e,a,{iv:n,mode:s}).ciphertext.toString(r.default.enc.Base64)||e}},{key:"pnDecrypt",value:function(e,t,i){if(!t&&!this._config.cipherKey)return e;i=this._parseOptions(i);var n=this._getIV(i),s=this._getMode(i),a=this._getPaddedKey(t||this._config.cipherKey,i);try{var o=r.default.enc.Base64.parse(e),l=r.default.AES.decrypt({ciphertext:o},a,{iv:n,mode:s}).toString(r.default.enc.Utf8);return JSON.parse(l)}catch(e){return null}}}]),e}();t.default=s,e.exports=t.default}(Rt,Rt.exports)),Rt.exports}var Ut,Bt,Ft={exports:{}},Ht={exports:{}},Gt={exports:{}};function Wt(){return Ut||(Ut=1,e=Gt,t=Gt.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={PNNetworkUpCategory:"PNNetworkUpCategory",PNNetworkDownCategory:"PNNetworkDownCategory",PNNetworkIssuesCategory:"PNNetworkIssuesCategory",PNTimeoutCategory:"PNTimeoutCategory",PNBadRequestCategory:"PNBadRequestCategory",PNAccessDeniedCategory:"PNAccessDeniedCategory",PNUnknownCategory:"PNUnknownCategory",PNReconnectedCategory:"PNReconnectedCategory",PNConnectedCategory:"PNConnectedCategory",PNRequestMessageCountExceededCategory:"PNRequestMessageCountExceededCategory"},e.exports=t.default),Gt.exports;var e,t}function jt(){return Bt||(Bt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),n=(i=Wt())&&i.__esModule?i:{default:i},s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._listeners=[]}return r(e,[{key:"addListener",value:function(e){this._listeners.push(e)}},{key:"removeListener",value:function(e){var t=[];this._listeners.forEach(function(i){i!==e&&t.push(i)}),this._listeners=t}},{key:"removeAllListeners",value:function(){this._listeners=[]}},{key:"announcePresence",value:function(e){this._listeners.forEach(function(t){t.presence&&t.presence(e)})}},{key:"announceStatus",value:function(e){this._listeners.forEach(function(t){t.status&&t.status(e)})}},{key:"announceMessage",value:function(e){this._listeners.forEach(function(t){t.message&&t.message(e)})}},{key:"announceNetworkUp",value:function(){var e={};e.category=n.default.PNNetworkUpCategory,this.announceStatus(e)}},{key:"announceNetworkDown",value:function(){var e={};e.category=n.default.PNNetworkDownCategory,this.announceStatus(e)}}]),e}();t.default=s,e.exports=t.default}(Ht,Ht.exports)),Ht.exports}var qt,Jt,Yt,$t={exports:{}},Qt={},Zt={exports:{}};function Xt(){return qt||(qt=1,e=Zt,t=Zt.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNPushNotificationEnabledChannelsOperation:"PNPushNotificationEnabledChannelsOperation",PNRemoveAllPushNotificationsOperation:"PNRemoveAllPushNotificationsOperation",PNWhereNowOperation:"PNWhereNowOperation",PNSetStateOperation:"PNSetStateOperation",PNHereNowOperation:"PNHereNowOperation",PNGetStateOperation:"PNGetStateOperation",PNHeartbeatOperation:"PNHeartbeatOperation",PNChannelGroupsOperation:"PNChannelGroupsOperation",PNRemoveGroupOperation:"PNRemoveGroupOperation",PNChannelsForGroupOperation:"PNChannelsForGroupOperation",PNAddChannelsToGroupOperation:"PNAddChannelsToGroupOperation",PNRemoveChannelsFromGroupOperation:"PNRemoveChannelsFromGroupOperation",PNAccessManagerGrant:"PNAccessManagerGrant",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default),Zt.exports;var e,t}function ei(){if(Jt)return Qt;Jt=1,Object.defineProperty(Qt,"__esModule",{value:!0}),Qt.getOperation=function(){return t.default.PNTimeOperation},Qt.getURL=function(){return"/time/0"},Qt.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},Qt.prepareParams=function(){return{}},Qt.isAuthSupported=function(){return!1},Qt.handleResponse=function(e,t){return{timetoken:t[0]}},Qt.validateParams=function(){};var e,t=(e=Xt())&&e.__esModule?e:{default:e};return Qt}var ti,ii,ri,ni,si={exports:{}};function ai(){if(ri)return ii;function e(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}return ri=1,ii={signPamFromParams:function(t){return(i=t,function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(i).sort()).map(function(i){return i+"="+e(t[i])}).join("&");var i},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var e=void 0,t=void 0;return{promise:new Promise(function(i,r){e=i,t=r}),reject:t,fulfill:e}},encodeString:e}}function oi(){return ni||(ni=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();o(Kt()),o(zt()),o(jt());var r=o((Yt||(Yt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();!(i=ei())||i.__esModule;var n=function(){function e(t){var i=t.timeEndpoint;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._timeEndpoint=i}return r(e,[{key:"onReconnection",value:function(e){this._reconnectionCallback=e}},{key:"startPolling",value:function(){this._timeTimer=setInterval(this._performTimeLoop.bind(this),3e3)}},{key:"stopPolling",value:function(){clearInterval(this._timeTimer)}},{key:"_performTimeLoop",value:function(){var e=this;this._timeEndpoint(function(t){t.error||(clearInterval(e._timeTimer),e._reconnectionCallback())})}}]),e}();t.default=n,e.exports=t.default}($t,$t.exports)),$t.exports)),n=o((ti||(ti=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();!(i=zt())||i.__esModule;var n=function(){function e(t){var i=t.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.hashHistory=[],this._config=i}return r(e,[{key:"getKey",value:function(e){var t=function(e){var t=0;if(0===e.length)return t;for(var i=0;i<e.length;i+=1)t=(t<<5)-t+e.charCodeAt(i),t&=t;return t}(JSON.stringify(e.payload)).toString();return e.publishMetaData.publishTimetoken+"-"+t}},{key:"isDuplicate",value:function(e){return this.hashHistory.includes(this.getKey(e))}},{key:"addEntry",value:function(e){this.hashHistory.length>=this._config.maximumCacheSize&&this.hashHistory.shift(),this.hashHistory.push(this.getKey(e))}},{key:"clearHistory",value:function(){this.hashHistory=[]}}]),e}();t.default=n,e.exports=t.default}(si,si.exports)),si.exports)),s=o(ai()),a=o(Wt());function o(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(t){var i=t.subscribeEndpoint,s=t.leaveEndpoint,a=t.heartbeatEndpoint,o=t.setStateEndpoint,l=t.timeEndpoint,d=t.config,c=t.crypto,u=t.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._listenerManager=u,this._config=d,this._leaveEndpoint=s,this._heartbeatEndpoint=a,this._setStateEndpoint=o,this._subscribeEndpoint=i,this._crypto=c,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new r.default({timeEndpoint:l}),this._dedupingManager=new n.default({config:d})}return i(e,[{key:"adaptStateChange",value:function(e,t){var i=this,r=e.state,n=e.channels,s=void 0===n?[]:n,a=e.channelGroups,o=void 0===a?[]:a;return s.forEach(function(e){e in i._channels&&(i._channels[e].state=r)}),o.forEach(function(e){e in i._channelGroups&&(i._channelGroups[e].state=r)}),this._setStateEndpoint({state:r,channels:s,channelGroups:o},t)}},{key:"adaptPresenceChange",value:function(e){var t=this,i=e.connected,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s;i?(n.forEach(function(e){t._heartbeatChannels[e]={state:{}}}),a.forEach(function(e){t._heartbeatChannelGroups[e]={state:{}}})):(n.forEach(function(e){e in t._heartbeatChannels&&delete t._heartbeatChannels[e]}),a.forEach(function(e){e in t._heartbeatChannelGroups&&delete t._heartbeatChannelGroups[e]}),!1===this._config.suppressLeaveEvents&&this._leaveEndpoint({channels:n,channelGroups:a},function(e){t._listenerManager.announceStatus(e)})),this.reconnect()}},{key:"adaptSubscribeChange",value:function(e){var t=this,i=e.timetoken,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s,o=e.withPresence,l=void 0!==o&&o;this._config.subscribeKey&&""!==this._config.subscribeKey?(i&&(this._lastTimetoken=this._currentTimetoken,this._currentTimetoken=i),"0"!==this._currentTimetoken&&0!==this._currentTimetoken&&(this._storedTimetoken=this._currentTimetoken,this._currentTimetoken=0),n.forEach(function(e){t._channels[e]={state:{}},l&&(t._presenceChannels[e]={}),t._pendingChannelSubscriptions.push(e)}),a.forEach(function(e){t._channelGroups[e]={state:{}},l&&(t._presenceChannelGroups[e]={}),t._pendingChannelGroupSubscriptions.push(e)}),this._subscriptionStatusAnnounced=!1,this.reconnect()):console&&console.log}},{key:"adaptUnsubscribeChange",value:function(e,t){var i=this,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s,o=[],l=[];n.forEach(function(e){e in i._channels&&(delete i._channels[e],o.push(e)),e in i._presenceChannels&&(delete i._presenceChannels[e],o.push(e))}),a.forEach(function(e){e in i._channelGroups&&(delete i._channelGroups[e],l.push(e)),e in i._presenceChannelGroups&&(delete i._channelGroups[e],l.push(e))}),0===o.length&&0===l.length||(!1!==this._config.suppressLeaveEvents||t||this._leaveEndpoint({channels:o,channelGroups:l},function(e){e.affectedChannels=o,e.affectedChannelGroups=l,e.currentTimetoken=i._currentTimetoken,e.lastTimetoken=i._lastTimetoken,i._listenerManager.announceStatus(e)}),0===Object.keys(this._channels).length&&0===Object.keys(this._presenceChannels).length&&0===Object.keys(this._channelGroups).length&&0===Object.keys(this._presenceChannelGroups).length&&(this._lastTimetoken=0,this._currentTimetoken=0,this._storedTimetoken=null,this._region=null,this._reconnectionManager.stopPolling()),this.reconnect())}},{key:"unsubscribeAll",value:function(e){this.adaptUnsubscribeChange({channels:this.getSubscribedChannels(),channelGroups:this.getSubscribedChannelGroups()},e)}},{key:"getHeartbeatChannels",value:function(){return Object.keys(this._heartbeatChannels)}},{key:"getHeartbeatChannelGroups",value:function(){return Object.keys(this._heartbeatChannelGroups)}},{key:"getSubscribedChannels",value:function(){return Object.keys(this._channels)}},{key:"getSubscribedChannelGroups",value:function(){return Object.keys(this._channelGroups)}},{key:"reconnect",value:function(){this._startSubscribeLoop(),this._registerHeartbeatTimer()}},{key:"disconnect",value:function(){this._stopSubscribeLoop(),this._stopHeartbeatTimer(),this._reconnectionManager.stopPolling()}},{key:"_registerHeartbeatTimer",value:function(){this._stopHeartbeatTimer(),0!==this._config.getHeartbeatInterval()&&(this._performHeartbeatLoop(),this._heartbeatTimer=setInterval(this._performHeartbeatLoop.bind(this),1e3*this._config.getHeartbeatInterval()))}},{key:"_stopHeartbeatTimer",value:function(){this._heartbeatTimer&&(clearInterval(this._heartbeatTimer),this._heartbeatTimer=null)}},{key:"_performHeartbeatLoop",value:function(){var e=this,t=[];t=(t=t.concat(this.getHeartbeatChannels())).concat(this.getSubscribedChannels());var i=[];i=(i=i.concat(this.getHeartbeatChannelGroups())).concat(this.getSubscribedChannelGroups());var r={};0===t.length&&0===i.length||(this.getSubscribedChannels().forEach(function(t){var i=e._channels[t].state;Object.keys(i).length&&(r[t]=i)}),this.getSubscribedChannelGroups().forEach(function(t){var i=e._channelGroups[t].state;Object.keys(i).length&&(r[t]=i)}),this._heartbeatEndpoint({channels:t,channelGroups:i,state:r},function(t){t.error&&e._config.announceFailedHeartbeats&&e._listenerManager.announceStatus(t),t.error&&e._config.autoNetworkDetection&&e._isOnline&&(e._isOnline=!1,e.disconnect(),e._listenerManager.announceNetworkDown(),e.reconnect()),!t.error&&e._config.announceSuccessfulHeartbeats&&e._listenerManager.announceStatus(t)}.bind(this)))}},{key:"_startSubscribeLoop",value:function(){this._stopSubscribeLoop();var e=[],t=[];if(Object.keys(this._channels).forEach(function(t){return e.push(t)}),Object.keys(this._presenceChannels).forEach(function(t){return e.push(t+"-pnpres")}),Object.keys(this._channelGroups).forEach(function(e){return t.push(e)}),Object.keys(this._presenceChannelGroups).forEach(function(e){return t.push(e+"-pnpres")}),0!==e.length||0!==t.length){var i={channels:e,channelGroups:t,timetoken:this._currentTimetoken,filterExpression:this._config.filterExpression,region:this._region};this._subscribeCall=this._subscribeEndpoint(i,this._processSubscribeResponse.bind(this))}}},{key:"_processSubscribeResponse",value:function(e,t){var i=this;if(e.error)e.category===a.default.PNTimeoutCategory?this._startSubscribeLoop():e.category===a.default.PNNetworkIssuesCategory?(this.disconnect(),e.error&&this._config.autoNetworkDetection&&this._isOnline&&(this._isOnline=!1,this._listenerManager.announceNetworkDown()),this._reconnectionManager.onReconnection(function(){i._config.autoNetworkDetection&&!i._isOnline&&(i._isOnline=!0,i._listenerManager.announceNetworkUp()),i.reconnect(),i._subscriptionStatusAnnounced=!0;var t={category:a.default.PNReconnectedCategory,operation:e.operation,lastTimetoken:i._lastTimetoken,currentTimetoken:i._currentTimetoken};i._listenerManager.announceStatus(t)}),this._reconnectionManager.startPolling(),this._listenerManager.announceStatus(e)):e.category===a.default.PNBadRequestCategory?(this._stopHeartbeatTimer(),this._listenerManager.announceStatus(e)):this._listenerManager.announceStatus(e);else{if(this._storedTimetoken?(this._currentTimetoken=this._storedTimetoken,this._storedTimetoken=null):(this._lastTimetoken=this._currentTimetoken,this._currentTimetoken=t.metadata.timetoken),!this._subscriptionStatusAnnounced){var r={};r.category=a.default.PNConnectedCategory,r.operation=e.operation,r.affectedChannels=this._pendingChannelSubscriptions,r.subscribedChannels=this.getSubscribedChannels(),r.affectedChannelGroups=this._pendingChannelGroupSubscriptions,r.lastTimetoken=this._lastTimetoken,r.currentTimetoken=this._currentTimetoken,this._subscriptionStatusAnnounced=!0,this._listenerManager.announceStatus(r),this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[]}var n=t.messages||[],o=this._config,l=o.requestMessageCountThreshold,d=o.dedupeOnSubscribe;if(l&&n.length>=l){var c={};c.category=a.default.PNRequestMessageCountExceededCategory,c.operation=e.operation,this._listenerManager.announceStatus(c)}n.forEach(function(e){var t=e.channel,r=e.subscriptionMatch,n=e.publishMetaData;if(t===r&&(r=null),d){if(i._dedupingManager.isDuplicate(e))return;i._dedupingManager.addEntry(e)}if(s.default.endsWith(e.channel,"-pnpres")){var a={channel:null,subscription:null};a.actualChannel=null!=r?t:null,a.subscribedChannel=null!=r?r:t,t&&(a.channel=t.substring(0,t.lastIndexOf("-pnpres"))),r&&(a.subscription=r.substring(0,r.lastIndexOf("-pnpres"))),a.action=e.payload.action,a.state=e.payload.data,a.timetoken=n.publishTimetoken,a.occupancy=e.payload.occupancy,a.uuid=e.payload.uuid,a.timestamp=e.payload.timestamp,e.payload.join&&(a.join=e.payload.join),e.payload.leave&&(a.leave=e.payload.leave),e.payload.timeout&&(a.timeout=e.payload.timeout),i._listenerManager.announcePresence(a)}else{var o={channel:null,subscription:null};o.actualChannel=null!=r?t:null,o.subscribedChannel=null!=r?r:t,o.channel=t,o.subscription=r,o.timetoken=n.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),i._config.cipherKey?o.message=i._crypto.decrypt(e.payload):o.message=e.payload,i._listenerManager.announceMessage(o)}}),this._region=t.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}]),e}();t.default=l,e.exports=t.default}(Ft,Ft.exports)),Ft.exports}var li,di={exports:{}};var ci,ui,pi,hi,gi,fi={},vi={},yi={},mi={};function bi(){return gi||(gi=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),r=K(zt()),n=K(Kt()),s=K(oi()),a=K(jt()),o=K((li||(li=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var s=e.networking,l=e.config,d=null,c=null,u={};t.getOperation()===n.default.PNTimeOperation||t.getOperation()===n.default.PNChannelGroupsOperation?d=arguments.length<=2?void 0:arguments[2]:(u=arguments.length<=2?void 0:arguments[2],d=arguments.length<=3?void 0:arguments[3]),"undefined"==typeof Promise||d||(c=r.default.createPromise());var p=t.validateParams(e,u);if(p)return d?d(o(p)):c?(c.reject(new a("Validation failed, check status for details",o(p))),c.promise):void 0;var h=t.prepareParams(e,u),g=function(e,t,i){return e.usePost&&e.usePost(t,i)?e.postURL(t,i):e.getURL(t,i)}(t,e,u),f=void 0,v={url:g,operation:t.getOperation(),timeout:t.getRequestTimeout(e)};h.uuid=l.UUID,h.pnsdk=function(e){if(e.sdkName)return e.sdkName;var t="PubNub-JS-"+e.sdkFamily;return e.partnerId&&(t+="-"+e.partnerId),t+"/"+e.getVersion()}(l),l.useInstanceId&&(h.instanceid=l.instanceId),l.useRequestId&&(h.requestid=i.default.createUUID()),t.isAuthSupported()&&l.getAuthKey()&&(h.auth=l.getAuthKey()),l.secretKey&&function(e,t,i){var n=e.config,s=e.crypto;i.timestamp=Math.floor((new Date).getTime()/1e3);var a=n.subscribeKey+"\n"+n.publishKey+"\n"+t+"\n";a+=r.default.signPamFromParams(i);var o=s.HMACSHA256(a);o=(o=o.replace(/\+/g,"-")).replace(/\//g,"_"),i.signature=o}(e,g,h);var y=function(i,r){if(i.error)d?d(i):c&&c.reject(new a("PubNub call failed, check status for details",i));else{var n=t.handleResponse(e,r,u);d?d(i,n):c&&c.fulfill(n)}};if(t.usePost&&t.usePost(e,u)){var m=t.postPayload(e,u);f=s.POST(h,m,v,y)}else f=t.useDelete&&t.useDelete()?s.DELETE(h,v,y):s.GET(h,v,y);return t.getOperation()===n.default.PNSubscribeOperation?f:c?c.promise:void 0};var i=s(xt()),r=s(ai());s(zt());var n=s(Xt());function s(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return r.name=r.constructor.name,r.status=i,r.message=t,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(e,Error),e}();function o(e){return(t={message:e}).type="validationError",t.error=!0,t;var t}e.exports=t.default}(di,di.exports)),di.exports)),l=R(null),d=R(null),c=R(null),u=R(null),p=R(null),h=R(null),g=R(null),f=R(null),v=R(null),y=function(){if(ci)return fi;ci=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.getOperation=function(){return e.default.PNUnsubscribeOperation},fi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},fi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/presence/sub-key/"+r.subscribeKey+"/channel/"+t.default.encodeString(a)+"/leave"},fi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},fi.isAuthSupported=function(){return!0},fi.prepareParams=function(e,t){var i=t.channelGroups,r=void 0===i?[]:i,n={};return r.length>0&&(n["channel-group"]=r.join(",")),n},fi.handleResponse=function(){return{}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return fi}(),m=R(y),b=R(null),S=function(){if(ui)return vi;ui=1,Object.defineProperty(vi,"__esModule",{value:!0}),vi.getOperation=function(){return e.default.PNHeartbeatOperation},vi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},vi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/presence/sub-key/"+r.subscribeKey+"/channel/"+t.default.encodeString(a)+"/heartbeat"},vi.isAuthSupported=function(){return!0},vi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},vi.prepareParams=function(e,t){var i=t.channelGroups,r=void 0===i?[]:i,n=t.state,s=void 0===n?{}:n,a=e.config,o={};return r.length>0&&(o["channel-group"]=r.join(",")),o.state=JSON.stringify(s),o.heartbeat=a.getPresenceTimeout(),o},vi.handleResponse=function(){return{}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return vi}(),_=R(S),T=R(null),E=R(null),I=R(null),P=R(null),V=R(null),A=function(){if(pi)return yi;pi=1,Object.defineProperty(yi,"__esModule",{value:!0});var e="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};yi.getOperation=function(){return t.default.PNPublishOperation},yi.validateParams=function(e,t){var i=e.config,r=t.message;return t.channel?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Message":"Missing Channel"},yi.usePost=function(e,t){var i=t.sendByPost;return void 0!==i&&i},yi.getURL=function(e,t){var r=e.config,s=t.channel,a=n(e,t.message);return"/publish/"+r.publishKey+"/"+r.subscribeKey+"/0/"+i.default.encodeString(s)+"/0/"+i.default.encodeString(a)},yi.postURL=function(e,t){var r=e.config,n=t.channel;return"/publish/"+r.publishKey+"/"+r.subscribeKey+"/0/"+i.default.encodeString(n)+"/0"},yi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},yi.isAuthSupported=function(){return!0},yi.postPayload=function(e,t){return n(e,t.message)},yi.prepareParams=function(t,i){var r=i.meta,n=i.replicate,s=void 0===n||n,a=i.storeInHistory,o=i.ttl,l={};return null!=a&&(l.store=a?"1":"0"),o&&(l.ttl=o),!1===s&&(l.norep="true"),r&&"object"===(void 0===r?"undefined":e(r))&&(l.meta=JSON.stringify(r)),l},yi.handleResponse=function(e,t){return{timetoken:t[2]}};var t=r(Xt()),i=r(ai());function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){var i=e.crypto,r=e.config,n=JSON.stringify(t);return r.cipherKey&&(n=i.encrypt(n),n=JSON.stringify(n)),n}return yi}(),C=R(A),k=R(null),D=R(null),M=R(null),w=R(ei()),N=function(){if(hi)return mi;hi=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.getOperation=function(){return e.default.PNSubscribeOperation},mi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},mi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/subscribe/"+r.subscribeKey+"/"+t.default.encodeString(a)+"/0"},mi.getRequestTimeout=function(e){return e.config.getSubscribeTimeout()},mi.isAuthSupported=function(){return!0},mi.prepareParams=function(e,t){var i=e.config,r=t.channelGroups,n=void 0===r?[]:r,s=t.timetoken,a=t.filterExpression,o=t.region,l={heartbeat:i.getPresenceTimeout()};return n.length>0&&(l["channel-group"]=n.join(",")),a&&a.length>0&&(l["filter-expr"]=a),s&&(l.tt=s),o&&(l.tr=o),l},mi.handleResponse=function(e,t){var i=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};i.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:i,metadata:r}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return mi}(),O=R(N),x=K(Xt()),z=K(Wt()),L=K(xt());function R(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}function K(e){return e&&e.__esModule?e:{default:e}}var U=function(){function e(t){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var y=t.db,S=t.networking,A=this._config=new r.default({setup:t,db:y}),N=new n.default({config:A});S.init(A);var x={config:A,networking:S,crypto:N},z=o.default.bind(this,x,w),L=o.default.bind(this,x,m),R=o.default.bind(this,x,_),K=o.default.bind(this,x,E),U=o.default.bind(this,x,O),B=this._listenerManager=new a.default,F=new s.default({timeEndpoint:z,leaveEndpoint:L,heartbeatEndpoint:R,setStateEndpoint:K,subscribeEndpoint:U,crypto:x.crypto,config:x.config,listenerManager:B});this.addListener=B.addListener.bind(B),this.removeListener=B.removeListener.bind(B),this.removeAllListeners=B.removeAllListeners.bind(B),this.channelGroups={listGroups:o.default.bind(this,x,u),listChannels:o.default.bind(this,x,p),addChannels:o.default.bind(this,x,l),removeChannels:o.default.bind(this,x,d),deleteGroup:o.default.bind(this,x,c)},this.push={addChannels:o.default.bind(this,x,h),removeChannels:o.default.bind(this,x,g),deleteDevice:o.default.bind(this,x,v),listChannels:o.default.bind(this,x,f)},this.hereNow=o.default.bind(this,x,I),this.whereNow=o.default.bind(this,x,b),this.getState=o.default.bind(this,x,T),this.setState=F.adaptStateChange.bind(F),this.grant=o.default.bind(this,x,V),this.audit=o.default.bind(this,x,P),this.publish=o.default.bind(this,x,C),this.fire=function(e,t){return e.replicate=!1,e.storeInHistory=!1,i.publish(e,t)},this.history=o.default.bind(this,x,k),this.deleteMessages=o.default.bind(this,x,D),this.fetchMessages=o.default.bind(this,x,M),this.time=z,this.subscribe=F.adaptSubscribeChange.bind(F),this.presence=F.adaptPresenceChange.bind(F),this.unsubscribe=F.adaptUnsubscribeChange.bind(F),this.disconnect=F.disconnect.bind(F),this.reconnect=F.reconnect.bind(F),this.destroy=function(e){F.unsubscribeAll(e),F.disconnect()},this.stop=this.destroy,this.unsubscribeAll=F.unsubscribeAll.bind(F),this.getSubscribedChannels=F.getSubscribedChannels.bind(F),this.getSubscribedChannelGroups=F.getSubscribedChannelGroups.bind(F),this.encrypt=N.encrypt.bind(N),this.decrypt=N.decrypt.bind(N),this.getAuthKey=x.config.getAuthKey.bind(x.config),this.setAuthKey=x.config.setAuthKey.bind(x.config),this.setCipherKey=x.config.setCipherKey.bind(x.config),this.getUUID=x.config.getUUID.bind(x.config),this.setUUID=x.config.setUUID.bind(x.config),this.getFilterExpression=x.config.getFilterExpression.bind(x.config),this.setFilterExpression=x.config.setFilterExpression.bind(x.config),this.setHeartbeatInterval=x.config.setHeartbeatInterval.bind(x.config),S.hasModule("proxy")&&(this.setProxy=function(e){x.config.setProxy(e),i.reconnect()})}return i(e,[{key:"getVersion",value:function(){return this._config.getVersion()}},{key:"networkDownDetected",value:function(){this._listenerManager.announceNetworkDown(),this._config.restore?this.disconnect():this.destroy(!0)}},{key:"networkUpDetected",value:function(){this._listenerManager.announceNetworkUp(),this.reconnect()}}],[{key:"generateUUID",value:function(){return L.default.createUUID()}}]),e}();U.OPERATIONS=x.default,U.CATEGORIES=z.default,t.default=U,e.exports=t.default}(Mt,Mt.exports)),Mt.exports}var Si,_i={exports:{}};var Ti,Ei,Ii,Pi={exports:{}},Vi={},Ai=(Ii||(Ii=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=o(bi()),r=o((Si||(Si=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();n(zt());var r=n(Wt());function n(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._modules={},Object.keys(t).forEach(function(e){i._modules[e]=t[e].bind(i)})}return i(e,[{key:"init",value:function(e){this._config=e,this._maxSubDomain=20,this._currentSubDomain=Math.floor(Math.random()*this._maxSubDomain),this._providedFQDN=(this._config.secure?"https://":"http://")+this._config.origin,this._coreParams={},this.shiftStandardOrigin()}},{key:"nextOrigin",value:function(){return-1===this._providedFQDN.indexOf("pubsub.")?this._providedFQDN:(this._currentSubDomain=this._currentSubDomain+1,this._currentSubDomain>=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e));var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,i,r){return this._modules.post(e,t,i,r)}},{key:"GET",value:function(e,t,i){return this._modules.get(e,t,i)}},{key:"DELETE",value:function(e,t,i){return this._modules.del(e,t,i)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}]),e}();t.default=s,e.exports=t.default}(_i,_i.exports)),_i.exports)),n=function(){return Ti||(Ti=1,e=Pi,t=Pi.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){try{return localStorage.getItem(e)}catch(e){return null}},set:function(e,t){try{return localStorage.setItem(e,t)}catch(e){return null}}},e.exports=t.default),Pi.exports;var e,t}(),s=o(n),a=function(){if(Ei)return Vi;function e(e){var t=[];for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];null!=r&&t.push(encodeURIComponent(i)+"="+encodeURIComponent(r))}return t.join("&")}function t(e,t,i,r,n,s){var a=this,o=new XMLHttpRequest,l=t+(i?(t.indexOf("?")>=0?"&":"?")+i:""),d=!1,c=!1;function u(e,t){if(!c&&!d){c=!0;var i={};return i.error=null!==e,i.operation=n.operation,o.status&&(i.statusCode=o.status),e?(i.errorData=e,i.category=a._detectErrorCategory(e),s(i,null)):s(i,t)}}o.open(e,l,!0),o.timeout=n.timeout,o.onreadystatechange=function(){if(4===o.readyState){var e=o.status;if(e>=200&&e<300){var t;try{t=JSON.parse(o.responseText)}catch(t){return u({status:e,response:{}},null)}return t&&1===t.error&&t.status&&t.message&&t.service?u({status:t.status,response:{}},null):u(null,t)}return u(0===e?{status:0}:{status:e,response:{badRequest:400===e,forbidden:403===e}},null)}},o.ontimeout=function(){u({timeout:!0},null)},o.onerror=function(){u({status:0},null)};var p=null;null!=r&&(p="string"==typeof r?r:JSON.stringify(r),o.setRequestHeader("Content-Type","application/json"));try{o.send(p)}catch(e){u({status:0},null)}return{abort:function(){d=!0;try{o.abort()}catch(e){}}}}return Ei=1,Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.get=function(i,r,n){return t.call(this,"GET",this.getStandardOrigin()+r.url,e(i),null,r,n)},Vi.post=function(i,r,n,s){return t.call(this,"POST",this.getStandardOrigin()+n.url,e(i),r,n,s)},Vi.del=function(i,r,n){return t.call(this,"DELETE",this.getStandardOrigin()+r.url,e(i),null,r,n)},Vi}();function o(e){return e&&e.__esModule?e:{default:e}}function l(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var i=e.listenToBrowserNetworkEvents,n=void 0===i||i;e.db=s.default,e.sdkFamily="Web",e.networking=new r.default({del:a.del,get:a.get,post:a.post,sendBeacon:l});var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n&&(window.addEventListener("offline",function(){o.networkDownDetected()}),window.addEventListener("online",function(){o.networkUpDetected()})),o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(i.default);t.default=d,e.exports=t.default}(Dt,Dt.exports)),Dt.exports),Ci=E(Ai);const ki=["PNAccessDeniedCategory","PNTimeoutCategory","PNNetworkIssuesCategory","PNBadRequestCategory","PNMalformedResponseCategory","PNDecryptionErrorCategory","PNTLSConnectionFailedCategory","PNTLSUntrustedCertificateCategory","PNUnexpectedDisconnectCategory","PNNetworkDownCategory","PNNetworkUpCategory"];class Di extends ht{constructor(e){super(e),this.pubnub=void 0,this.channelId=void 0,this._synchronousPublish=!1,this.generateChannel()}connect(e){VizbeeSDK.logger.debug("PubnubSync::appId - "+this.appConfig.appId+" , deviceId - "+this.appConfig.deviceId),void 0===this.pubnub&&(VizbeeSDK.logger.debug("PubnubSync::connect - initializing pubnub ..."),this.pubnub=new Ci({publishKey:this.appConfig.pub_key,subscribeKey:this.appConfig.sub_key,ssl:!0}),this.filterOwnMessages());let t=5;this.pubnub.addListener({status:i=>{"PNConnectedCategory"!==i.category&&"PNReconnectedCategory"!==i.category&&"PNNetworkUpCategory"!==i.category||(t=5),"PNConnectedCategory"===i.category?(this.dispatchReceive(new gt(ft.SYNC_CONNECT,{})),e(!0)):ki.indexOf(i.category)>=0&&(VizbeeSDK.logger.error("PubnubSync.Connect - PUBNUB.subscribe() error = ",i," with retries = ",t),t>0&&(t--,this.subscribePubnub()))},message:this.messageHandler.bind(this),presence:e=>{}}),this.subscribePubnub()}disconnect(){this.pubnub&&this.channelId&&(VizbeeSDK.logger.debug("PubnubSync::disconnect - invoking disconnect"),this.pubnub.unsubscribe({channels:[this.channelId]}),this.pubnub=void 0,super.disconnect())}send(e){if(this.pubnub&&this.channelId){if(this._synchronousPublish)return void this.sendSynchronously(e);this.pubnub.publish({message:e,channel:this.channelId,sendByPost:!1,storeInHistory:!1,meta:{uuid:this.pubnub.getUUID()}},(e,t)=>{e.error&&VizbeeSDK.logger.error("CommManager:CommManager - PUBNUB.publish() error")})}}enableSynchronousPublish(){this._synchronousPublish=!0}sendSynchronously(e){if(this.pubnub&&this.channelId)try{var t=this.appConfig.pub_key,i=this.appConfig.sub_key,r=this.pubnub.getUUID(),n="?uuid="+encodeURIComponent(r)+"&store=0&meta="+encodeURIComponent(JSON.stringify({uuid:r})),s="https://ps.pndsn.com/publish/"+t+"/"+i+"/0/"+this.channelId+"/0",a=JSON.stringify(e),o=s+"/"+encodeURIComponent(a)+n;if("function"==typeof fetch)return fetch(o,{method:"GET",keepalive:!0,mode:"no-cors"}).catch(function(){}),void VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via keepalive fetch");if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon&&navigator.sendBeacon(s+n,a))return void VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via sendBeacon");var l=new XMLHttpRequest;l.open("GET",o,!1),l.send(),VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via synchronous XHR")}catch(e){VizbeeSDK.logger.error("PubnubSync::sendSynchronously - error publishing on teardown",e)}}generateChannel(){this.appConfig&&(this.channelId=(""+kt(this.appConfig.appId+":"+this.appConfig.deviceId)).toLowerCase()),VizbeeSDK.logger.info("PubnubSync::generateChannel",this.channelId)}subscribePubnub(){VizbeeSDK.logger.debug("PubnubSync::subscribePubnub - invoking pubnub subscribe"),this.pubnub&&this.channelId&&(VizbeeSDK.logger.debug("PubnubSync::subscribePubnub - subscribing..."),this.pubnub.subscribe({channels:[this.channelId]}))}filterOwnMessages(){if(this.pubnub){let e="uuid != '";e=e.concat(this.pubnub.getUUID()).concat("'"),this.pubnub.setFilterExpression(e)}}messageHandler(e,t,i){VizbeeSDK.logger.verbose("PubnubSync::messageHandler",e);let r=e?e.message:{};St.verifyDeviceId(),this.dispatchReceive(new gt(ft.SYNC_MESSAGE,r))}}class Mi extends ht{constructor(e){super(e),this.messageBus=void 0}connect(e){VizbeeTV.tv.config.vizbeeCustomChannel&&(this.messageBus=VizbeeTV.tv.config.vizbeeCustomChannel,this.messageBus.onMessage=e=>{e&&e.data&&(VizbeeSDK.logger.debug("GoogleCastSync::connect",e.senderId,e.data),this.dispatchReceive(new gt(ft.SYNC_MESSAGE,JSON.parse(e.data))))},this.dispatchReceive(new gt(ft.SYNC_CONNECT,{})),e(!0))}disconnect(){this.messageBus=void 0}send(e){try{this.messageBus&&e&&(VizbeeSDK.logger.debug("GoogleCastSync::send",e),this.messageBus.broadcast(JSON.stringify(e)))}catch(e){VizbeeSDK.logger.error("GoogleCastSync::send - Error while sending message",e)}}}class wi extends ht{constructor(e){super(e),this.syncInstances=[]}connect(e){for(let t of this.syncInstances)t.connect(e)}disconnect(){for(let e of this.syncInstances)e.disconnect()}send(e){for(let t of this.syncInstances)t.send(e)}addSyncInstance(e){this.syncInstances.push(e),this.setReceiveListener(e)}setReceiveListener(e){e.onReceive=e=>{this.dispatchReceive.call(this,e)}}}class Ni extends ht{constructor(e,t){if(!(e instanceof ht))throw new TypeError("BaseSyncExtension::constructor() - classToExtend must be instance of BaseSync.");super(t),this.extendedClass=e,this.extendedClass.onReceive=e=>{this.onReceiveHandler.call(this,e)}}connect(e){this.extendedClass.connect(e)}disconnect(){this.extendedClass.disconnect()}send(e){VizbeeSDK.logger.verbose(this._getLogPrefix("send")+" - FORWARDING OUT send message",e),this.extendedClass.send(e)}get baseSync(){return this.extendedClass instanceof Ni?this.extendedClass.baseSync:this.extendedClass}onReceiveHandler(e){if(!e||!e.data)return void VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - NULL receive event",e);let t;e.type===ft.SYNC_MESSAGE?(t=this.handleSyncReceiveEvent(e),t?(VizbeeSDK.logger.verbose(this._getLogPrefix("onReceive")+" - FORWARDING IN sync receive event",t),this.dispatchReceive.call(this,t)):VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - DROPPING receive event",e)):(t=this.handleNonSyncReceiveEvent(e),t?(VizbeeSDK.logger.verbose(this._getLogPrefix("onReceive")+" - FORWARDING IN non-sync receive event",t),this.dispatchReceive.call(this,t)):VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - DROPPING non-sync receive event",e))}handleSyncReceiveEvent(e){return e}handleNonSyncReceiveEvent(e){return e}getClassName(){return this.constructor.name}_getLogPrefix(e){return(this.getClassName()+"::"+e+" ").slice(0,40)}}class Oi extends Ni{constructor(e,t){super(e,t),this.txIdMap={}}handleSyncReceiveEvent(e){if(this.isValidMessage(e.data))return e}isValidMessage(e){let t,i,r,n,s=!1;if(!e)return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - invalid message",e),s;if(!P.isObject(e.h))return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - invalid message head",e),s;if(t=e.h.id,i=e.h.tx,r=e.h.ss,!P.isString(t))return VizbeeSDK.logger.error("SanitizeHeaderRecvExtension:isValidMessage - invalid message id",t,e),s;if(!P.isNumber(i))return VizbeeSDK.logger.error("SanitizeHeaderRecvExtension:isValidMessage - invalid message tx",i,e),s;if(n=t,r&&(n=r+n),0===i)this.txIdMap[n]=i;else{if(this.txIdMap[n]>=i)return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - duplicate message",i,this.txIdMap[n]),s;this.txIdMap[n]=i}return!0}}class xi extends Ni{constructor(e,t){super(e,t)}handleSyncReceiveEvent(e){if(this.isValidMessage(e.data))return this.sanitize(e)}isValidMessage(e){let t=!1,i=e.b;if(!P.isObject(i))return t;if(!P.isObject(i.cmd))return t;if(!P.isString(i.cmd.name)||!P.isString(i.cmd.ns))return t;if("start_video"==i.cmd.name){let e=i.vinfo;if(!P.isObject(e))return t;if(!P.isString(e.id)&&!P.isString(e.url))return t}return t=!0,t}sanitize(e){let t=e.data,i=t.b.cmd;return i.name=i.name.toLowerCase(),i.ns=i.ns.toLowerCase(),i.type=i.type?i.type.toLowerCase():null,"exit"==i.name&&(i.param=i.param.toLowerCase()),t.b.cmd=i,e.data=t,e}}class zi extends Ni{constructor(e,t){super(e,t)}getActiveSenders(){throw new TypeError("BaseSyncWithPresence::getSenders() - Abstract method.")}getActiveSendersCount(){throw new TypeError("BaseSyncWithPresence::getActiveSendersCount() - Abstract method.")}}class Li extends zi{constructor(e,t){if(!(e instanceof zi))throw new TypeError("BaseSyncWithPresenceExtension::constructor() - classToExtend must be instance of BaseSyncWithPresence.");super(e,t)}getActiveSenders(){return this.extendedClass.getActiveSenders()}getActiveSendersCount(){return this.extendedClass.getActiveSendersCount()}}class Ri{static decodeVideoInfo(e){if(!e)return;if(!e.vinfo)return;let t={islive:!1,starttime:0,isContinuedVideo:!1};if(t.id=e.vinfo.id,t.videourl=e.vinfo.url,e.vinfo.islive&&(t.islive=e.vinfo.islive),e.vinfo.deeplink&&(t.deeplink=e.vinfo.deeplink),!P.isUndefined(e.cmd)){var i=0;P.isUndefined(e.cmd.param)||(i=parseInt(e.cmd.param,10),isNaN(i)&&(i=0),i<0&&(i=0)),t.starttime=i}if(e.vinfoext){if(e.vinfoext.cuepoints&&(t.cuepoints=e.vinfoext.cuepoints),e.vinfoext.title&&(t.title=e.vinfoext.title),e.vinfoext.subtitle&&(t.subtitle=e.vinfoext.subtitle),e.vinfoext.tracks){let i=P.get(e,["vinfoext","tracks","currentAudioTrack"]);i&&(t.preferredTracks={},t.preferredTracks.currentAudioTrack={label:i.displayName,lang:i.languageCode,id:i.screenTrackId})}e.vinfoext.imgurl&&(t.imgurl=e.vinfoext.imgurl),e.vinfoext.desc&&(t.desc=e.vinfoext.desc),e.vinfoext.customstreaminfo&&(t.customstreaminfo=e.vinfoext.customstreaminfo),e.vinfoext.custommetadata&&(t.custommetadata=e.vinfoext.custommetadata),e.vinfoext.drmtype&&(t.drmtype=e.vinfoext.drmtype),e.vinfoext.protocoltype&&(t.protocoltype=e.vinfoext.protocoltype),e.vinfoext.drmlicenseurl&&(t.drmlicenseurl=e.vinfoext.drmlicenseurl),e.vinfoext.drmcustomdata&&(t.drmcustomdata=e.vinfoext.drmcustomdata)}return t}static encodeVideoInfo(e){if(!e)return;let t={};return t.vinfo={id:e.id,islive:e.islive,url:e.videourl},t.vinfoext={videostarttime:e.starttime||0,imgurl:e.imgurl?e.imgurl:"",title:e.title?e.title:"",subtitle:e.subtitle?e.subtitle:"",desc:e.desc?e.desc:"",isContinuedVideo:null!=e.isContinuedVideo&&e.isContinuedVideo,customstreaminfo:e.customstreaminfo?e.customstreaminfo:{},custommetadata:e.custommetadata?e.custommetadata:{},drmtype:e.drmtype?e.drmtype:"NONE",drmlicenseurl:e.drmlicenseurl?e.drmlicenseurl:"",drmcustomdata:e.drmcustomdata?e.drmcustomdata:{},cuepoints:e.cuepoints?e.cuepoints:[]},t}static addInfoFromHeader(e,t){if(!e||!t)return e;let i=P.clone(t);return e.senderInfo=P.omit(i,["tx","ss"]),e}static encodeEventCmd(e){if(!e)return;let t={cmd:{ns:"video",type:"req",name:"event",param:""},einfo:{type:e.type,data:e.data}};return{type:ft.SYNC_MESSAGE,data:{h:{},b:t}}}static encodeStartVideoCmd(e){if(!e)return;e.starttime=e.starttime||0;let t={cmd:{ns:"video",type:"req",name:"start_video",param:e.starttime},internal:{videoInfo:e,startVideoSource:"queue_manager"}};return{type:ft.SYNC_MESSAGE,data:{h:{},b:t}}}static encodeVideoStatus(e){if(!e)return;let t={cmd:{name:"status",ns:"video",type:"upd"},vstatus:{du:0,id:e.id,po:-1,st:"BUFFERING",vol:100,cc:0,tr:{},er:{}}};return t=P.extend(t,Ri.encodeVideoInfo(e)),t}}class Ki extends Li{constructor(e,t){super(e,t)}handleSyncReceiveEvent(e){if("start_video"==e.data.b.cmd.name){let t=Ri.decodeVideoInfo(e.data.b);t&&(t=Ri.addInfoFromHeader(t,e.data.h)),e.data.b.internal={videoInfo:t,startVideoSource:"default",queueInfo:this._createQueueInfo(e.data)}}return e}_createQueueInfo(e){let t={id:"default",name:"default",description:"default",startIndex:0,items:[]},i=Ri.decodeVideoInfo(e.b);return i&&(i=Ri.addInfoFromHeader(i,e.h)),t.items.push(i),t}}class Ui extends zi{constructor(e,t){VizbeeSDK.logger.d("UpdatePresenceRecvExtension","constructor"),super(e,t),this.currentAppId=t.appId,this._sentFirstHelloCheck=!1,this._sentSecondHelloCheck=!1,this._senderMap={},this._presenceIntervalTimer=void 0,this._previousSenderMapCount=0,this._startPresenceTimer()}getActiveSenders(){return this._senderMap}getActiveSendersCount(){return Object.keys(this._senderMap||{}).length}disconnect(){VizbeeSDK.logger.d("UpdatePresenceRecvExtension","disconnect"),this._senderMap={},this._previousSenderMapCount=0,this._stopPresenceTimer(),super.disconnect()}handleSyncReceiveEvent(e){let t=e.data;return"exit"===t.b.cmd.name?this._senderMap=P.omit(this._senderMap,P.keys(this._senderMap).filter(e=>e===t.h.id)):(this._sentFirstHelloCheck=!1,this._sentSecondHelloCheck=!1,this._senderMap[t.h.id]=t.h,this._senderMap[t.h.id].appId=this.currentAppId,this._senderMap[t.h.id].lastMsgReceivedTimeInMs=Date.now(),this._startPresenceTimer()),e}_startPresenceTimer(){this._stopPresenceTimer(),this._presenceIntervalTimer=window.setInterval(()=>{this._updatePresence()},1e3)}_stopPresenceTimer(){window.clearInterval(this._presenceIntervalTimer),this._presenceIntervalTimer=void 0}_checkForSenders(){!this._sentFirstHelloCheck&&this._shouldSendHelloCheckMessage(15e3)?(this._sendHelloCheckMessage(),this._sentFirstHelloCheck=!0):!this._sentSecondHelloCheck&&this._shouldSendHelloCheckMessage(25e3)&&(this._sendHelloCheckMessage(),this._sentSecondHelloCheck=!0)}_shouldSendHelloCheckMessage(e){if(0==Object.keys(this._senderMap||{}).length)return!1;let t=Date.now(),i=P.keys(this._senderMap).filter(i=>this._senderMap[i]&&null!=this._senderMap[i].lastMsgReceivedTimeInMs&&t-this._senderMap[i].lastMsgReceivedTimeInMs>e);return Object.keys(i).length>0}_sendHelloCheckMessage(){this.dispatchReceive(new gt(ft.SYNC_MESSAGE,{b:{cmd:{ns:"video",name:"hello",type:"int"},hstatus:{id:this.appConfig.deviceId,type:"SCREEN",vip:"false"}}}))}_updatePresence(){this._checkForSenders();let e=Date.now();if(this._senderMap=P.omit(this._senderMap,P.keys(this._senderMap).filter(t=>this._senderMap[t]&&null!=this._senderMap[t].lastMsgReceivedTimeInMs&&e-this._senderMap[t].lastMsgReceivedTimeInMs>3e4)),0==Object.keys(this._senderMap||{}).length)return VizbeeSDK.logger.d("UpdatePresenceRecvExtension","_updatePresence","there are no senders now"),this._stopPresenceTimer(),this.dispatchReceive(new gt(ft.SYNC_PRESENCE,this._senderMap)),void(this._previousSenderMapCount=0);let t=Object.keys(this._senderMap).length;t!=this._previousSenderMapCount&&(VizbeeSDK.logger.d("UpdatePresenceRecvExtension","_updatePresence","there is a change in the senders connected"),this._previousSenderMapCount=t,this.dispatchReceive(new gt(ft.SYNC_PRESENCE,this._senderMap)))}}class Bi extends Li{constructor(e,t){super(e,t),this.tx=0,this.sessionId=this.createTimestamp()}send(e){super.send(this.createMessage(null,e))}createMessage(e,t){return(t=t||{}).vers=1,{h:e=P.extend(this.createHeader(),e),b:t}}createHeader(){return this.tx++,{tx:this.tx,id:this.appConfig.senderId||this.appConfig.deviceId,ss:this.sessionId,app:this.appConfig.appId,ssinfo:this.getSenderSessionInfo()}}createTimestamp(){let e=new Date;return e.getFullYear()+":"+("0"+(e.getMonth()+1)).slice(-2)+":"+("0"+e.getDate()).slice(-2)+":"+("0"+e.getHours()).slice(-2)+":"+("0"+e.getMinutes()).slice(-2)+":"+("0"+e.getSeconds()).slice(-2)+":"+("0"+e.getMilliseconds()).slice(-3)}getSenderSessionInfo(){return{SCREEN_IDFA:this.appConfig.screenIdfa,SCREEN_IDFV:this.appConfig.screenIdfv,SCREEN_DEVICE_TYPE:this.appConfig.screenDeviceType,SCREEN_DEVICE_ID:this.appConfig.screenDeviceId,SCREEN_DEVICE_FRIENDLYNAME:this.appConfig.screenFriendlyName}}}const Fi=["BUFFERING","PLAYING","PAUSED_BY_USER","INTERRUPTED","FINISHED","FAILED"];class Hi extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.shouldSupportLiveDVR=P.get(t,["features","shouldSupportLiveDVR"],!1),this.liveDVRMinBufferInMs=P.get(t,["features","liveDVRMinBufferInMs"],3e5)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){return Fi.includes(e.vstatus.st)&&e.vinfo.islive&&(e.vinfoext||(e.vinfoext={}),!0===e.vinfoext.isdvrsupported||(!this.shouldSupportLiveDVR||e.vstatus.du<this.liveDVRMinBufferInMs?(e.vinfoext.isdvrsupported=!1,e.vstatus.po=-1,e.vstatus.du=0):e.vinfoext.isdvrsupported=!0)),e}}class Gi{static setItem(e,t,i,r,n,s,a){if(e)if("undefined"!=typeof Storage)vizbee.logger.debug("StorageUtil::setItem - Storage supported!"),"session"==i?(vizbee.logger.debug("StorageUtil::setItem - storing in session!"),sessionStorage.setItem(e,t)):(vizbee.logger.debug("StorageUtil::setItem - storing in local!"),localStorage.setItem(e,t));else{if(vizbee.logger.debug("StorageUtil::setItem - Storage NOT supported!"),"session"==i)return;vizbee.logger.debug("StorageUtil::setItem - storing in cookies!"),M.docCookies.setItem(e,t,r,n,s,a)}}static getItem(e,t){if(e){if("undefined"!=typeof Storage)return vizbee.logger.debug("StorageUtil::getItem - Storage supported!"),"session"==t?(vizbee.logger.debug("StorageUtil::getItem - getting from session!"),sessionStorage.getItem(e)):(vizbee.logger.debug("StorageUtil::getItem - getting from local!"),localStorage.getItem(e)?sessionStorage.getItem(e):localStorage.getItem(e));if(vizbee.logger.debug("StorageUtil::getItem - Storage NOT supported!"),"session"!=t)return vizbee.logger.debug("StorageUtil::getItem - getting from cookies!"),M.docCookies.getItem(e)}}static removeItem(e,t,i,r){if(e)if("undefined"!=typeof Storage)"session"==t?sessionStorage.removeItem(e):localStorage.removeItem(e)||sessionStorage.removeItem(e);else{if("session"==t)return;M.docCookies.removeItem(e,i,r)}}}class Wi{constructor(e){this.senderConfig=e}track(e,t){if(!e||!t||!this.senderConfig.url)return;if(VizbeeSDK.logger.d(`${this.constructor.name}`,`track() - tracking event ${e}, ${JSON.stringify(t)}`),!this.shouldTrack(e))return;if(t=this.filterProperties(t),0==Object.keys(t).length)return;let i,r,n={event:e,properties:t},s=this._getBase64String(n),a=this._getURIEncodedString(s),o="GET";this._needPostRequest(a)?(i=this.senderConfig.url,o="POST",r=JSON.stringify({data:a})):(i=this.senderConfig.url+"?data="+a,o="GET",r=void 0),VizbeeSDK.logger.d(`${this.constructor.name}`,`track() - sending metrics request: URL ${i}, Method ${o}, Data ${r}`),M.xhr({url:i,method:o,data:r,timeout:1e4,retries:this.senderConfig.networkRetries}).then(e=>{e.error?VizbeeSDK.logger.e(`${this.constructor.name}`,"track - ERROR"):VizbeeSDK.logger.d(`${this.constructor.name}`,`track - SUCCESS: ${e}`)}).catch(e=>{VizbeeSDK.logger.d(`${this.constructor.name}`,`track - ERROR=${e}`)})}shouldTrack(e){return VizbeeSDK.logger.d(`${this.constructor.name}`,`shouldTrack - Filtering events with regex = ${this.senderConfig.eventFilter}`),!this.senderConfig.eventFilter||new RegExp(this.senderConfig.eventFilter,"i").test(e)}filterProperties(e){if(VizbeeSDK.logger.d(`${this.constructor.name}`,`filterProperties - Filtering properties with regex = ${this.senderConfig.attributeFilter}`),!this.senderConfig.attributeFilter)return e;e=e||{},e=JSON.parse(JSON.stringify(e));for(var t=new RegExp(this.senderConfig.attributeFilter,"i"),i=Object.keys(e),r=0;r<i.length;r++){var n=i[r];t.test(n)||delete e[n]}return e}_getBase64String(e){return btoa(unescape(encodeURIComponent(JSON.stringify(e))))}_getURIEncodedString(e){return window.encodeURIComponent(e)}_needPostRequest(e){return!!(e&&e.length>1e4)}}class ji extends Wi{constructor(e){let t={};e.mixpanel_url&&(t={eventFilter:e.mixpanel_filter,token:e.mixpanel_token,attributeFilter:e.attribute_filter,url:e.mixpanel_url,networkRetries:0}),super(t)}track(e,t){(t=t||{}).token=this.senderConfig.token,super.track(e,t)}}class qi extends Wi{constructor(e){let t={};e.vizbee_url&&(t={url:e.vizbee_url,attributeFilter:e.attribute_filter,eventFilter:e.vizbee_filter,networkRetries:0}),super(t)}}class Ji{constructor(e){this.senders=[],e&&e.vizbee_url&&this.senders.push(new qi(e)),e&&e.mixpanel_url&&e.mixpanel_token&&this.senders.push(new ji(e))}track(e,t){VizbeeSDK.logger.d(`${this.constructor.name}`,"track",e,t),P.each(this.senders,i=>{i.track(e,P.clone(t))})}}const Yi="UNKNOWN",$i="NOT_FOUND";var Qi=new class{constructor(){this.config={},this.commonProperties={},this.attributesProvidersList=[],this.isInitialized=!1,this.needToSetDistinctIdForVideoEvents=!0}init(e){if(e&&this.commonProperties)if(VizbeeSDK.logger.d("MetricsManager","init",e.appId,this.commonProperties.APP_ID),this.isInitialized&&this.commonProperties.APP_ID==e.appId)VizbeeSDK.logger.d("MetricsManager","init","already initialized");else{this.config=e,this.metricsRouter=new Ji(e.metricsParams),this.appSessionId=Math.floor(1e10*Math.random()).toString()+"_"+Date.now(),this.screenSdkId=Gi.getItem("SCREEN_SDK_ID"),this.screenSdkId?VizbeeSDK.logger.d("MetricsManager::init","SCREEN_SDK_ID -> AVAILABLE -> REUSING IT"):(VizbeeSDK.logger.d("MetricsManager::init","SCREEN_SDK_ID -> NOT_AVAILABLE"),this.screenSdkId=Math.floor(1e10*Math.random()).toString()+"_"+Date.now(),Gi.setItem("SCREEN_SDK_ID",this.screenSdkId,"local",31536e3,"/"));var t=this.prepareCommonProperties(e);this.setCommonProperties(t),e.customAttributesForMetrics&&this.setCustomProperties(e.customAttributesForMetrics),this.isInitialized=!0}else VizbeeSDK.logger.e("MetricsManager","init","called with empty config!")}refreshLaunchParamProperties(){if(VizbeeTV.tv.launchParamsDeferral){const e=VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()||!1;this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE=e,this.commonProperties.SCREEN_VZB_LAUNCH_PARAM=e?"y":$i}}prepareCommonProperties(e){var t,i,r,n={appId:e.appId,deviceId:e.deviceId,deviceType:VizbeeTV.tv.cloudPlatformName,distinctId:e.deviceId,externalIp:e.externalIp,ipv6Address:e.ipv6Address,sdkVersion:window.VZB?window.VZB.VERSION:"",appSessionId:this.appSessionId,screenSdkId:this.screenSdkId,timestamp:Date.now(),timezoneOffset:(t=-(new Date).getTimezoneOffset(),i=t>=0?"+":"-",r=Math.abs(t),"GMT"+i+("0"+Math.floor(r/60)).slice(-2)+":"+("0"+r%60).slice(-2))};return VizbeeTV.tv.deviceInfo&&(VizbeeTV.tv.deviceInfo.deviceId&&VizbeeTV.tv.deviceInfo.deviceId!=Yi&&(n.deviceId=VizbeeTV.tv.deviceInfo.deviceId,n.distinctId=VizbeeTV.tv.deviceInfo.deviceId),n.macAddress=VizbeeTV.tv.deviceInfo.macAddress,n.deviceMake=VizbeeTV.tv.deviceInfo.make,n.deviceModel=VizbeeTV.tv.deviceInfo.model,n.deviceSerialNumber=VizbeeTV.tv.deviceInfo.serialNumber,n.friendlyName=VizbeeTV.tv.deviceInfo.friendlyName,n.osVersion=P.get(VizbeeTV.tv.deviceInfo,["os","version"],Yi),n.osNativeVersion=P.get(VizbeeTV.tv.deviceInfo,["os","sdkVersion"],Yi)),VizbeeTV.tv.adId&&(n.adId=VizbeeTV.tv.adId),null!=VizbeeTV.tv.isAdTrackingDisabled&&(n.isAdTrackingDisabled=VizbeeTV.tv.isAdTrackingDisabled),VizbeeTV.tv.networkInfo&&(n.internalIp=VizbeeTV.tv.networkInfo.internalIP,n.bssid=VizbeeTV.tv.networkInfo.bssid,n.ssid=VizbeeTV.tv.networkInfo.ssid,n.isWifiConnected=VizbeeTV.tv.networkInfo.isWifiConnected,n.connectionType=VizbeeTV.tv.networkInfo.connectionType),VizbeeTV.tv.launchParamsDeferral&&(n.isLaunchedWithVizbee=VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()||!1),n}setCommonProperties(e){VizbeeSDK.logger.d("MetricsManager","setCommonProperties"),this.commonProperties.SCREEN_DEVICE_USERAGENT=Yi,this.commonProperties.SCREEN_IDFV=Yi,this.commonProperties.SCREEN_HOMESSO_USER_INFO={user_login:Yi,user_login_type:Yi,user_name:Yi,user_subscription_renewal_type:Yi,user_subscription_type:Yi,user_subscription_value:Yi},e.appId&&(this.commonProperties.APP_ID=e.appId),e.externalIp&&(this.commonProperties.EXTERNAL_IP_ADDRESS=e.externalIp),e.ipv6Address&&(this.commonProperties.IPV6_ADDRESS=e.ipv6Address),e.distinctId&&(this.commonProperties.distinct_id=e.distinctId),e.deviceId&&(this.commonProperties.SCREEN_DEVICE_ID=e.deviceId),e.appSessionId&&(this.commonProperties.SCREEN_APP_SESSION_ID=e.appSessionId),e.screenSdkId&&(this.commonProperties.SCREEN_SDK_ID=e.screenSdkId),e.internalIp&&(this.commonProperties.INTERNAL_IP_ADDRESS=e.internalIp,this.commonProperties.SCREEN_INTERNAL_IP=e.internalIp),"isWifiConnected"in e&&(this.commonProperties.WIFI_CONNECTED=e.isWifiConnected),e.connectionType&&(this.commonProperties.CONNECTION_TYPE=e.connectionType),e.bssid&&(this.commonProperties.WIFI_BSSID=e.bssid),e.ssid&&(this.commonProperties.WIFI_SSID=e.ssid),e.adId&&(this.commonProperties.SCREEN_IDFA=e.adId),null!=e.isAdTrackingDisabled&&(this.commonProperties.SCREEN_LIMIT_AD_TRACKING=e.isAdTrackingDisabled),e.macAddress&&(this.commonProperties.SCREEN_MAC_ADDRESS=e.macAddress),navigator&&navigator.userAgent&&(this.commonProperties.SCREEN_DEVICE_USERAGENT=navigator.userAgent),e.deviceType&&(this.commonProperties.SCREEN_DEVICE_TYPE=e.deviceType),e.deviceMake&&(this.commonProperties.SCREEN_DEVICE_MAKE=e.deviceMake),e.deviceModel&&(this.commonProperties.SCREEN_DEVICE_MODEL=e.deviceModel),e.deviceSerialNumber&&(this.commonProperties.SCREEN_SERIAL_NUMBER=e.deviceSerialNumber),e.friendlyName&&(this.commonProperties.SCREEN_FRIENDLY_NAME=e.friendlyName),e.osNativeVersion&&(this.commonProperties.SCREEN_NATIVE_OS_VERSION=e.osNativeVersion),e.osVersion&&(this.commonProperties.SCREEN_OS_VERSION=e.osVersion),null!=e.isLaunchedWithVizbee&&(this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE=e.isLaunchedWithVizbee),this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE?this.commonProperties.SCREEN_VZB_LAUNCH_PARAM="y":this.commonProperties.SCREEN_VZB_LAUNCH_PARAM=$i,e.sdkVersion&&(this.commonProperties.SCREEN_SDK_VERSION=e.sdkVersion),e.timestamp&&(this.commonProperties.VZB_TIMESTAMP=e.timestamp),e.timezoneOffset&&(this.commonProperties.TIMEZONE=e.timezoneOffset),e.SCREEN_HOMESSO_USER_INFO&&(this.commonProperties.SCREEN_HOMESSO_USER_INFO=e.SCREEN_HOMESSO_USER_INFO)}setAttributesProviderProperties(e,t){if(0==this.attributesProvidersList.length)return void t(e);const i=this.attributesProvidersList.map(e=>e.provider.getAttributes());Promise.all(i).then(i=>{i.forEach(t=>{t&&(e=P.extend(e,t))}),t(e)}).catch(i=>{console.error("Error getting attributes:",i),t(e)})}setCustomProperties(e){VizbeeSDK.logger.d("MetricsManager","setCustomProperties"),P.each(e,(e,t)=>{this.commonProperties["CUSTOM_"+t]=e})}addProvider(e,t){VizbeeSDK.logger.d("MetricsManager","addProvider"),this.attributesProvidersList.push({provider:e,filterRegEx:t})}removeProvider(e){VizbeeSDK.logger.d("MetricsManager","removeProvider"),this.attributesProvidersList=P.reject(this.attributesProvidersList,t=>t.provider==e)}trackEvent(e,t){this.shouldTrack(e,t)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackEvent",e);let i=P.extend({},this.commonProperties,t);this.track(e,i)})}trackScreenLaunched(){this.shouldTrack("SCREEN_LAUNCHED",this.commonProperties)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenLaunched");let e=P.extend({},this.commonProperties,this.buildPlayerProperties());this.track("SCREEN_LAUNCHED",e)})}trackScreenTVViewLoad(e){this.shouldTrack("SCREEN_TV_VIEW_LOAD",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewLoad"),this.commonProperties.distinct_id=this.commonProperties.APP_ID+":"+this.commonProperties.SCREEN_DEVICE_TYPE+":"+M.uuidv4()+":"+Date.now(),this.needToSetDistinctIdForVideoEvents=!1;let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildNewScreenTVViewProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_LOAD",t)})}trackScreenTVViewStart(e){this.shouldTrack("SCREEN_TV_VIEW_START",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewStart"),this.needToSetDistinctIdForVideoEvents&&(this.commonProperties.distinct_id&&-1==this.commonProperties.distinct_id.indexOf(this.commonProperties.SCREEN_DEVICE_TYPE)&&(this.commonProperties.APP_ID,this.commonProperties.SCREEN_DEVICE_TYPE,M.uuidv4(),Date.now()),this.needToSetDistinctIdForVideoEvents=!0);let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewStartProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildScreenTVViewStartTimeQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_START",t)})}trackScreenTVViewPause(e){this.shouldTrack("SCREEN_TV_VIEW_PAUSE",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewPause");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_PAUSE",t)})}trackScreenTVViewResume(e){this.shouldTrack("SCREEN_TV_VIEW_RESUME",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewResume");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewResumeProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_RESUME",t)})}trackScreenTVViewDuration(e){this.shouldTrack("SCREEN_TV_VIEW_DURATION",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewDuration");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));t.SCREEN_HOMESSO_USER_INFO=void 0,this.track("SCREEN_TV_VIEW_DURATION",t)})}trackScreenTVViewError(e){let t="SCREEN_TV_VIEW_ERROR";this.shouldTrack(t,e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewError");let i=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewErrorProperties(e),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track(t,i)})}trackScreenAdView(e){this.shouldTrack("SCREEN_AD_VIEW",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenAdView","tracking SCREEN_AD_VIEW");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenAdViewProperties(e));this.track("SCREEN_AD_VIEW",t)})}trackScreenRemoteConnected(e){e&&this.shouldTrack("SCREEN_REMOTE_CONNECTED")&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenRemoteConnected");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this._buildSenderProperties(e));this.track("SCREEN_REMOTE_CONNECTED",t)})}trackScreenTVSignin(e){e&&this.shouldTrack("SCREEN_TV_SIGNIN")&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVSignin");let t=P.extend({},this.commonProperties,this.buildScreenTVSigninProperties(e));this.track("SCREEN_TV_SIGNIN",t)})}_buildSenderProperties(e){return e&&e.ssinfo?{CONNECTED_REMOTE:e.ssinfo}:{}}metricsConfig(){return this.config.metricsParams}isVideoEvent(e){return-1!=["SCREEN_TV_VIEW_LOAD","SCREEN_TV_VIEW_START","SCREEN_TV_VIEW_PAUSE","SCREEN_TV_VIEW_RESUME","SCREEN_TV_VIEW_DURATION","SCREEN_AD_VIEW"].indexOf(e)}isValidContinuityEvent(e){return-1!=["SCREEN_LAUNCHED","SCREEN_REMOTE_CONNECTED","SCREEN_TV_SIGNIN","SCREEN_TV_VIEW_LOAD","SCREEN_TV_VIEW_START","SCREEN_TV_VIEW_PAUSE","SCREEN_TV_VIEW_RESUME","SCREEN_TV_VIEW_DURATION","SCREEN_TV_VIEW_ERROR","SCREEN_AD_VIEW"].indexOf(e)}isValidHomeSSOEvent(e){return-1!=["SCREEN_HOMESSO_SIGNIN_RECEIVED","SCREEN_HOMESSO_SIGNIN_STATUS"].indexOf(e)}shouldTrack(e,t){if(0==Object.keys(this.config).length)return void VizbeeSDK.logger.e("MetricsManager","shouldTrack","called with empty config!");let i=!0;return this.isValidContinuityEvent(e)?this.isVideoEvent(e)&&this.metricsConfig()&&this.metricsConfig().shouldSendViewEventsOnlyOnCast&&t&&!t.isVideoLaunchedFromPhone&&(i=!1):this.isValidHomeSSOEvent(e)||(i=!1),i}track(e,t){this.metricsRouter.track(e,t)}buildPlayerProperties(){let e={PLAYER_NAME:"UNKNOWN"};return VizbeeTV.tv.player&&(e.PLAYER_NAME=VizbeeTV.tv.player.getName()),e}buildVideoProperties(e){return{VIDEO_ID:e.videoId,VIDEO_TITLE:e.videoTitle,VIDEO_START_TIME:e.videoStartTime,VIDEO_DURATION_MS:Math.round(e.videoDuration),IS_LIVE:e.isLive,IS_CONTINUED_VIEW:e.isContinuedView,IS_VIDEO_LAUNCHED_FROM_PHONE:e.isVideoLaunchedFromPhone}}buildNewScreenTVViewProperties(e){return this.buildVideoProperties(e)}buildScreenTVViewStartProperties(e){return this.buildVideoProperties(e)}buildScreenTVViewResumeProperties(e){return P.extend({VIDEO_PAUSED_TIME_MS:Math.round(e.videoPausedTimeInMs)},this.buildScreenTVViewDurationProperties(e))}buildScreenTVViewDurationProperties(e){return P.extend({VIDEO_POSITION_MS:Math.round(e.videoPosition),VIDEO_POSITION_MIN:e.videoPostitionMin,VIDEO_ELAPSED_TIME_MS:Math.round(e.videoElapsedTime),VIDEO_ELAPSED_TIME_MIN:e.videoElapsedTimeMin},this.buildVideoProperties(e))}buildStreamInfoAndMetadataProperties(e){let t={};try{if(e.customStreamInfo&&e.customMetadata){let i={customStreamInfo:e.customStreamInfo,customMetadata:e.customMetadata};t=P.extend({},M.flatten(i))}}catch(e){}return t}buildScreenTVViewQualityProperties(e){(!e.startTime||e.startTime<0)&&(e.startTime=0);let t=e.startTime/1e3,i=e.videoBufferLevel?e.videoBufferLevel.current:0,r=e.audioBufferLevel?e.audioBufferLevel.current:0,n=e.audioBufferLevel?e.audioBufferLevel.didDetectSeparateAudio:"UNKNOWN",s=2*Math.ceil(t/2),a=2*Math.ceil(i/2),o=2*Math.ceil(r/2);return P.extend({START_TIME_SEC:t||0,VIDEO_BUFFER_SEC:i||0,AUDIO_BUFFER_SEC:r||0,AUDIO_STREAM_DETECTED:n,START_TIME_2SEC_BIN:s||0,VIDEO_BUFFER_2SEC_BIN:a||0,AUDIO_BUFFER_2SEC_BIN:o||0},this.buildVideoProperties(e))}buildScreenTVViewStartTimeQualityProperties(e){return e&&P.get(this.config,["features","sendStartTimeQualityInfo"])?{PRE_ROLL_AD_POD_START_TIME_MS:e.adPodStartedTimeInMs?e.adPodStartedTimeInMs:0,PRE_ROLL_AD_POD_END_TIME_MS:e.adPodEndedTimeInMs?e.adPodEndedTimeInMs:0,VIDEO_LOAD_RECEIVED_BY_APP_TIME_MS:e.loadReceivedByAppTimeInMs?e.loadReceivedByAppTimeInMs:0,VIDEO_LOAD_RECEIVED_BY_PLAYER_TIME_MS:e.loadReceivedByPlayerTimeInMs?e.loadReceivedByPlayerTimeInMs:0,VIDEO_METADATA_LOADED_TIME_MS:e.metadataLoadedTimeInMs?e.metadataLoadedTimeInMs:0,VIDEO_PLAYER_READY_TIME_MS:e.playerReadyToPlayTimeInMs?e.playerReadyToPlayTimeInMs:0,VIDEO_PLAYBACK_STARTED_TIME_MS:e.playbackStartedTimeInMs?e.playbackStartedTimeInMs:0}:{}}buildScreenTVViewErrorProperties(e){return P.extend({VIDEO_POSITION_MS:Math.round(e.videoPosition),FAILURE_VALUE:e.failureValue,FAILURE_CODE:e.failureCode},this.buildVideoProperties(e))}buildScreenAdViewProperties(e){return{SCREEN_AD_ID:e.adId,AD_DURATION:e.adDuration,VIDEO_ID:e.videoId,VIDEO_TITLE:e.videoTitle,VIDEO_DURATION_MS:Math.round(e.videoDuration),VIDEO_POSITION_MS:Math.round(e.videoPosition),IS_LIVE:e.isLive,IS_VIDEO_LAUNCHED_FROM_PHONE:e.isVideoLaunchedFromPhone}}buildScreenTVSigninProperties(e){return{USER_ID:e.userId,USER_LOGIN:e.userLogin,USER_LOGIN_TYPE:e.userLoginType}}_setUpdatedCommonProperties(e){let t={};this.commonProperties.adId&&this.commonProperties.adId!=Yi||(t.adId=VizbeeTV.tv.adId||Yi),this.commonProperties.isAdTrackingDisabled&&this.commonProperties.isAdTrackingDisabled!=Yi||(t.isAdTrackingDisabled=VizbeeTV.tv.isAdTrackingDisabled||Yi),VizbeeTV.tv.deviceInfo&&(VizbeeTV.tv.deviceInfo.deviceId&&VizbeeTV.tv.deviceInfo.deviceId!=Yi&&(t.deviceId=VizbeeTV.tv.deviceInfo.deviceId),VizbeeTV.tv.deviceInfo.model&&VizbeeTV.tv.deviceInfo.model!=Yi&&(t.deviceModel=VizbeeTV.tv.deviceInfo.model)),this.setAttributesProviderProperties(t,t=>{this.setCommonProperties(t),e()})}};const Zi="receiver_with_applets";class Xi extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.currentVideoId=void 0,this.didLogStartVideo=!1,this.lastLoggedVideoPostition2XMin=-1,this.elapsedLastPlayingTimestamp=void 0,this.elapsedPlayingTime=0,this.targetAppType=this.appConfig&&this.appConfig.features&&this.appConfig.features.targetAppType,this.senderMap={}}connect(e){Qi.init(this.appConfig);const t=VizbeeTV.tv.launchParamsDeferral;t&&"function"==typeof t.waitUntilReady?t.waitUntilReady().then(()=>{Qi.refreshLaunchParamProperties(),Qi.trackScreenLaunched()}):Qi.trackScreenLaunched(),super.connect(e)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){if(this.currentVideoId!=e.vstatus.id&&(this.currentVideoId=e.vstatus.id,this.didLogStartVideo=!1,this.lastLoggedVideoPostition2XMin=-1,this.elapsedLastPlayingTimestamp=Date.now(),this.elapsedPlayingTime=0,VizbeeSDK.logger.d("MetricsExtension","interceptVideoStatus","logging new video"),Qi.trackScreenTVViewLoad({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du||-1,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee})),"PLAYING"==e.vstatus.st&&(e.vinfo.islive||!e.vinfo.islive&&e.vstatus.po>0)){if(!this.didLogStartVideo){VizbeeSDK.logger.d("MetricsExtension","interceptVideoStatus","logging start video");var t=e.vinfoext.qos||{};Qi.trackScreenTVViewStart({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:t.starttime||0,audioBufferLevel:t.audiobufferlevel||{},videoBufferLevel:t.videobufferlevel||{},adPodStartedTimeInMs:t.adPodStartedTimeInMs||0,adPodEndedTimeInMs:t.adPodEndedTimeInMs||0,loadReceivedByAppTimeInMs:t.loadReceivedByAppTimeInMs||0,loadReceivedByPlayerTimeInMs:t.loadReceivedByPlayerTimeInMs||0,metadataLoadedTimeInMs:t.metadataLoadedTimeInMs||0,playerReadyToPlayTimeInMs:t.playerReadyToPlayTimeInMs||0,playbackStartedTimeInMs:t.playbackStartedTimeInMs||0}),this.didLogStartVideo=!0}this.elapsedPlayingTime=this.elapsedPlayingTime+(Date.now()-this.elapsedLastPlayingTimestamp),this.elapsedLastPlayingTimestamp=Date.now();let i=2*Math.floor(e.vstatus.po/12e4);i>this.lastLoggedVideoPostition2XMin&&(this.lastLoggedVideoPostition2XMin=i,Qi.trackScreenTVViewDuration({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:this.lastLoggedVideoPostition2XMin,videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}))}return"FAILED"==e.vstatus.st&&Qi.trackScreenTVViewError({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,isLive:e.vinfo.islive,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:this.lastLoggedVideoPostition2XMin,videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,failureValue:e.vstatus.er.reason,failureCode:e.vstatus.er.code,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}),["INTERRUPTED","FINISHED","FAILED"].indexOf(e.vstatus.st)>-1&&(this.currentVideoId=void 0),e}handleSyncReceiveEvent(e){let t=e.data;if(t&&t.b&&t.b.cmd&&"video"===t.b.cmd.ns&&"event"===t.b.cmd.name&&t.b.einfo&&"tv.vizbee.homesign.signin"==t.b.einfo.type){let e=t.b.einfo.data&&t.b.einfo.data.authInfo;e&&Qi.trackScreenTVSignin(e)}return e}handleNonSyncReceiveEvent(e){if(e&&e.type==ft.SYNC_PRESENCE){let t=e.data;if(t&&this.senderMap){let e=Object.keys(this.senderMap),i=Object.keys(t);i.length>e.length?i.forEach(e=>{this.senderMap[e]||(!t[e]||"vzb0000000"===t[e].appId&&this.targetAppType===Zi||(VizbeeSDK.logger.d("MetricsExtension","handleNonSyncReceiveEvent","new sender connected, id = "+e),Qi.trackScreenRemoteConnected(t[e])),this.senderMap[e]=t[e])}):i.length<e.length&&e.forEach(e=>{-1==i.indexOf(e)&&(VizbeeSDK.logger.d("MetricsExtension","handleNonSyncReceiveEvent","sender disconnected, id = "+e),delete this.senderMap[e])})}}return e}}class er extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.currentVideoId=void 0,this.elapsedLastPlayingTimestamp=void 0,this.elapsedPlayingTime=0,this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1}connect(e){Qi.init(this.appConfig),super.connect(e)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){return this.currentVideoId!=e.vstatus.id&&(this.currentVideoId=e.vstatus.id,this.elapsedLastPlayingTimestamp=Date.now(),this.elapsedPlayingTime=0,this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1),"PLAYING"==e.vstatus.st&&(e.vinfo.islive||!e.vinfo.islive&&e.vstatus.po>0)&&(this.elapsedPlayingTime=this.elapsedPlayingTime+(Date.now()-this.elapsedLastPlayingTimestamp),this.elapsedLastPlayingTimestamp=Date.now(),this.didLogPauseVideo&&(VizbeeSDK.logger.debug("FilterPauseResumeEventsExtension::interceptVideoStatus - logging resume video"),Qi.trackScreenTVViewResume({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:2*Math.floor(e.vstatus.po/12e4),videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),videoPausedTimeInMs:Date.now()-this.videoPausedTimestamp,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel})),this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1),"PAUSED_BY_USER"==e.vstatus.st&&(-1==this.videoPausedTimestamp&&(this.videoPausedTimestamp=Date.now()),!this.didLogPauseVideo&&Date.now()-this.videoPausedTimestamp>=15e3&&(VizbeeSDK.logger.debug("FilterPauseResumeEventsExtension::interceptVideoStatus - logging pause video"),Qi.trackScreenTVViewPause({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:2*Math.floor(e.vstatus.po/12e4),videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}),this.didLogPauseVideo=!0)),["INTERRUPTED","FINISHED","FAILED"].indexOf(e.vstatus.st)>-1&&(this.currentVideoId=void 0),e}}var tr=E(dt());class ir extends Li{constructor(e,t){if(super(e,t),this.enable=!0,t&&t.features&&t.features.SubtitlesExtension){let e=t.features.SubtitlesExtension;null!=e.enable&&(this.enable=e.enable)}}_isEnabled(){return this.enable}handleSyncReceiveEvent(e){let t=e.data;if(VizbeeSDK.logger.verbose(`SubtitlesExtension::handleSyncReceiveEvent - received message data = ${JSON.stringify(t)}`),!(t&&t.b&&t.b.cmd))return e;let i=t.b.cmd.name;if(!(i&&["enabletrack","disabletrack"].indexOf(i.toLowerCase())>-1))return e;if(this._isEnabled()){let e=Number(t.b.cmd.param);if(!isNaN(e)){let i=[e];"enabletrack"===t.b.cmd.name?tr.enableTracks(i):tr.disableTracks(i)}}}send(e){if(!e||!e.cmd)return void super.send(e);let t=e,i="status"==e.cmd.name,r="hello"==e.cmd.name&&"rsp"==e.cmd.type&&e.vstatus;(i||r)&&(t=this._interceptVideoStatus(e)),super.send(t)}_interceptVideoStatus(e){return this._addTrackStatus(e)}_addTrackStatus(e){if(!e||!e.vstatus)return e;if(e.vstatus.tr||(e.vstatus.tr={}),!this._isEnabled())return e;let t=this._getTextTrackStatus();return e.vstatus.tr.availableTextTracks=t.availableTextTracks,e.vstatus.tr.currentTextTrack=t.currentTextTrack,e}_getTextTrackStatus(){let e={},t=tr.getTracks(i),r=tr.getEnabledTracks(i);if(t&&Array.isArray(t)&&t.length>0&&(t.forEach(t=>{let i=t.toJSON();i&&(e.availableTextTracks||(e={availableTextTracks:[],currentTextTrack:{}}),e.availableTextTracks.push({screenTrackId:i.id,languageCode:i.lang}))}),r&&Array.isArray(r)&&r.length>0)){let t=r[0].toJSON();t&&(e.currentTextTrack={screenTrackId:t.id,languageCode:t.lang})}return e}}class rr extends Li{constructor(e,t){if(super(e,t),this.enable=!0,t&&t.features&&t.features.AudioTracksExtension){let e=t.features.AudioTracksExtension;null!=e.enable&&(this.enable=e.enable)}}_isEnabled(){return this.enable}handleSyncReceiveEvent(e){if(!this._isEnabled())return e;let t=e.data;if(VizbeeSDK.logger.verbose(`AudioTracksExtension::handleSyncReceiveEvent - received message data = ${JSON.stringify(t)}`),!(t&&t.b&&t.b.cmd))return e;let i=t.b.cmd.name;if(!i||"string"!=typeof i||"changeaudiotrack"!==i.toLowerCase())return e;let r=Number(t.b.cmd.param);isNaN(r)?VizbeeSDK.logger.debug(`AudioTracksExtension::handleSyncReceiveEvent - received changeAudioTrack command with invalid trackId = ${r}`):(VizbeeSDK.logger.debug(`AudioTracksExtension::handleSyncReceiveEvent - received changeAudioTrack command with trackId = ${r}`),tr.changeAudioTrack(r))}send(e){if(!e||!e.cmd)return void super.send(e);let t=e,i="status"==e.cmd.name,r="hello"==e.cmd.name&&"rsp"==e.cmd.type&&e.vstatus;(i||r)&&(t=this._interceptVideoStatus(e)),VizbeeSDK.logger.verbose("AudioTracksExtension::send - forwarding out message",t),super.send(t)}_interceptVideoStatus(e){return this._addAudioTrackStatus(e)}_addAudioTrackStatus(e){if(!e||!e.vstatus)return e;if(e.vstatus.tr||(e.vstatus.tr={}),!this._isEnabled())return e;let t=this._getAudioTrackStatus();return e.vstatus.tr.availableAudioTracks=t.availableAudioTracks,e.vstatus.tr.currentAudioTrack=t.currentAudioTrack,e}_getAudioTrackStatus(){let e={},t=tr.getAudioTracks(r),i=tr.getActiveAudioTrack(r);return t&&Array.isArray(t)&&t.length>0&&(t.forEach(t=>{let i=t.toJSON();i&&(e.availableAudioTracks||(e={availableAudioTracks:[],currentAudioTrack:{}}),e.availableAudioTracks.push({screenTrackId:i.id,languageCode:i.lang,displayName:i.label}))}),i&&null!=i.id&&(e.currentAudioTrack={screenTrackId:i.id,languageCode:i.lang,displayName:i.label})),e}}class nr{static getVideoInfo(e){var t=e.data||{},i={};VizbeeSDK.logger.info("ChromecastToSyncConverter::getVideoInfo",JSON.stringify(t)),i.starttime=t.currentTime||0;var r=t.media;if(r){i.islive="LIVE"==r.streamType,i.videourl=r.contentUrl||r.contentId||"",i.contentType=r.contentType||"",i.tracks=r.tracks||[];var n=r.customData||{};i.id=n.guid||i.videourl,i.cuepoints=n.cuepoints||[],i.vzbSenderOS=n.vzbSenderOS,i.vzbVersion=n.vzbVersion,i.senderInfo={st:n.vzbSenderOS,version:n.vzbVersion},i.customstreaminfo=n.customStreamInfo||{},i.custommetadata=n.customMetadata||{},i.drminfo=n.drmInfo||{};var s=r.metadata;s&&(i.title=s.title||"",i.subtitle=s.subtitle||"",i.imgurl="",s.images&&s.images.length>0&&(i.imgurl=s.images[0].url))}return VizbeeSDK.logger.info("ChromecastToSyncConverter::getVideoInfo",e,i),i}}const sr=[Oi,xi,Ui,Ki,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("ExitOnLastMessageRecvExtension::constructor()"),super(e,t)}handleSyncReceiveEvent(e){let t=e.data;if(VizbeeSDK.logger.verbose(`ExitOnLastMessageRecvExtension::onReceiveHandler() ${this.appConfig.appId}`,t),VizbeeSDK.logger.verbose("ExitOnLastMessageRecvExtension::onReceiveHandler getActiveSendersCount - cmd ",this.getActiveSendersCount(),t.b?t.b.cmd.name:""),!t.b||"exit"!==t.b.cmd.name)return e;"user_invoked_disconnect"===t.b.cmd.param&&0==this.getActiveSendersCount()&&this.appConfig.features&&this.appConfig.features.shouldExitOnLastSender&&(VizbeeSDK.logger.debug("ExitOnLastMessageRecvExtension::onReceiveHandler getActiveSendersCount is zero - going to exit the receiver app"),VizbeeTV.tv.exit())}},Bi,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("FilterMessageSendExtension::constructor()"),super(e,t),this.shouldFilterAllMessagesOnLastSenderExit=t&&t.features&&t.features.shouldFilterAllMessagesOnLastSenderExit}send(e){if(!e||!e.cmd)return void super.send(e);let t=this.getActiveSendersCount();if(!(this.shouldFilterAllMessagesOnLastSenderExit&&t<=0))return"status"==e.cmd.name?e.vstatus&&-1!=["FINISHED","INTERRUPTED","FAILED"].indexOf(e.vstatus.st)?(VizbeeSDK.logger.debug(`FilterMessageSendExtension::send message.vstatus.st: ${e.vstatus.st}`),void super.send(e)):void(0!==t?super.send(e):VizbeeSDK.logger.verbose("FilterMessageSendExtension::send senders not available: MESSAGE NOT SENT",this.getActiveSendersCount(),e)):void super.send(e);VizbeeSDK.logger.verbose("FilterMessageSendExtension::send filtering all messages as senders are not available and shouldFilterAllMessagesOnLastSenderExit is set")}},Hi,er,Xi,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("DisconnectSendersInBackgroundExtension::constructor()",e,t.appId),super(e,t),this._enable=!1,this._senderAliveTimeoutWithFGFlagInMs=6e4,this._senderAliveTimeoutWithoutFGFlagInMs=72e4,this._senderAliveCheckTimer=void 0,this._senderAliveTimerWithFGFlag=void 0,this._senderAlivetTimerWithoutFGFlag=void 0,this._androidSendersInBackgroundMap={},this._androidSendersWithoutFGFlagMap={},this._getExtensionConfigData(t)}_getExtensionConfigData(e){if(e&&e.features&&e.features.DisconnectSendersInBackgroundExtension){let t=e.features.DisconnectSendersInBackgroundExtension;1==t.enable&&(this._enable=!0,null!=t.senderAliveTimeoutWithFGFlagInMs&&(this._senderAliveTimeoutWithFGFlagInMs=t.senderAliveTimeoutWithFGFlagInMs),null!=t.senderAliveTimeoutWithoutFGFlagInMs&&(this._senderAliveTimeoutWithoutFGFlagInMs=t.senderAliveTimeoutWithoutFGFlagInMs))}}disconnect(){VizbeeSDK.logger.debug("DisconnectSendersInBackgroundExtension::disconnect()"),this._stopAllTimers(),this._resetToDefault(),super.disconnect()}handleSyncReceiveEvent(e){if(!this._enable)return e;let t=e.data;if(t&&t.h){let e=t.h.ty&&t.h.ty.toLowerCase(),i=t.h.st&&t.h.st.toLowerCase();e&&"remote"==e&&i&&"android"==i&&(t.h.ssinfo&&null!=t.h.ssinfo.IS_IN_FOREGROUND?0==t.h.ssinfo.IS_IN_FOREGROUND?this._androidSendersInBackgroundMap[t.h.id]||(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::handleSyncReceiveEvent - adding new sender to the map"),this._androidSendersInBackgroundMap[t.h.id]=Date.now()):this._androidSendersInBackgroundMap={}:this._androidSendersWithoutFGFlagMap[t.h.id]||(this._androidSendersWithoutFGFlagMap[t.h.id]=Date.now(),VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::handleSyncReceiveEvent - adding new sender to the map")))}return this._startSenderAliveCheckTimer(),e}_startSenderAliveCheckTimer(){this._stopSenderAliveCheckTimer(),this._senderAliveCheckTimer=window.setInterval(()=>{this._checkSenderStatusAndSendOlleh()},1e3)}_checkSenderStatusAndSendOlleh(){this._handleSendersInBackground(),this._handleSendersWithoutFGFlag()}_handleSendersInBackground(){let e=Date.now();P.keys(this._androidSendersInBackgroundMap).filter(t=>e-this._androidSendersInBackgroundMap[t]>this._senderAliveTimeoutWithFGFlagInMs).length>0&&(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::_handleSendersInBackground - sending olleh as there are no senders in foreground"),this._sendOllehMessage(),this._resetToDefault())}_handleSendersWithoutFGFlag(){let e=Date.now(),t=P.keys(this._androidSendersWithoutFGFlagMap),i=P.keys(this._androidSendersWithoutFGFlagMap).filter(t=>e-this._androidSendersWithoutFGFlagMap[t]>this._senderAliveTimeoutWithoutFGFlagInMs);i.length>0&&t.length==i.length&&(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::_handleSendersWithoutFGFlag - sending olleh as there are no senders in foreground"),this._sendOllehMessage(),this._resetToDefault())}_sendOllehMessage(){this.dispatchReceive(new gt(ft.SYNC_MESSAGE,{b:{cmd:{ns:"video",name:"olleh",type:"int"},hstatus:{id:this.appConfig.deviceId,type:"SCREEN",vip:"false"}}}))}_resetToDefault(){this._stopAllTimers(),this._androidSendersInBackgroundMap={},this._androidSendersWithoutFGFlagMap={}}_stopAllTimers(){this._stopSenderAliveCheckTimer(),this._stopDisconnetionTimerWithIsInFGFlag(),this._stopDisconnetionTimerWithoutIsInFGFlag()}_stopSenderAliveCheckTimer(){this._senderAliveCheckTimer&&(window.clearInterval(this._senderAliveCheckTimer),this._senderAliveCheckTimer=void 0)}_stopDisconnetionTimerWithIsInFGFlag(){this._senderAliveTimerWithFGFlag&&(window.clearTimeout(this._senderAliveTimerWithFGFlag),this._senderAliveTimerWithFGFlag=void 0)}_stopDisconnetionTimerWithoutIsInFGFlag(){this._senderAliveWithoutFGFlagTimer&&(window.clearTimeout(this._senderAliveWithoutFGFlagTimer),this._senderAliveWithoutFGFlagTimer=void 0)}},ir,rr],ar=[Oi,xi,Ui,Ki,Bi,Hi,er,Xi,ir,rr,class extends Li{constructor(e,t){if(super(e,t),this.queueManager=void 0,this.enable=!1,t&&t.features&&t.features.QueueManagerExtension){let e=t.features.QueueManagerExtension;e.enable&&(this.enable=e.enable)}}isEnabled(){return!!this.enable}getQueueManager(){if(!this.queueManager){const e=cast.framework.CastReceiverContext.getInstance();this.queueManager=e.getPlayerManager().getQueueManager()}return this.queueManager}send(e){if(!this.isEnabled())return void super.send(e);if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),t&&super.send(t)}interceptVideoStatus(e){let t=e;if(t=this._addQStatus(e),"FINISHED"!=t.vstatus.st||!t.qstatus||!t.qstatus.next)return t}_addQStatus(e){let t={},i=!1,r=[];if(this.getQueueManager()&&(r=this.getQueueManager().getItems()),0==r.length)return e;let n=this.getQueueManager().getCurrentItem(),s=P.find(r,e=>e.orderId==n.orderId-1);if(s){i=!0;let e=nr.getVideoInfo({data:s});t.prev=Ri.encodeVideoInfo(e)}let a=P.find(r,e=>e.orderId==n.orderId+1);if(a){i=!0;let e=nr.getVideoInfo({data:a});t.next=Ri.encodeVideoInfo(e)}return i&&(e.qstatus=t),e}}];let or;class lr{createSync(e){let t=P.get(e,["syncInfo","syncMethod"],"pubnub").toLowerCase();return"googlecustom"==t?(or=this.getGoogleCustomSyncInstanceWitExtensions(e),or):"googledual"==t?(or=this.getGoogleDualSyncInstanceWitExtensions(e),or):(or=this.getDefaultSyncInstanceWitExtensions(e),or)}static getSync(){return or}getGoogleCustomSyncInstanceWitExtensions(e){return this.addExtensions(e,this.getGoogleCastSync(e),ar)}getGoogleDualSyncInstanceWitExtensions(e){let t=this.addExtensions(e,new Di(e),sr),i=this.addExtensions(e,this.getGoogleCastSync(e),ar),r=new wi(e);return r.addSyncInstance(t),r.addSyncInstance(i),r}getDefaultSyncInstanceWitExtensions(e){return this.addExtensions(e,new Di(e),sr)}addExtensions(e,t,i){for(let r=0;r<i.length;r++)t=new(0,i[r])(t,e);return t}getGoogleCastSync(e){return cast.framework?new null(e):new Mi(e)}}let dr=function(e){return e[e.NOT_CONNECTED=1]="NOT_CONNECTED",e[e.CONNECTING=2]="CONNECTING",e[e.CONNECTED=3]="CONNECTED",e}({});var cr,ur,pr,hr,gr,fr,vr,yr,mr,br,Sr=I(),_r=ct(),Tr=function(){if(et)return Xe;et=1,I();var e={},t={};function i(){VizbeeSDK.logger.debug("VGAStateManager:reset() previous video and ad objects = ",e,t),e.id="",e.state="UNKNOWN",e.position=-1,e.duration=-1,t.id="",t.state="UNKNOWN",t.position=-1,t.duration=-1}return i(),Xe={type:"VGAStateManager",app:{state:"app"},video:e,ad:t,reset:i,addListener:function(e){},removeListener:function(){}}}(),Er=we(),Ir=ut(),Pr=dt(),Vr=pt(),Ar=750;let Cr;class kr{static getInstance(){return null==Cr&&(Cr=new kr),Cr}getQueueManager(){return null==this.queueManager&&(this.queueManager=new null(null.getInstance())),VizbeeSDK.logger.debug("ContinuityContext::getQueueManager - returning queue manager",this.queueManager),this.queueManager}}var Dr,Mr,wr,Nr=I(),Or=function(){if(Ie)return Ee;Ie=1;var e,t,i=Pe().xhr,r=I(),n={appId:null,config:null,pub_key:"pub-c-1e4f216f-168e-4fdc-8a2b-a29ffe05cb5b",sub_key:"sub-c-6da25f1b-58d7-4f17-bd10-21a30198a794"};return Ee={appConfig:n,getConfig:function(s,a){n.appId=s.appId,n.platform=s.platform,n.platformModel=s.platformModel,n.hostProxy=s.hostProxy,function(){var r="config.claspws.tv";n.hostProxy&&(r=n.hostProxy),e=n.platform,t=n.platformModel;var s="//"+r+"/api/v2/";s+="apps/"+n.appId+"/screen/"+e,t&&(s+="."+t);let a=!1;if(window&&window.navigator&&window.navigator.language){var o=window.navigator.language.split("-");o.length>1&&(s+="?country="+o[1],a=!0)}return s+=(a?"&":"?")+"seed="+Math.round(1e3*Math.random()),VizbeeSDK.logger.debug("Config:getAPIConfig - didn't find any saved config from local storage. Calling config server ..."),s="https:"+s,VizbeeSDK.logger.debug("Config:getAPIConfig - URL = "+s),i({url:s,retries:3,timeout:3e4,headers:{Accept:"application/json"}}).then(function(e){if(e&&e.error&&100==e.error.code)return VizbeeSDK.logger.error("Config:getAPIConfig - received error code and message = ",e.error.code,e.error.message),VizbeeSDK.logger.error("Config:getAPIConfig - screen device may not be allowed or setup. Screen device platform = ",n.platform),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject(e.error);if(e&&e.data&&e.data.items&&e.data.items[0]){if(e.data.items[0].channelKeys.pub_key&&e.data.items[0].channelKeys.sub_key){var t=e.data.items[0];return t.externalIp=e.externalIpAddress,VizbeeSDK.logger.debug("Config:getAPIConfig - valid config returned by API",t),VizbeeSDK.logger.debug("Config:getAPIConfig - SDK init SUCCESS!"),t}return VizbeeSDK.logger.error("Config:getAPIConfig - got config response but no channel pub keys or sub keys!"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject("No pub sub keys for given appId")}return VizbeeSDK.logger.error("Config:getAPIConfig - invalid response (but no error!) returned by server"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject("Invalid response")}).catch(function(e){return VizbeeSDK.logger.error("Config:getAPIConfig - XHR request to get config failed"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject(e)})}().then(function(e){VizbeeSDK.logger.debug("Config:getConfig - got apiConfig",e),r.extend(n,e),e.channelKeys.pub_key&&e.channelKeys.sub_key&&(n.pub_key=e.channelKeys.pub_key,n.sub_key=e.channelKeys.sub_key),"function"==typeof a&&(VizbeeSDK.logger.debug("Config:getConfig - calling callback with extended config =",n),a(n))}).catch(function(e){var t="SDK CONFIG FETCH FAILED";null!=e&&(t+=" - "+e.message);var i=new Error(t);VizbeeSDK.logger.critical("Config::getConfig - SDK CONFIG FETCH FAILED",i),VizbeeSDK.logger.error("Config::getConfig - NOTE - could be a failure in the callback passed to getConfig!")})}},Ee}(),xr=De,zr=function(e,t){var i,r=e,n=void 0,s=void 0,a=!1,o=!1,l=!1,d=!1;let c=r&&r.features&&r.features.syncSendIntervalInMs;isNaN(c)||(Ar=c);var u=[],p=[],h={};return t?(a=!0,i=Tr):(a=!1,i=_r,Pr.setAppStateManager(_r),Vr.addListener(function(e){VizbeeSDK.logger.debug("synccontroller",e),"sync_proxy_video_cmds"==e.type&&("x"===e.cmd.name||"event"===e.cmd.name?(delete e.type,n.send(e)):v(e))})),{connect:function(e){VizbeeSDK.logger.debug("SyncController::connect - dumping appConfig = ",r);var t=new lr;(n=t.createSync(r)).onReceive=function(t){if(t)switch(t.type){case ft.SYNC_CONNECT:!function(e){o=!0,a&&(VizbeeSDK.logger.debug("SyncController::syncConnectHandler - setting isAppAdapterAvailable to TRUE (isVGA=true)"),l=!0),g(),e(!0)}(e);break;case ft.SYNC_MESSAGE:var i=t.data.b,r=t.data.h;if(a&&i.cmd&&-1==["launch_applet","hello"].indexOf(i.cmd.name))return;s=r,"video"===(n=i).cmd.ns&&v(n,s),"x"===n.cmd.ns&&m((d=n).b.cmd.ns,y(d));break;case ft.SYNC_PRESENCE:a||function(e){VizbeeSDK.logger.debug("SyncController::presenceHandler() - connected users count",e);var t=Sr.extend({},h);h=Sr.extend({},e),VizbeeSDK.logger.debug("SyncController::syncPresenceHandler - transition","from:",Object.keys(t),"to:",Object.keys(h)),function(e,t){var i=Object.keys(e||{}),r=Object.keys(t||{});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - previousIds: ",i," newIds: ",r);var n=r.filter(function(e){return-1===i.indexOf(e)});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - joinedIds: ",n);var s=i.filter(function(e){return-1===r.indexOf(e)});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - leftIds: ",s),n.forEach(function(e){var i=t[e];if(i){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user joined: ",e);var r={event:"JOIN",member:i};p.forEach(function(e){try{e(r)}catch(e){VizbeeSDK.logger.error("SyncController::notifyPresenceListeners - Error calling listener",e)}})}}),s.forEach(function(t){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user left: ",t);var i=e[t];if(i){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user left: ",t);var r={event:"LEAVE",member:i};p.forEach(function(e){try{e(r)}catch(e){VizbeeSDK.logger.error("SyncController::notifyPresenceListeners - Error calling listener",e)}})}})}(t,h),Er.updatePresence(e)}(t.data)}var n,s,d},n.connect(e),i.addListener(S),Er.isAppSet()&&(VizbeeSDK.logger.debug("SyncController::connect appIsSet"),l=!0,g()),u.forEach(e=>{e(dr.CONNECTED)}),s=window.setInterval(_,Ar)},disconnect:function(){VizbeeSDK.logger.debug("SyncController::disconnect() called"),clearInterval(s),i.removeListener(S),u.forEach(e=>{e(dr.NOT_CONNECTED)}),f(),n.disconnect(),o=!1},isConnected:function(){return o},addSessionStateListener:function(e){u.push(e)},sessionState:function(){return o?dr.CONNECTED:dr.NOT_CONNECTED},subscribeToPresence:function(e){"function"==typeof e&&(p.push(e),VizbeeSDK.logger.debug("SyncController::subscribeToPresence - listener added"))},unsubscribeFromPresence:function(e){const t=p.indexOf(e);t>-1&&(p.splice(t,1),VizbeeSDK.logger.debug("SyncController::unsubscribeFromPresence - listener removed"))},getActiveSenders:function(){return n&&"function"==typeof n.getActiveSenders?n.getActiveSenders():{}},enableSynchronousPublish:function(){try{var e=n&&n.baseSync;e&&"function"==typeof e.enableSynchronousPublish&&e.enableSynchronousPublish()}catch(e){VizbeeSDK.logger.error("SyncController::enableSynchronousPublish - error",e)}}};function g(){if(o&&l){a&&!d&&(d=!0,Ir.onSubscribedToSync()),VizbeeSDK.logger.debug("SyncController::sendJoin - sending initial JOIN HELLO UPD message");var e={cmd:{ns:"video",name:"hello",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}};n.send(e)}else VizbeeSDK.logger.debug("SyncController::sendJoin - NOT sending JOIN HELLO yet",o,l)}function f(){if(o&&l){VizbeeSDK.logger.debug("SyncController::sendOlleh - sending OLLEH UPD message");var e={cmd:{ns:"video",name:"olleh",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}};n.send(e)}else VizbeeSDK.logger.debug("SyncController::sendOlleh - NOT sending Olleh",o,l)}function v(e,t={}){var s,a,o,l;if(!("int"!==e.cmd.type&&e.hstatus&&"SCREEN"==e.hstatus.type||"req"!==e.cmd.type&&"int"!==e.cmd.type))switch(e.cmd.name){case"launch_applet":if(Sr.isUndefined(e.cmd.param))return;VizbeeSDK.logger.debug("SyncController::launch_applet - called",e.cmd.param),void 0!==window.VGA&&window.VGA.launch(e.cmd.param);break;case"hello":s={cmd:{ns:"video",name:"hello",type:"rsp"},hstatus:{id:r.deviceId,type:"SCREEN"}};try{"app"!==i.app.state?((l=T()).vstatus&&(s.vstatus=l.vstatus),l.vinfo&&(s.vinfo=l.vinfo),l.vinfoext&&(s.vinfoext=l.vinfoext),s.hstatus.vip="true"):s.hstatus.vip="false","int"==e.cmd.type&&(s.cmd.type="req"),n.send(s)}catch(e){VizbeeSDK.logger.error("SyncController::videoMessgaeHandler -- hello command. error ",e)}break;case"will_start_video":if(VizbeeSDK.logger.debug("SyncController::videoMessageHandler::will_start_video called",e),!(c=e.internal.videoInfo))return;var d=e.internal.videoStartsIn;d=d||0,Pr.willStart(c,d);break;case"start_video":VizbeeSDK.logger.debug("SyncController::videoMessageHandler::start_video called",e);var c=e.internal.videoInfo;let p=e.internal.startVideoSource?e.internal.startVideoSource:"default";if(!c)return;"app"!==i.app.state?(VizbeeSDK.logger.debug("SyncController::videoMessageHandler()::start_video -- CALLING VIDEOADAPTER.STOP()"),Pr.stop("stop_reason_before_next_video"),setTimeout(function(){VizbeeSDK.logger.debug("SyncController::videoMessageHandler()::start_video -- CALLING START AFTER STOP"),b(c,p)},3e3)):b(c,p);break;case"pause":if("video"!==i.app.state)return void VizbeeSDK.logger.warn("pause requested when not in 'video' state",i.app.state);Pr.pause();break;case"play":if("video"!==i.app.state)return void VizbeeSDK.logger.warn("play requested when not in 'video' state",i.app.state);Pr.play();break;case"stop":if("app"==i.app.state)return void VizbeeSDK.logger.warn("stop requested when in 'app' state",i.app.state);VizbeeSDK.logger.info("syccontroller:: stop ",e.cmd.param);var u=e.cmd.param||"stop_reason_unknown";Pr.stop(u);break;case"exit":s={cmd:{ns:"video",name:"olleh",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}},n.send(s),Pr.exit();break;case"olleh":"int"==e.cmd.type&&f();break;case"status":_();break;case"seek":if(i.ad.playing)return VizbeeSDK.logger.debug("1",i.ad),void VizbeeSDK.logger.debug(i.video);if(Sr.isUndefined(e.cmd.param))return void VizbeeSDK.logger.debug("2",e);if(a=parseInt(e.cmd.param,10),isNaN(a))return void VizbeeSDK.logger.debug("3",a);if(i.video&&i.video.duration&&(o=i.video.duration,VizbeeSDK.logger.debug("4",a,o),a>o))return;if(a<0)return void VizbeeSDK.logger.debug("5",a);Pr.seek(a);break;case"vol_up":"function"==typeof Pr.volumeUp&&Pr.volumeUp();break;case"vol_down":"function"==typeof Pr.volumeDown&&Pr.volumeDown();break;case"mute":"function"==typeof Pr.mute&&Pr.mute(!0);break;case"unmute":"function"==typeof Pr.mute&&Pr.mute(!1);break;case"set_tracks":"function"==typeof Pr.setTracks&&Pr.setTracks(e.cmd.param||[]);break;case"event":"function"==typeof Pr.onEvent&&e.einfo&&e.einfo.data&&(Pr.onEvent(e.einfo),"tv.vizbee.homesso.signin"===e.einfo.type&&function(e,t){m(e.type,y({h:t,b:{payload:e.data}}))}(e.einfo,t))}}function y(e){const t=e.h.ssinfo,i={deviceId:t.REMOTE_DEVICE_ID,deviceType:t.REMOTE_DEVICE_TYPE,friendlyName:t.REMOTE_FRIENDLY_NAME,networkSessionId:t.REMOTE_NETWORK_SESSION_ID};return{payload:e.b.payload,senderInfo:i}}function m(e,t){if(!window.vizbee||!window.vizbee.continuity||!window.vizbee.continuity.xmessages)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: xmessages not found");if(!window.vizbee.continuity.xmessages.VizbeeBicastSessionManager)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: session manager not found");const i=new window.vizbee.continuity.xmessages.VizbeeBicastSessionManager;if(!i)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: unable to create session manager instance");const r=i.getSession();if(!r)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: session not found");const n=r.getMessagingClient();n?n.onReceive(e,t.payload,t.senderInfo):VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: messaging client not found")}function b(e,t){VizbeeSDK.logger.debug("SyncController::doStartVideo -- called StateManager.reset()",i),i.reset(),VizbeeSDK.logger.debug("SyncController::doStartVideo -- calling setSyncVideoInfo",i,i.getSyncVideoInfo()),i.setSyncVideoInfo(e),i.syncStartVideoSource=t,VizbeeSDK.logger.debug("SyncController::doStartVideo -- calling VideoAdapter.start() with videoInfo",e),Pr.start(e)}function S(e){"appIsSet"===e.type?(VizbeeSDK.logger.debug("SyncController::stateHandler appIsSet"),l=!0,g()):_()}function _(){if("app"!==i.app.state)if("UNKNOWN"!==i.video.state)if("PAUSED_BY_AD"!==i.video.state||"UNKNOWN"!==i.ad.state){var e=T();n&&n.send(e)}else VizbeeSDK.logger.debug("SyncController:sendUpdate - unknown video/ad state, not sending. app/video/ad.state: ",i.app.state,i.video.state,i.ad.state);else VizbeeSDK.logger.verbose("SyncController::sendUpdate - UNKNOWN video state, not sending");else"AppStateManager"==i.type&&VizbeeSDK.logger.verbose("SyncController::sendUpdate - in app state, not sending update",i)}function T(){var e,t=i.video,r=i.ad,n=i.getSyncVideoInfo(),s=i.getCurrentVideoInfo(),a={cmd:{name:"status",ns:"video",type:"upd"}};t&&(e=t.volume,t.muted&&(e=0),a.vinfo={id:t.id,url:""},n.id||(n=s),a.vinfo.islive=!1,a.vinfoext={title:"",subtitle:"",imgurl:"",desc:"",videostarttime:0,custommetadata:{},customstreaminfo:{},qos:{}},VizbeeSDK.logger.verbose("SyncController::createStatusMessage:: - ",n,s),s&&s.id&&n&&n.id&&n.id==s.id?(a.vinfo.url=n.videourl,a.vinfo.islive=n.islive,a.vinfoext={title:n.title||"",subtitle:n.subtitle||"",imgurl:n.imgurl||"",desc:n.desc||"",videostarttime:n.starttime||0,custommetadata:n.customMetadata||n.custommetadata,customstreaminfo:n.customStreamInfo||n.customstreaminfo,qos:E(t)}):s&&s.id&&(a.vinfo.url=s.videourl,a.vinfo.islive=s.islive,a.vinfoext={title:s.title||"",subtitle:s.subtitle||"",imgurl:s.imgurl||"",desc:s.desc||"",videostarttime:s.starttime||0,custommetadata:s.customMetadata||s.custommetadata,customstreaminfo:s.customStreamInfo||s.customstreaminfo,qos:E(t)}),a.vinfoext.wasVideoStartedByVizbee=i.wasVideoStartedByVizbee(),a.vstatus={du:parseInt(t.duration,10)||-1,id:t.id,po:parseInt(t.position,10)||-1,st:t.state,vol:parseInt(e),cc:t.cc,tr:t.tr,er:t.error||{}},"Infinity"!=t.duration&&"0"!=t.duration||(a.vstatus.du=0)),r&&t&&"PAUSED_BY_AD"==t.state&&(a.adstatus={du:parseInt(r.duration,10)||-1,id:r.id,po:parseInt(r.position,10)||-1,st:r.state});var o=Er.getVideoInfo();return o&&(o.id&&(a.vinfo=a.vinfo||{},a.vinfo.id=o.id,a.vstatus=a.vstatus||{},a.vstatus.id=o.id),void 0!==o.videourl&&(a.vinfo=a.vinfo||{},a.vinfo.url=o.videourl),void 0!==o.islive&&(a.vinfo=a.vinfo||{},a.vinfo.islive=o.islive),void 0!==o.title&&(a.vinfoext=a.vinfoext||{},a.vinfoext.title=o.title),void 0!==o.subtitle&&(a.vinfoext=a.vinfoext||{},a.vinfoext.subtitle=o.subtitle),void 0!==o.imgurl&&(a.vinfoext=a.vinfoext||{},a.vinfoext.imgurl=o.imgurl),void 0!==o.isdvrsupported&&(a.vinfoext=a.vinfoext||{},a.vinfoext.isdvrsupported=o.isdvrsupported),void 0!==o.state&&(a.vstatus=a.vstatus||{},a.vstatus.st=o.state),void 0!==o.position&&(a.vstatus=a.vstatus||{},a.vstatus.po=parseInt(o.position,10)),void 0!==o.duration&&(a.vstatus=a.vstatus||{},a.vstatus.du=parseInt(o.duration,10))),a}function E(e){if(!e)return{};let t=e.qos||{};return{starttime:e.startTime||0,audiobufferlevel:e.audioBufferLevel,videobufferlevel:e.videoBufferLevel,adPodStartedTimeInMs:t.adPodStartedTimeInMs||0,adPodEndedTimeInMs:t.adPodEndedTimeInMs||0,loadReceivedByAppTimeInMs:t.loadReceivedByAppTimeInMs||0,loadReceivedByPlayerTimeInMs:t.loadReceivedByPlayerTimeInMs||0,metadataLoadedTimeInMs:t.metadataLoadedTimeInMs||0,playerReadyToPlayTimeInMs:t.playerReadyToPlayTimeInMs||0,playbackStartedTimeInMs:t.playbackStartedTimeInMs||0}}},Lr=ct(),Rr=we(),Kr=ut(),Ur=dt(),Br=lt(),Fr=function(){if(ur)return cr;ur=1;var e,t,i=I(),r=new(0,Me().EventEmitter),n={preparing:!1,playing:!1,alladscomplete:!1},s=-1,a=-1,o=!1;function l(e){var r={type:"ad",position:-1,duration:-1,preparing:n.preparing,playing:n.playing,alladscomplete:n.alladscomplete};return n.playing&&(a>0?(r.position=s,r.duration=a,VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::Status using app ad timing — po:",s,"du:",a)):t&&(r.position=1e3*t.currentTime(),r.duration=1e3*t.getDuration(),VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::Status using videoEl — po:",r.position,"du:",r.duration))),i.extend(r,e)}function d(e){var s,a,o=!i.contains(["timeupdate"],e.type);(n.preparing||n.playing)&&(s=new l,"timeupdate"!==e.type&&VizbeeSDK.logger.debug("AdAdapter::handleAdEvent() - not a timeupdate event",e.type),"preparing"===e.type&&(a="LOADING",s.id="UNKNOWN"),"play"===e.type&&(a="LOADING"),"playing"===e.type&&(a="PLAYING",t&&t.basePlayer&&t.basePlayer.videoInfo&&t.basePlayer.videoInfo.src&&(s.id=t.basePlayer.videoInfo.src)),"error"===e.type&&(a="INTERRUPTED",n.playing=!1),"ended"===e.type&&(a="FINISHED",n.playing=!1),s.playing=n.playing,a&&(s.state=a),r.emit("ad",s,o))}function c(e){var t=e.type||"UNKNOWN";VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::adsManagerHandleStateChange state:",t,"data:",e.data),-1!=["ad-pod-start","ad-pod-end","ad-start","ad-playing"].indexOf(t)&&(n.preparing=!1,n.playing=!1,"ad-pod-start"===t?(o=!1,n.preparing=!0,d({type:"preparing"})):"ad-start"===t?(o=!1,d({type:"play"})):"ad-playing"===t?(n.playing=!0,e.data&&(void 0!==e.data.duration&&e.data.duration>0&&(a=e.data.duration),void 0!==e.data.position&&e.data.position>=0&&(s=e.data.position),VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::ad-playing stored timing — po:",s,"du:",a))):("ad-pod-end"===t&&(n.playing=!1,n.alladscomplete=!0,s=-1,a=-1),r.emit("ad",new l({position:-1,duration:-1,state:"UNKNOWN",preparing:n.preparing,playing:n.playing}),!1)))}function u(i){VizbeeSDK.logger.debug("VIZBEE: AdAdapter.setAdVideo()",i),i&&((t=i).onError=function(e){n.playing&&(d({type:"error"}),o=!1)},t.onEnded=function(){n.playing&&(d({type:"ended"}),o=!1)},t.onTimeUpdate=function(e){n.playing&&(o?d({type:"timeupdate"}):(o=!0,d({type:"playing"})))},e||p(t))}function p(t){VizbeeSDK.logger.debug("VIZBEE: AdAdapter.setAdsManager()",t),(e=t).onEvent=c,u(e)}return cr={setAdVideo:u,setAdsManager:p,reset:function(){n.preparing=!1,n.playing=!1,n.alladscomplete=!1,s=-1,a=-1,r.emit("ad",new l({position:-1,duration:-1,state:"UNKNOWN"}),!1)},addListener:function(e){r.addListener("ad",e)},removeListener:function(e){r.removeListener("ad",e)}}}(),Hr=function(){if(hr)return pr;hr=1;var e,t,i=I(),r=new(0,Me().EventEmitter),n={playing:!1,alladscomplete:!1};function s(e){var r={type:"ad",position:-1,duration:-1,playing:n.playing,alladscomplete:n.alladscomplete};return t&&(r.position=1e3*t.currentTime,r.duration=1e3*t.duration),i.extend(r,e)}function a(e){var a,o,l=!i.contains(["timeupdate","progress","suspend"],e.type);n.playing&&(a=new s,"timeupdate"!==e.type&&VizbeeSDK.logger.debug("handleAdEvent",e.type,t.currentTime),"loadedmetadata"===e.type&&(o="LOADING"),"play"===e.type&&(o="LOADING",a.id=t.src),"playing"===e.type&&(o="PLAYING"),"error"===e.type&&(o="FAILED"),"ended"===e.type&&(o="FINISHED"),t.ended&&(o="FINISHED"),o&&(a.state=o),r.emit("ad",a,l))}function o(e){n.playing=e.type===google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,n.alladscomplete=e.type===google.ima.AdEvent.Type.ALL_ADS_COMPLETED,VizbeeSDK.logger.debug("ADADAPTER:adsManagerHandler",e.type,"playing",n.playing,"(currentTime "+t.currentTime+")"),r.emit("ad",new s({position:-1,duration:-1,state:"UNKNOWN"}),!1)}return pr={setAdVideo:function(e){!function(e,t){["error","play","playing","ended","timeupdate","loadedmetadata"].forEach(function(i){e.addEventListener(i,a,!1),t&&t.removeEventListener(i,a,!1)})}(e,t),t=e},setAdsManager:function(t){!function(e,t){google&&google.ima&&[google.ima.AdErrorEvent.Type.AD_ERROR,google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,google.ima.AdEvent.Type.ALL_ADS_COMPLETED].forEach(function(i){e&&e.addEventListener(i,o),t&&t.removeEventListener(i,o)})}(t,e),e=t,VizbeeSDK.logger.debug("adsManager cue points,",e.getCuePoints())},reset:function(){n.playing=!1,n.alladscomplete=!1,r.emit("ad",new s({position:-1,duration:-1,state:"UNKNOWN"}),!1)},addListener:function(e){r.addListener("ad",e)},removeListener:function(e){r.removeListener("ad",e)}},pr}(),Gr=function(){if(yr)return vr;yr=1,I();var e=function(){if(fr)return gr;fr=1;var e=Me().EventEmitter;const t="ad";var i=new e,r={type:t,state:"UNKNOWN",id:"UNKNOWN",position:-1,duration:-1,playing:!1,adPodStarted:!1,adPodsPlayedDuration:0,totalAdPodsDuration:0};return gr={adStatus:r,reset:function(){r.state="UNKNOWN",r.id="UNKNOWN",r.position=-1,r.duration=-1,r.playing=!1,r.adPodStarted=!1},resetTotalAdPodsDuration:function(){r.adPodsPlayedDuration=0,r.totalAdPodsDuration=0},addListener:function(e){i.addListener(t,e)},removeListener:function(e){i.removeListener(t,e)},notify:function(e){i.emit(t,r,e)}}}();const t=["loadedmetadata","play","playing","timeupdate","error","ended"];var i,r;function n(t){if(e.adStatus.adPodStarted){var n="LOADING";"loadedmetadata"==t.type||"play"==t.type?n="LOADING":"playing"==t.type?(e.adStatus.id=i.src,n="PLAYING"):"timeupdate"==t.type?n="PLAYING":"error"==t.type?n="FAILED":("ended"==t.type||i.ended)&&(n="FINISHED");var s=!1;n!=e.adStatus.state&&(s=!0,e.adStatus.state=n),e.adStatus.playing&&e.adStatus.duration>0&&r>=0?e.adStatus.position=1e3*i.currentTime-r:e.adStatus.position=-1,e.notify(s)}}function s(){e.reset(),r=-1}function a(){s(),e.notify()}return vr={setAdVideo:function(e){!function(e){e&&t.forEach(function(t){e.removeEventListener(t,n,!1)})}(i),function(e){e&&t.forEach(function(t){e.addEventListener(t,n,!1)})}(i=e)},setAdPodStart:function(t,i,r){s(),e.adStatus.adPodStarted=!0},setAdPodEnd:function(){a()},setTotalAdPodsDuration:function(t){e.adStatus.totalAdPodsDuration=t||0,e.notify(!1)},setAdStart:function(t,i){e.adStatus.playing=!0,r=t,e.adStatus.duration=i,e.adStatus.adPodsPlayedDuration+=i},setAdEnd:function(){e.adStatus.state="FINISHED",e.notify(!0),e.adStatus.playing=!1,r=-1,e.adStatus.duration=-1},getAdStatus:function(){return e.adStatus},reset:a,resetTotalAdPodsDuration:function(){e.resetTotalAdPodsDuration()},addListener:function(t){e.addListener(t)},removeListener:function(t){e.removeListener(t)}}}(),Wr=pt(),jr=(br||(br=1,mr={getDeviceID:function(e,t,i){if(VizbeeTV&&VizbeeTV.tv)VizbeeTV.tv.uniqueDeviceID(function(i){switch(VizbeeSDK.logger.debug("Device::getDeviceID - DeviceIDAlgorithm = "+VizbeeTV.tv.deviceIDAlgorithm),VizbeeTV.tv.deviceIDAlgorithm){case"VTV_SESSION_ID":case"VTV_DEFAULT":case"VTV_URL_PARAMS":i=e.platform+":"+i;break;case"VTV_INTERNAL_IP":i=e.platform+":"+e.externalIp.toLowerCase()+":"+i}VizbeeSDK.logger.debug("Device::getDeviceID - deviceID = "+i),t(i)},function(e){VizbeeSDK.logger.error("PROD","C:001 failed to fetch deviceId, halting SDK initialization",e),i&&i(e)},e);else{var r="VizbeeTV framework not initialized yet, halting SDK initialization";VizbeeSDK.logger.error("PROD","C:002",r),i&&i(r)}}}),mr),qr=void 0,Jr=void 0,Yr=!1,$r=[],Qr="vzb0000000";function Zr(){if(wr&&wr.features&&wr.features.shouldSyncDisconnectOnBackground){if(Yr)return;qr?qr.isConnected()||(VizbeeSDK.logger.i("SDK","onForeground","connecting VGA"),Yr=!0,tn(Qr,function(){Yr=!1,Jr&&!Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","onForeground","connecting APPLET after VGA ",Mr.id),Yr=!0,tn(Mr.id,function(){Yr=!1}))})):Jr&&!Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","onForeground","connecting APPLET ",Mr.id),Yr=!0,tn(Mr.id,function(){Yr=!1}))}}function Xr(){return VizbeeSDK.logger.i("SDK","onBackground"),wr&&wr.features&&wr.features.shouldExitOnBackground?(VizbeeSDK.logger.i("SDK","onBackground","exiting the app"),void VizbeeTV.tv.exit()):wr&&wr.features&&wr.features.shouldSyncDisconnectOnBackground?(VizbeeSDK.logger.i("SDK","onBackground","disconnecting from sync"),qr&&qr.isConnected()&&(VizbeeSDK.logger.i("SDK","_disconnectFromSync","disconnecting VGA"),qr.disconnect()),Jr&&Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","_disconnectFromSync","disconnecting APPLET"),Jr.disconnect()),void(Yr=!1)):void on()}function en(e){VizbeeSDK.logger.i("SDK","onEnd","sending olleh"),e&&e.isTeardown&&(qr&&qr.enableSynchronousPublish(),Jr&&Jr.enableSynchronousPublish()),on()}function tn(e,t){Or.getConfig({appId:e||Mr.id,deviceId:"",platform:VizbeeTV.tv.cloudPlatformName,platformModel:VizbeeTV.tv.platformModel,hostProxy:Mr.configServiceProxyHost},function(e){wr=e,VizbeeSDK.logger.d("SDK","getConfig","got config=",wr),wr.customAttributesForMetrics=Mr.customAttributesForMetrics,wr.features&&wr.features.enableIpv6Lookup?xr.getIpv6Address(function(e){VizbeeSDK.logger.d("SDK","getIpv6Address","got response=",e),wr.ipv6Address=e,rn(wr,t)}):(VizbeeSDK.logger.d("SDK","getIpv6Address","skipped - enableIpv6Lookup not set in screen config"),rn(wr,t))})}function rn(e,t){jr.getDeviceID(e,function(i){if(VizbeeSDK.logger.d("SDK","onConfigReady","using deviceid="+i),!function(e){if(!e||"string"!=typeof e)return!1;var t=e.split(":"),i=t[t.length-1];if(!i)return!1;var r=i.toLowerCase();return"unknown_device_id"!==r&&"0.0.0.0"!==r&&"127.0.0.1"!==r&&"localhost"!==r&&"undefined"!==r&&"null"!==r}(i))return VizbeeSDK.logger.e("SDK","onConfigReady","PROD - SDK init aborted: deviceId is a default/sentinel value; sync will not be established",i),Yr=!1,void(t&&t(void 0));e.deviceId=i,function(e,t){(function(e){if(e&&e.debug&&e.debug.clients&&e.debug.clients.length>0&&e.debug.server)for(var t=0;t<e.debug.clients.length;t++){var i=e.debug.clients[t];if(i.ip&&i.ip==e.externalIp){var r=e.appId+":"+e.platform+":"+e.externalIp,n=i.aka||r;n="["+n+"]",Se.enableRemoteLogging(e.debug.server,n),window.VizbeeSDK&&window.VizbeeSDK.logger.setLevel(window.VizbeeSDK.logger.LEVEL.DEBUG),window.VizbeeTV&&window.VizbeeTV.logger.setLevel(window.VizbeeTV.logger.LEVEL.DEBUG),window.VGA&&window.VGA.logger.setLevel(window.VGA.logger.LEVEL.DEBUG)}}})(e),e.appId==Qr||e.features&&e.features.targetAppType==Zi?(Qr=e.appId,qr||(qr=new zr(e,!0)),qr.connect(function(e){e?VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connected VGA"):VizbeeSDK.logger.e("SDK","onConfigAndDeviceIDReady","failed to connect VGA")})):(Jr||(VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","creating appletSyncController"),Jr=new zr(e,!1),Nr.each($r,e=>{e()})),VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connecting appletSyncController"),Jr.connect(function(e){e?VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connected APPLET"):VizbeeSDK.logger.e("SDK","onConfigAndDeviceIDReady","failed to connect APPLET")})),t&&t(e)}(e,t)},function(e){VizbeeSDK.logger.e("SDK","onConfigReady","PROD - SDK init aborted: deviceId fetch failed; sync will not be established",e),Yr=!1,t&&t(void 0)})}function nn(e){VizbeeSDK.logger.d("SDK","setApp"),Rr.setApp(e)}function sn(e){VizbeeSDK.logger.d("SDK","setVideo","video=",e),Ur.setVideo(e)}function an(e){Dr={vzb_ad_ima:Hr,vzb_ad_ssai:Gr,vzb_ad_ssai_avplay:null,vzb_ad_default:Fr}[e.toLowerCase()],Ur.setAdAdapter(Dr)}function on(){Wr.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"olleh",type:"int"}})}var ln={ContinuityContext:kr,QueueBase:null,QueueManager:null,QueueDelegate:null,QueueDelegateFactory:null},dn={VERSION:"7.8.40",wasVideoStartedByVizbee:function(){return Lr&&Lr.wasVideoStartedByVizbee()},init:function(e){VizbeeSDK.logger.i("SDK","init"),VizbeeTV.tv.appLifeCycleManager&&(VizbeeTV.tv.appLifeCycleManager.addHandler("onForeground",Zr),VizbeeTV.tv.appLifeCycleManager.addHandler("onBackground",Xr),VizbeeTV.tv.appLifeCycleManager.addHandler("onEnd",en)),Mr=e,VizbeeSDK.logger.i("SDK","onStart"),Mr&&Mr.id&&(function(e){var t;VizbeeSDK.logger.d("SDK","handleInitOptions"),e.video&&sn(e.video),e.app&&nn(e.app),e.videoAdapter&&(t=e.videoAdapter,VizbeeSDK.logger.d("SDK","setHostVideoAdapter","video=",t),Br.setVideoAdapter(t)),e.adType&&an(e.adType),e.VGA&&e.isVGA&&Kr.setVGA(e.VGA)}(Mr),Ur.init(),tn())},setApp:nn,setVideo:sn,setVideoGuid:function(e,t){Ur.setId(e,t)},setVideoInfo:function(e){VizbeeSDK.logger.d("SDK","setVideoInfo","videoInfo=",e),Ur.setVideoInfo(e)},setVideoStop:function(){Ur.setVideoStop()},setAdsVideo:function(e){VizbeeSDK.logger.d("SDK","setAdsVideo","video=",e),Dr?Dr.setAdVideo(e):VizbeeSDK.logger.d("SDK","setAdsVideo","AdAdapter not configured; skipping")},getAdsAdapter:function(){return Dr},setAdType:an,sendXMessage:function(e,t,i){if(!Jr)return void VizbeeSDK.logger.e("XMessages",this.constructor.name,"sendXMessage","appletSyncController not initialized");if(Nr.get(wr,["features","useXMessagesFormat"])){let i={type:"sync_proxy_video_cmds",cmd:{type:"req",ns:t,name:"x",param:""},payload:e};return VizbeeSDK.logger.d("XMessages",this.constructor.name,"sendXMessage",`sending message: ${JSON.stringify(i)} in new format to sync controller`),void Wr.send(i)}let r={type:"sync_proxy_video_cmds",cmd:{type:"req",ns:"video",name:"event",param:""},einfo:{type:t,data:e}};VizbeeSDK.logger.d("XMessages",this.constructor.name,"sendXMessage",`sending message: ${JSON.stringify(r)} in old format to sync controller`),Wr.send(r)},syncProxy:Wr,addSyncReadyListener:function(e){$r.push(e)},removeSyncReadyListener:function(e){$r=Nr.without($r,e)},getSyncController:function(){return Jr},getMetricsManager:function(){return Qi},wrapVideoCallbacks:Ur.wrapCallbacks,addVideoEventListener:Ur.addEventListener,removeVideoEventListener:Ur.removeEventListener,reset:function(){VizbeeSDK.logger.d("SDK","reset");try{Jr&&(Jr.disconnect(),Jr=void 0)}catch(e){VizbeeSDK.logger.e("SDK","reset","error disconnecting appletSyncController.",e)}try{Lr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AppStateManager",e)}try{Rr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AppAdapter",e)}try{Dr&&Dr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AdAdapter",e)}try{Ur.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset"," error resetting VideoAdapter",e)}try{Br.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting HostVideoAdapter",e)}try{Wr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting SyncProxy",e)}try{VizbeeTV.tv.appLifeCycleManager&&(VizbeeTV.tv.appLifeCycleManager.removeHandler("onForeground",Zr),VizbeeTV.tv.appLifeCycleManager.removeHandler("onBackground",Xr),VizbeeTV.tv.appLifeCycleManager.removeHandler("onEnd",en))}catch(e){VizbeeSDK.logger.e("SDK","reset","error removing app lifecycle handlers",e)}},framework:ln};window.VizbeeSDK||(window.VizbeeSDK={},VizbeeSDK.logger||(VizbeeSDK.logger=new Se,VizbeeSDK.logger.setPrefix("[Vizbee]")));var cn=window.VZB;cn=dn,window.VZB=cn;class un{constructor(){this.platformType="",this.platformConfig={},this.appAdapter=void 0,this.vgaAdapter=void 0,this.videoAdapter=void 0,this.adAdapter=void 0,this.vzbOptions={}}setOptions(e){e||(e={}),this.vzbOptions=e}getOptions(){return this.vzbOptions}initAppOnPlatform(e,t,i,r){this.appAdapter=t.appAdapter||t,this.vgaAdapter=t.vgaAdapter,this.videoAdapter=t.videoAdapter,this.adAdapter=t.adAdapter,this.platformType=i,this.platformConfig=r,this.platformConfig.appId=e,null==this.platformConfig.standalone&&(this.platformConfig.standalone=!0),VizbeeTV.init(this.platformType,this.platformConfig);var n=this.appAdapter.startVideo||function(){},s=this;this.appAdapter.startVideo=function(e,t){t=t||0,s.platformConfig.standalone||s.setVideoGuid(e.id,e.isLive||e.islive),n(e,t)};var a={id:e,app:this.appAdapter,videoAdapter:this.videoAdapter,adAdapter:this.adAdapter,customAttributesForMetrics:{}};this.vgaAdapter?(a.isVGA=!0,a.VGA=this.vgaAdapter):a.video=VizbeeTV.tv.player,a.customAttributesForMetrics=Object.assign(a.customAttributesForMetrics,this.platformConfig.customAttributesForMetrics,this.vzbOptions.customAttributesForMetrics),this.vzbOptions.configServiceProxyHost&&(a.configServiceProxyHost=this.vzbOptions.configServiceProxyHost),VZB.init(a)}setAdAdapterType(e){VZB.setAdType(e)}getAdsAdapter(){return VZB.getAdsAdapter()}setAdsVideo(e){VZB.setAdsVideo(e)}setVideoElement(e){if(!e)return"undefined"!=typeof VizbeeSDK&&VizbeeSDK.logger&&VizbeeSDK.logger.warn("BaseAPIWrapper::setVideoElement - INVALID newVideoElement"),!1;if(!this.platformConfig)return"undefined"!=typeof VizbeeSDK&&VizbeeSDK.logger&&VizbeeSDK.logger.warn("BaseAPIWrapper::setVideoElement - SDK not initialized"),!1;if(this.platformConfig.videoElement===e)return!0;this.platformConfig.videoElement=e;var t=Object.assign({},this.platformConfig,{standalone:!0});return"undefined"!=typeof VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player&&"function"==typeof VizbeeTV.tv.player.reconstruct&&VizbeeTV.tv.player.reconstruct(t),this.setAdsVideo(e),!0}setVideoGuid(e,t){VZB.setVideoGuid(e,t)}setVideoInfo(e){VZB.setVideoInfo(e),this.setVideoGuid(e.id||e.videourl,e.islive)}setVideoStop(){VZB.setVideoStop()}}class pn{setup(e,t){this.chromecastAPI=e,this.mediaManager=t}}class hn extends pn{setup(e,t){super.setup(e,t),this.setupAppProcessors(),this.setupProcessors()}setupAppProcessors(){this.appProcessOnLoad=this.mediaManager.onLoad.bind(this.mediaManager),this.appProcessOnMetadataLoaded=this.mediaManager.onMetadataLoaded.bind(this.mediaManager),this.appProcessOnPause=this.mediaManager.onPause.bind(this.mediaManager),this.appProcessOnEditTracksInfo=this.mediaManager.onEditTracksInfo.bind(this.mediaManager)}setupProcessors(){this.setupOnLoadProcessor(),this.setupOnMetadataLoadedProcessor(),this.setupOnPauseProcessor(),this.setupOnEditTracksInfo()}setupOnLoadProcessor(){var e=this;e.mediaManager.onLoad=t=>{var i=e.chromecastAPI.platformConfig.captionsType;i&&"cea608"==i.toLowerCase()&&(t.data.media.tracks=[{trackId:99,type:"TEXT",trackContentType:"text/608",name:"English",language:"en-US",subtype:"SUBTITLES"}]);var r=nr.getVideoInfo(t);r.vzbSenderOS&&r.vzbVersion&&(e.chromecastAPI.setVideoInfo(r),e.chromecastAPI.appAdapter&&e.chromecastAPI.appAdapter.adaptMediaInfo&&(t=e.chromecastAPI.appAdapter.adaptMediaInfo(t))),e.appProcessOnLoad(t)}}setupOnMetadataLoadedProcessor(){let e=this;e.mediaManager.onMetadataLoaded=t=>{var i=e.mediaManager.getMediaInformation(),r=i.customData;r&&r.vzbSenderOS&&r.vzbVersion&&e.chromecastAPI.setVideoGuid(i.customData.guid,"live"==i.streamType.toLowerCase()),e.appProcessOnMetadataLoaded(t)}}setupOnPauseProcessor(){var e=this;e.mediaManager.onPause=t=>{VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"pause",type:"req"}}),e.appProcessOnPause(t)}}setupOnEditTracksInfo(){var e=this;e.mediaManager.onEditTracksInfo=t=>{var r=t.data.activeTrackIds,n=e.chromecastAPI.platformConfig.captionsType,s=e.chromecastAPI.platformConfig.playerType&&e.chromecastAPI.platformConfig.playerType.toLowerCase();if(r.length>0)n&&"cea608"==n.toLowerCase()&&99==r[0]?s&&"bitmovin"===s?(VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - playerType=bitmovin player, handing off to app"),e.appProcessOnEditTracksInfo(t)):e.chromecastAPI.platformConfig.videoElement.textTracks[0].mode="showing":e.appProcessOnEditTracksInfo(t);else{VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - No Active Track IDs");var a=VizbeeTV.tv.player.getEnabledTracks(i);if(a&&a.length>0){var o=a[0].toJSON();if(n&&"cea608"==n.toLowerCase()&&99==o.idNum)return void(s&&"bitmovin"===s?(VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - playerType=bitmovin player, handing off to app"),e.appProcessOnEditTracksInfo(t)):e.chromecastAPI.platformConfig.videoElement.textTracks[0].mode="hidden")}e.appProcessOnEditTracksInfo(t)}}}}class gn extends pn{setup(e,t){super.setup(e,t);var i=this;i.mediaManager.onLoad=(i.mediaManager.onLoad.bind(i.mediaManager),function(e){var t=nr.getVideoInfo(e);t.islive||(t.starttime=1e3*t.starttime);var i={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"start_video",type:"req",param:t.starttime},vinfo:{id:t.id,url:t.videourl,islive:t.islive,deeplink:t.deeplink},vinfoext:{}};t.cuepoints&&(i.vinfoext.cuepoints=t.cuepoints),t.title&&(i.vinfoext.title=t.title),t.imgurl&&(i.vinfoext.imgurl=t.imgurl),t.desc&&(i.vinfoext.desc=t.desc),t.tracks&&(i.vinfoext.tracks=t.tracks),t.customstreaminfo&&(i.vinfoext.customstreaminfo=t.customstreaminfo),t.custommetadata&&(i.vinfoext.custommetadata=t.custommetadata),t.drminfo&&(i.vinfoext.drmcustomdata=t.drminfo.drmCustomData),t.drminfo&&(i.vinfoext.drmtype=t.drminfo.drmType),t.drminfo&&(i.vinfoext.drmlicenseurl=t.drminfo.drmLicenseURL),i.internal=t,VZB.syncProxy.send(i)}),i.mediaManager.onPlay=(i.mediaManager.onPlay.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"play",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onPause=(i.mediaManager.onPause.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"pause",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onSeek=(i.mediaManager.onSeek.bind(i.mediaManager),function(e){var t=nr.getVideoInfo(e),r={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"seek",type:"req",param:Math.round(1e3*t.starttime)}};VZB.syncProxy.send(r),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onStop=(i.mediaManager.onStop.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"stop",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onEditTracksInfo=function(e){var t={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"set_tracks",type:"req",param:e.data.activeTrackIds}};VZB.syncProxy.send(t),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}}}class fn extends hn{setupAppMediaManagerProcessor(e){this.appMediaManagerProcessor=e}setupAppProcessors(){this.appProcessOnLoad=this.appMediaManagerProcessor.onLoad.bind(this.appMediaManagerProcessor),this.appProcessOnPause=this.appMediaManagerProcessor.onPause.bind(this.appMediaManagerProcessor),this.appProcessOnPlay=this.appMediaManagerProcessor.onPlay.bind(this.appMediaManagerProcessor),this.appProcessOnSeek=this.appMediaManagerProcessor.onSeek.bind(this.appMediaManagerProcessor),this.appMediaManagerProcessor.onEditTracksInfo?this.appProcessOnEditTracksInfo=this.appMediaManagerProcessor.onEditTracksInfo.bind(this.appMediaManagerProcessor):this.appProcessOnEditTracksInfo=this.mediaManager.onEditTracksInfo.bind(this.mediaManager),this.appProcessOnStop=this.appMediaManagerProcessor.onStop.bind(this.appMediaManagerProcessor)}setupProcessors(){super.setupProcessors(),this.setupOnPlayProcessor(),this.setupOnSeekProcessor(),this.setupOnStopProcessor()}setupOnPlayProcessor(){var e=this;e.mediaManager.onPlay=t=>{let i=e.appProcessOnPlay(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}setupOnSeekProcessor(){var e=this;e.mediaManager.onSeek=t=>{let i=e.appProcessOnSeek(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}setupOnStopProcessor(){var e=this;e.mediaManager.onStop=t=>{let i=e.appProcessOnStop(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}}class vn{static createProcessor(e){return!e||e&&"default"==e.toLowerCase()?cast.framework?new null:new hn:e&&"custom"==e.toLowerCase()?new fn:e&&"sync"==e.toLowerCase()?new gn:void 0}}function yn(){this._positionMs=-1,this._durationMs=-1,this.onLoading=function(){},this.onPlaying=function(){},this.onPaused=function(){},this.onBuffering=function(){},this.onError=function(){},this.onInterrupted=function(){},this.onEnded=function(){},this.onTimeUpdate=function(){}}function mn(){this._eventListeners=[],this.onError=function(){},this.onEnded=function(){},this.onTimeUpdate=function(){};var e=this;Object.defineProperty(this,"onEvent",{configurable:!0,get:function(){},set:function(t){"function"==typeof t&&e._eventListeners.push(t)}})}function bn(e){e=e||{},this._getStatus=e.getStatus,this._setVideoSource=e.setVideoSource,this._setVideoGuid=e.setVideoGuid,this._installAdSource=e.installAdSource,this._intervalMs="number"==typeof e.intervalMs&&e.intervalMs>0?e.intervalMs:1e3,this._logger=e.logger||{debug:function(){},warn:function(){}},this._player=new yn,this._timer=void 0,this._installed=!1,this._lastGuid=void 0,this._lastEventType=void 0,this._adPlayer=new mn,this._adInstalled=!1,this._adActive=!1;var t=this;this._tick=function(){t._onTick()}}yn.prototype._setPositionMs=function(e){this._positionMs="number"==typeof e&&e>=0?e:-1},yn.prototype._setDurationMs=function(e){this._durationMs="number"==typeof e&&e>=0?e:-1},yn.prototype.currentTime=function(){return this._positionMs>=0?this._positionMs/1e3:0},yn.prototype.getDuration=function(){return this._durationMs>=0?this._durationMs/1e3:0},yn.prototype.getStartTime=function(){return 0},yn.prototype.getBufferLevel=function(){return 0},yn.prototype.getAudioBufferLevel=function(){return 0},yn.prototype.getStreamQualityInfo=function(){},yn.prototype.seek=function(){},yn.prototype.setTracks=function(){},yn.prototype.getTracks=function(){return[]},yn.prototype.getEnabledTracks=function(){return[]},yn.prototype.enableTracks=function(){},yn.prototype.disableTracks=function(){},yn.prototype.changeAudioTrack=function(){},mn.prototype.dispatchOnEvent=function(e){for(var t=this._eventListeners.length-1;t>-1;t--)if(this._eventListeners[t](e))return},mn.prototype.currentTime=function(){return 0},mn.prototype.getDuration=function(){return 0},mn.prototype.getStartTime=function(){return 0},mn.prototype.getBufferLevel=function(){return 0},mn.prototype.getAudioBufferLevel=function(){return 0},mn.prototype.getStreamQualityInfo=function(){},bn.prototype.start=function(){this._timer||(this._installed||"function"!=typeof this._setVideoSource||(this._setVideoSource(this._player),this._installed=!0),this._logger.debug("ChromecastStatusPoller::start",this._intervalMs),this._timer=setInterval(this._tick,this._intervalMs),this._tick())},bn.prototype.stop=function(){this._timer&&(clearInterval(this._timer),this._timer=void 0),this._lastGuid=void 0,this._lastEventType=void 0,this._adActive=!1,this._logger.debug("ChromecastStatusPoller::stop")},bn.prototype._onTick=function(){var e;try{e=this._getStatus&&this._getStatus()}catch(e){return void this._logger.warn("ChromecastStatusPoller::_onTick - getter threw",e)}e&&(this._handleAdChannel(e)||this._handleVideoChannel(e))},bn.prototype._handleAdChannel=function(e){return e.isPlayingAd?(this._adInstalled||"function"!=typeof this._installAdSource||(this._installAdSource(this._adPlayer),this._adInstalled=!0),this._adActive||(this._adPlayer.dispatchOnEvent({type:"ad-pod-start",data:{}}),this._adPlayer.dispatchOnEvent({type:"ad-start",data:{}}),this._adActive=!0),this._adPlayer.dispatchOnEvent({type:"ad-playing",data:{position:e.adPosition,duration:e.adDuration}}),this._adPlayer.onTimeUpdate(),!0):(this._adActive&&(this._adPlayer.dispatchOnEvent({type:"ad-pod-end",data:{}}),this._adActive=!1),!1)},bn.prototype._handleVideoChannel=function(e){var t=this._mapStateToEventType(e.state),i=e.id,r=!!i&&i!==this._lastGuid,n=this._isActiveEventType(t),s=this._isActiveEventType(this._lastEventType);i&&(r||n&&!s)&&("function"==typeof this._setVideoGuid&&this._setVideoGuid(i,!!e.islive),this._lastEventType=void 0),r&&(this._lastGuid=i),this._player._setPositionMs(e.position),this._player._setDurationMs(e.duration),t&&(t!==this._lastEventType?(this._fire(t),this._lastEventType=t):"playing"===t&&this._player.onTimeUpdate(this._player.currentTime()))},bn.prototype._fire=function(e){switch(e){case"loading":this._player.onLoading();break;case"playing":this._player.onPlaying();break;case"paused":this._player.onPaused();break;case"ended":this._player.onEnded();break;case"interrupted":this._player.onInterrupted();break;case"error":this._player.onError({reason:"error"})}},bn.prototype._isActiveEventType=function(e){return"playing"===e||"loading"===e||"paused"===e},bn.prototype._mapStateToEventType=function(e){if(e)switch(String(e).toUpperCase()){case"LOADING":case"BUFFERING":return"loading";case"STARTED":case"PLAYING":return"playing";case"PAUSED":case"PAUSED_BY_USER":return"paused";case"ENDED":case"FINISHED":return"ended";case"INTERRUPTED":return"interrupted";case"ERROR":case"FAILED":return"error";default:return}};const Sn={chromecast:class extends un{initAppOnPlatform(e,t,i,r,n){let s=cast.receiver.CastReceiverManager.getInstance();if(s.isSystemReady())VizbeeSDK.logger.error("Vizbee should be initialized before calling CastReceiverManager.start()");else try{VizbeeSDK.logger.debug("Vizbee: creating vizbee custom channel");let e=s.getCastMessageBus("urn:x-cast:tv.vizbee.sync");r.vizbeeCustomChannel=e}catch(e){VizbeeSDK.logger.error("Vizbee should be initialized before calling CastReceiverManager.start()")}if(super.initAppOnPlatform(e,t,i,r),r.mediaManager){r.mediaManagerProcessorType||(r.mediaManagerProcessorType="default");let e=vn.createProcessor(r.mediaManagerProcessorType);if("custom"==r.mediaManagerProcessorType.toLowerCase()){if(!n)return void VizbeeSDK.logger.info("Vizbee: Incorrect API usage - customProcessorForMediaManager is required when mediaManagerProcessorType is custom");e.setupAppMediaManagerProcessor(n)}e.setup(this,r.mediaManager)}else VizbeeSDK.logger.info("Vizbee: Incorrect API usage - mediaManager is a required property in initAppOnPlatform method.");this._maybeStartStatusPoller()}_maybeStartStatusPoller(){if(!this.statusPoller){var e=!(!this.platformConfig||!this.platformConfig.videoElement),t=!(!this.appAdapter||"function"!=typeof this.appAdapter.getVideoInfo);if(!e&&t){var i=this;this.statusPoller=new bn({intervalMs:this.vzbOptions&&this.vzbOptions.statusPollIntervalMs,logger:VizbeeSDK.logger,getStatus:function(){return i.appAdapter.getVideoInfo()},setVideoSource:function(e){"undefined"!=typeof VZB&&VZB.setVideo&&VZB.setVideo(e)},setVideoGuid:function(e,t){"undefined"!=typeof VZB&&VZB.setVideoGuid&&VZB.setVideoGuid(e,t)},installAdSource:function(e){"undefined"!=typeof VZB&&VZB.setAdsVideo&&VZB.setAdsVideo(e)}}),this.statusPoller.start()}}}setAdAdapterType(e){VZB.setAdType(e),this.setAdsVideo(this.platformConfig.videoElement)}}};class _n extends un{get VERSION(){return window.VZB?window.VZB.VERSION:""}init(e,t,i,r){let n=ye.getPlatformType();n&&this.initAppOnPlatform(e,t,n,i,t.mediaManagerAdapter,r)}initAppOnPlatform(e,t,i,r,n,s){i=i.toLowerCase(),Sn[i]&&!t.vgaAdapter?(this._apiWrapper=new Sn[i],this._apiWrapper.setOptions(s),this._apiWrapper.initAppOnPlatform(e,t,i,r,n)):(this._apiWrapper=new un,this._apiWrapper.setOptions(s),this._apiWrapper.initAppOnPlatform(e,t,i,r))}setVideoGuid(e,t){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoGuid(e,t),!0}setVideoInfo(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoInfo(e),!0}setVideoStop(){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoStop(),!0}getAdsManager(){if(this._isAPIWrapperInitialized())return this._apiWrapper.getAdsManager()}setAdsVideo(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setAdsVideo(e),!0}setVideoElement(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoElement(e)}setAdAdapterType(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setAdAdapterType(e),!0}wrapAVPlayerListener(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.wrapAVPlayerListener(e)}_isAPIWrapperInitialized(){return null!=this._apiWrapper}}let Tn,En;class In{constructor(){this.virtualAPIWrapper=cs,this.vzbOptions={}}static getInstance(){return null==Tn&&(Tn=new In),Tn}startWithOptions(e,t){this.vzbOptions=t||{},this.start(e)}start(e){this.isValidAppId(e)&&this.virtualAPIWrapper.init(e,{},{},this.vzbOptions)}isValidAppId(e){if("string"!=typeof e)return!1;let t=new RegExp("^vzb[0-9]+$"),i=new RegExp("^vzb(-[A-Za-z]+)+-[0-9]+$");return t.test(e)||i.test(e)}}class Pn{constructor(){this._configServiceProxyHost=void 0,this._customAttributesForMetrics=void 0}get configServiceProxyHost(){return this._configServiceProxyHost}set configServiceProxyHost(e){this._configServiceProxyHost=e}get customAttributesForMetrics(){return this._customAttributesForMetrics}set customAttributesForMetrics(e){this._customAttributesForMetrics=e}}class Vn{get ContinuityContext(){return In}get ContinuityOptions(){return Pn}}class An{constructor(){this.deeplinkHandler=void 0,this.vizbeeEventHandler=void 0,this.vizbeeSigninEventHandler=void 0}setSignInHandler(e){"function"==typeof e?this.vizbeeSigninEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setSignInHandler - NO SIGNIN Handler implemented by HostApp")}setDeeplinkHandler(e){"function"==typeof e?this.deeplinkHandler=e:vizbee.logger.warn(this.constructor.name+"::setDeeplinkHandler - NO DEEPLINK Handler implemented by HostApp")}setVizbeeEventHandler(e){"function"==typeof e?this.vizbeeEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setVizbeeEventHandler - NO Event Handler implemented by HostApp")}setVizbeeSigninEventHandler(e){"function"==typeof e?this.vizbeeSigninEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setVizbeeSigninEventHandler - NO Event Handler implemented by HostApp")}}class Cn{static get AD_POD_WAITING(){return"awaiting-ad-pod"}static get AD_POD_START(){return"ad-pod-start"}static get AD_PREPARING(){return"ad-preparing"}static get AD_START(){return"ad-start"}static get AD_PLAYING(){return"ad-playing"}static get AD_PAUSED(){return"ad-paused"}static get AD_END(){return"ad-end"}static get AD_POD_END(){return"ad-pod-end"}static get AD_ERROR(){return"ad-error"}}class kn{constructor(e,t){this._eventType=e,this._eventData=t}set eventType(e){this._eventType=e}get eventType(){return this._eventType}set eventData(e){this._eventData=e}get eventData(){return this._eventData}}class Dn{constructor(e,t){this.type=e,this.data=t}}class Mn{constructor(e,t){this.adType=e,this.playerElement=t,this.vtvPlayerEvent=new Dn}updateAdStatus(e){this._isValidAdStatus(e)?this._handleAdStatus(e):vizbee.logger.verbose("AdAdapter::updateAdStatus - invalid ad status")}_isValidAdStatus(e){return e instanceof kn?-1!=[Cn.AD_POD_WAITING,Cn.AD_PREPARING,Cn.AD_POD_START,Cn.AD_POD_END,Cn.AD_START,Cn.AD_PLAYING,Cn.AD_PAUSED,Cn.AD_END,Cn.AD_ERROR].indexOf(e.eventType)||(vizbee.logger.warn(`AdAdapter::_isValidAdStatus - adStatus event type is invalid: ${e.eventType}`),!1):(vizbee.logger.warn("AdAdapter::_isValidAdStatus - adStatus is not an instance of vizbee.continuity.messages.AdStatus"),!1)}_handleAdStatus(e){e?(vizbee.logger.verbose(`AdAdapter::_handleAdStatus - eventType: ${e.eventType}`),this.vtvPlayerEvent.type=e.eventType,this.vtvPlayerEvent.data=e.eventData||{},VizbeeTV.tv.player.dispatchOnEvent(this.vtvPlayerEvent)):vizbee.logger.warn("AdAdapter::_handleAdStatus - invalid ad status")}}class wn{constructor(e,t){this.playerType=e,this.playerElement=t,this.playHandler=void 0,this.pauseHandler=void 0,this.seekHandler=void 0,this.stopHandler=void 0,this.videoInfoGetter=void 0,this.tracksGetHandler=void 0,this.enabledTracksGetHandler=void 0,this.enableTracksHandler=void 0,this.disableTracksHandler=void 0,this.vizbeeEventHandler=void 0}setPlayerType(e){e&&(this.playerType=e)}setPlayerElement(e){e&&(this.playerElement=e)}updateVideoInfo(e){window.vizbee&&vizbee.continuity.ContinuityContext.getInstance().setVideoInfo(e)}setVideoInfoGetter(e){"function"==typeof e&&(this.videoInfoGetter=e)}getVideoInfo(){if(this.videoInfoGetter)return this.videoInfoGetter()}setPlayHandler(e){"function"==typeof e&&(this.playHandler=e)}setPauseHandler(e){"function"==typeof e&&(this.pauseHandler=e)}setSeekHandler(e){"function"==typeof e&&(this.seekHandler=e)}setStopHandler(e){"function"==typeof e&&(this.stopHandler=e)}getTracksHandler(e){"function"==typeof e&&(this.tracksGetHandler=e)}getEnabledTracksHandler(e){"function"==typeof e&&(this.enabledTracksGetHandler=e)}setAvailableTracksGetter(e){"function"==typeof e&&(this.tracksGetHandler=e)}setEnabledTracksGetter(e){"function"==typeof e&&(this.enabledTracksGetHandler=e)}setEnableTracksHandler(e){"function"==typeof e&&(this.enableTracksHandler=e)}setDisableTracksHandler(e){"function"==typeof e&&(this.disableTracksHandler=e)}setVizbeeEventHandler(e){"function"==typeof e&&(this.vizbeeEventHandler=e)}}class Nn{static get UNKNOWN(){return"unknown"}static get HTML(){return"html"}static get AVPLAYER(){return"avplayer"}static get BITMOVIN(){return"bitmovin"}static get VIDEOJS(){return"videojs"}static get THEO(){return"theo"}static get SHAKA(){return"shaka"}}class On{static get UNKNOWN(){return"unknown"}static get SSAI(){return"ssai"}static get CSAI(){return"csai"}}class xn{constructor(){this._guid="",this._isLive=!1,this._startTime=0,this._videoUrl="",this._deeplink="",this._imgUrl="",this._title="",this._subtitle="",this._desc="",this._tracks=[],this._cuepoints=[],this._customStreamInfo=void 0,this._customMetadata=void 0}toJson(){let e={};return e.id=this._guid,e.islive=this._isLive,e.starttime=this._startTime,e.videourl=this._videoUrl,e.deeplink=this._deeplink,e.imgurl=this._imgUrl,e.title=this._title,e.subtitle=this._subtitle,e.desc=this._desc,e.tracks=this._tracks,e.cuepoints=this._cuepoints,e.customstreaminfo=this._customStreamInfo,e.custommetadata=this._customMetadata,e}fromJson(e){e?(this._guid=e.id,this._isLive=e.islive,this._startTime=e.starttime,this._videoUrl=e.videourl,this._deeplink=void 0!==e.deeplink&&null!==e.deeplink?e.deeplink:"",this._imgUrl=e.imgurl,this._title=e.title,this._subtitle=e.subtitle,this._desc=e.desc,this._tracks=e.tracks,this._cuepoints=e.cuepoints,this._customStreamInfo=e.customstreaminfo,this._customMetadata=e.custommetadata):vizbee.logger.debug(this.constructor.name+"::toJson - invalid syncVideoInfo")}set isLive(e){this._isLive=e}get isLive(){return this._isLive}set guid(e){this._guid=e}get guid(){return this._guid}set videoUrl(e){this._videoUrl=e}get videoUrl(){return this._videoUrl}set deeplink(e){this._deeplink=e}get deeplink(){return this._deeplink}set imgUrl(e){this._imgUrl=e}get imgUrl(){return this._imgUrl}set title(e){this._title=e}get title(){return this._title}set subtitle(e){this._subtitle=e}get subtitle(){return this._subtitle}set desc(e){this._desc=e}get desc(){return this._desc}set startTime(e){this._startTime=e}get startTime(){return this._startTime}set tracks(e){this._tracks=e}get tracks(){return this._tracks}set cuepoints(e){this._cuepoints=e}get cuepoints(){return this._cuepoints}set customStreamInfo(e){this._customStreamInfo=e}get customStreamInfo(){return this._customStreamInfo}set customMetadata(e){this._customMetadata=e}get customMetadata(){return this._customMetadata}}class zn{static get IDLE(){return"idle"}static get PREPARING(){return"preparing"}static get LOADING(){return"loading"}static get STARTED(){return"started"}static get PLAYING(){return"playing"}static get PAUSED(){return"paused"}static get BUFFERING(){return"buffering"}static get INTERRUPTED(){return"interrupted"}static get ENDED(){return"ended"}static get ERROR(){return"error"}}class Ln{constructor(){this._guid="",this._state=zn.IDLE,this._currentPosition=-1,this._duration=-1,this._isLive=!1,this._isDvrSupported=!1,this._title="",this._subtitle="",this._videoUrl="",this._imgUrl=""}set guid(e){this._guid=e}get guid(){return this._guid}set state(e){this._state=e}get state(){return this._state}set currentPosition(e){this._currentPosition=e}get currentPosition(){return this._currentPosition}set duration(e){this._duration=e}get duration(){return this._duration}set isLive(e){this._isLive=e}get isLive(){return this._isLive}set isDvrSupported(e){this._isDvrSupported=e}get isDvrSupported(){return this._isDvrSupported}set title(e){this._title=e}get title(){return this._title}set subtitle(e){this._subtitle=e}get subtitle(){return this._subtitle}set videoUrl(e){this._videoUrl=e}get videoUrl(){return this._videoUrl}set imgUrl(e){this._imgUrl=e}get imgUrl(){return this._imgUrl}}class Rn{constructor(){this._type="",this._data=void 0}set type(e){this._type=e}get type(){return this._type}set data(e){this._data=e}get data(){return this._data}}class Kn extends In{constructor(){super(),this.appAdapter=new An,this.playerAdapter=void 0,this.adAdapter=void 0,this.adType=void 0}static getInstance(){return null==En&&(En=new Kn,vizbee.logger.d(this.constructor.name,"getInstance","created")),En}getAppAdapter(){return this.appAdapter}setAppAdapter(e){e instanceof An&&(this.appAdapter=e)}getPlayerAdapter(){return this.playerAdapter}setPlayerAdapter(e){if(!this._isPlatformPlayerInitialized())return vizbee.logger.w("DefaultContinuityContext::setPlayerAdapter - Vizbee platform player not initialized"),!1;if(!this._isValidPlayerAdapter(e))return vizbee.logger.w("DefaultContinuityContext::setPlayerAdapter - playerAdapter should be valid and of type vizbee.continuity.adapters.PlayerAdapter"),!1;this.playerAdapter=e;let t=this._buildPlatformConfig(e);return VizbeeTV.tv.player.reconstruct(t),this._setAdAdapter(),!0}removePlayerAdapter(e){return this._isPlatformPlayerInitialized()?(this.stopVideo(),this.playerAdapter=void 0,!0):(vizbee.logger.w(this.constructor.name,"resetPlayerAdapter","Vizbee platform player not initialized"),!1)}setPlayerAdapterWithVideoInfo(e,t){return!!this.setPlayerAdapter(e)&&this.setVideoInfo(t)}setVideoInfo(e){return!!this._isValidVideoInfo(e)&&this.virtualAPIWrapper.setVideoInfo(e.toJson())}getVideoInfo(){if(this.playerAdapter&&this.playerAdapter.getVideoInfo){let e=this.playerAdapter.getVideoInfo();if(e instanceof Ln)return e}}getAdAdapter(e){return this.adAdapter}setAdAdapter(e){return e instanceof Mn?this._isValidAdType(e.adType)?(this.adAdapter=e,this.setAdType(On.CSAI),void this._setAdAdapter()):(vizbee.logger.w("DefaultContinuityContext::setAdAdapter - adAdapter.adType is INVALID"),!1):(vizbee.logger.w("DefaultContinuityContext::setAdAdapter - AdAdapter should be of type vizbee.continuity.adapters.AdAdapter"),!1)}removeAdAdapter(e){this.adAdapter=void 0}setAdType(e){this._isValidAdType(e)&&(this.adType=e,this._setAdAdapter())}start(e){if(!this.isValidAppId(e))return;let t={};t.appAdapter={startVideo:e=>{if(this.appAdapter&&this.appAdapter.deeplinkHandler){let t=new xn;t.fromJson(e),this.appAdapter.deeplinkHandler(t)}else vizbee.logger.w(this.constructor.name,"startVideo","NO DEEPLINK HANDLER")},onEvent:e=>{if(this.appAdapter&&this.appAdapter.vizbeeSigninEventHandler&&e&&"tv.vizbee.homesign.signin"===e.type){let t=new Rn;t.type=e.type,t.data=e.data,this.appAdapter.vizbeeSigninEventHandler(t)}if(this.appAdapter&&this.appAdapter.vizbeeEventHandler&&e){let t=new Rn;t.type=e.type,t.data=e.data,this.appAdapter.vizbeeEventHandler(t)}if(this.playerAdapter&&this.playerAdapter.vizbeeEventHandler&&e){let t=new Rn;t.type=e.type,t.data=e.data,this.playerAdapter.vizbeeEventHandler(t)}},playVideo:()=>!(!this.playerAdapter||!this.playerAdapter.playHandler||(this.playerAdapter.playHandler(),0)),pauseVideo:()=>!(!this.playerAdapter||!this.playerAdapter.pauseHandler||(this.playerAdapter.pauseHandler(),0)),seekVideo:e=>!(!this.playerAdapter||!this.playerAdapter.seekHandler||(this.playerAdapter.seekHandler(e),0)),stopVideo:e=>!(!this.playerAdapter||!this.playerAdapter.stopHandler||(this.playerAdapter.stopHandler(e),0)),getTracks:()=>!(!this.playerAdapter||!this.playerAdapter.tracksGetHandler)&&this.playerAdapter.tracksGetHandler(),getEnabledTracks:()=>!(!this.playerAdapter||!this.playerAdapter.enabledTracksGetHandler)&&this.playerAdapter.enabledTracksGetHandler(),enableTracks:e=>!(!this.playerAdapter||!this.playerAdapter.enableTracksHandler||(this.playerAdapter.enableTracksHandler(e),0)),disableTracks:e=>!(!this.playerAdapter||!this.playerAdapter.disableTracksHandler||(this.playerAdapter.disableTracksHandler(e),0)),getVideoInfo:()=>{if(this.playerAdapter&&this.playerAdapter.getVideoInfo){let e=this.playerAdapter.getVideoInfo();if(e instanceof Ln){let t={};return e.guid&&(t.id=e.guid),e.videoUrl&&(t.videourl=e.videoUrl),!1!==e.isLive&&(t.islive=e.isLive),!1!==e.isDvrSupported&&(t.isdvrsupported=e.isDvrSupported),e.title&&(t.title=e.title),e.subtitle&&(t.subtitle=e.subtitle),e.imgUrl&&(t.imgurl=e.imgUrl),e.state&&"idle"!==e.state&&(t.state=this._mapPlayerStateToSyncState(e.state)),e.currentPosition>=0&&(t.position=e.currentPosition),e.duration>=0&&(t.duration=e.duration),t}}}},this.virtualAPIWrapper.init(e,t,{},this.vzbOptions)}stopVideo(){vizbee.logger.d(this.constructor.name,"stopVideo"),this.virtualAPIWrapper&&this.virtualAPIWrapper.setVideoStop&&(vizbee.logger.d(this.constructor.name,"stopVideo","calling setVideoStop"),this.virtualAPIWrapper.setVideoStop())}_buildPlatformConfig(e){let t={standalone:!0,videoElement:e.playerElement,vtvPlayerListConfig:[{type:"native"}]};return e.playerType==Nn.BITMOVIN&&(t.vtvPlayerListConfig=[{type:"bitmovin"}]),e.playerType==Nn.VIDEOJS&&(t.vtvPlayerListConfig=[{type:"videojs"}]),e.playerType==Nn.THEO&&(t.vtvPlayerListConfig=[{type:"theo"}]),e.playerType==Nn.SHAKA&&(t.vtvPlayerListConfig=[{type:"shaka"}]),t}_isValidVideoInfo(e){return e instanceof xn||(vizbee.logger.w(this.constructor.name,"_isValidVideoInfo","videoInfo should be of type vizbee.continuity.messages.VideoInfo"),!1)}_isValidPlayerAdapter(e){return e instanceof wn?!(e&&!e.playerElement&&(vizbee.logger.d(this.constructor.name,"_isValidPlayerAdapter","playerAdapter should contain playerElement"),1)):(vizbee.logger.d(this.constructor.name,"_isValidPlayerAdapter","playerAdapter should be of type vizbee.continuity.adapters.PlayerAdapter"),!1)}_isPlatformInitialized(){return VizbeeTV&&VizbeeTV.tv}_isPlatformPlayerInitialized(){return this._isPlatformInitialized()&&VizbeeTV.tv.player}_isValidAdType(e){return e?e==On.SSAI||e==On.CSAI||(vizbee.logger.w(`DefaultContinuityContext::_isValidAdType - adType is invalid: ${e}`),!1):(vizbee.logger.w("DefaultContinuityContext::_isValidAdType - adType is undefined"),!1)}_mapPlayerStateToSyncState(e){return{idle:"UNKNOWN",preparing:"UNKNOWN",loading:"BUFFERING",started:"PLAYING",playing:"PLAYING",paused:"PAUSED",buffering:"BUFFERING",interrupted:"INTERRUPTED",ended:"FINISHED",error:"FAILED"}[e]||e}_getAdAdapterType(e){if(e&&e.playerType)return this.adType==On.CSAI?"vzb_ad_default":this.adType==On.SSAI?e.playerType==Nn.AVPLAYER?"vzb_ad_ssai_avplay":"vzb_ad_default":void 0;vizbee.logger.w(this.constructor.name,"_getAdAdapterType","INVALID playerAdapter")}_setAdAdapter(){let e=this._getAdAdapterType(this.playerAdapter);e&&this.virtualAPIWrapper&&VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player&&(this.virtualAPIWrapper.setAdAdapterType(e),this.virtualAPIWrapper.setAdsVideo(VizbeeTV.tv.player))}}class Un{constructor(){this.playHandler=void 0,this.pauseHandler=void 0,this.seekHandler=void 0,this.stopHandler=void 0,this.videoInfoGetter=void 0,this.enableTracksHandler=void 0,this.disableTracksHandler=void 0,this.availableTracksGetter=void 0,this.enabledTracksGetter=void 0,this.vizbeeEventHandler=void 0}updateVideoInfo(e){window.vizbee&&vizbee.continuity.ContinuityContext.getInstance().setVideoInfo(e)}setVideoInfoGetter(e){"function"==typeof e&&(this.videoInfoGetter=e)}getVideoInfo(){if(this.videoInfoGetter)return this.videoInfoGetter()}updateVideoStatus(e){}setPlayHandler(e){"function"==typeof e&&(this.playHandler=e)}setPauseHandler(e){"function"==typeof e&&(this.pauseHandler=e)}setSeekHandler(e){"function"==typeof e&&(this.seekHandler=e)}setStopHandler(e){"function"==typeof e&&(this.stopHandler=e)}setAvailableTracksGetter(e){"function"==typeof e&&(this.availableTracksGetter=e)}setEnabledTracksGetter(e){"function"==typeof e&&(this.enabledTracksGetter=e)}setEnableTracksHandler(e){"function"==typeof e&&(this.enableTracksHandler=e)}setDisableTracksHandler(e){"function"==typeof e&&(this.disableTracksHandler=e)}setVizbeeEventHandler(e){"function"==typeof e&&(this.vizbeeEventHandler=e)}}class Bn extends ${constructor(e){if(!(e instanceof $))throw new TypeError("BasePlayerExtension::constructor() - playerToExtend must be instance of BasePlayerExtensible.");super(e.platform),this.extendedPlayer=e,this.parentExtension=null,this.isExtendedPlayerBasePlayer()||(this.extendedPlayer.parentExtension=this),this.registerEvents(this.extendedPlayer,this),VizbeeTV.logger.debug(this.constructor.name+"::constructed")}registerEvents(e,t){e&&t?(e.onLoading=e=>{this.onLoadingHandler.call(t,e)},e.onStarted=e=>{this.onStartedHandler.call(t,e)},e.onPlaying=e=>{this.onPlayingHandler.call(t,e)},e.onPaused=e=>{this.onPausedHandler.call(t,e)},e.onBuffering=e=>{this.onBufferingHandler.call(t,e)},e.onBufferingComplete=e=>{this.onBufferingCompleteHandler.call(t,e)},e.onTimeUpdate=e=>{this.onTimeUpdateHandler.call(t,e)},e.onInterrupted=e=>{this.onInterruptedHandler.call(t,e)},e.onEnded=e=>{this.onEndedHandler.call(t,e)},e.onError=e=>{this.onErrorHandler.call(t,e)},e.onEvent=e=>{this.onEventHandler.call(t,e)}):VizbeeTV.logger.error(this.constructor.name+"::registerEvents - MISSING playerToExtend/currentPlayer")}reconstruct(e){this.extendedPlayer.reconstruct(e)}beforeStart(e){super.start(e)}start(e){this.beforeStart(e),this.extendedPlayer.start(e)}play(){this.extendedPlayer.play()}pause(){this.extendedPlayer.pause()}togglePlayPause(){VizbeeTV.logger.debug("BasePlayerExtension::togglePlayPause() -- called"),this.extendedPlayer.togglePlayPause()}stop(e){this.extendedPlayer.stop(e)}seek(e){this.extendedPlayer.seek(e)}currentTime(){return this.extendedPlayer.currentTime()}getDuration(){return this.extendedPlayer.getDuration()}getStartTime(){return this.extendedPlayer.getStartTime()}getBufferLevel(){return this.extendedPlayer.getBufferLevel()}getAudioBufferLevel(){return this.extendedPlayer.getAudioBufferLevel()}getCurrentState(){return this.extendedPlayer.getCurrentState()}getCurrentVersion(){return this.extendedPlayer.getCurrentVersion()}getTracks(e){return this.extendedPlayer.getTracks(e)}getEnabledTracks(e){return this.extendedPlayer.getEnabledTracks(e)}setTracks(e){return this.extendedPlayer.setTracks(e)}enableTracks(e){this.extendedPlayer.enableTracks(e)}disableTracks(e){this.extendedPlayer.disableTracks(e)}changeAudioTrack(e){this.extendedPlayer.changeAudioTrack(e)}doAction(e){return this.extendedPlayer.doAction(e)}getName(){return this.extendedPlayer.getName()}destroy(){this.resetListeners(),this.extendedPlayer.destroy()}getStreamQualityInfo(){return this.extendedPlayer?this.extendedPlayer.getStreamQualityInfo():{}}setStreamQualityInfo(e){this.extendedPlayer&&this.extendedPlayer.setStreamQualityInfo(e)}resetStreamQualityInfo(){this.extendedPlayer&&this.extendedPlayer.resetStreamQualityInfo()}get basePlayer(){return this.isExtendedPlayerBasePlayer()?this.extendedPlayer.currentPlayer:this.extendedPlayer instanceof Bn?this.extendedPlayer.basePlayer:void 0}isExtendedPlayerBasePlayer(){return this.extendedPlayer instanceof $&&!(this.extendedPlayer instanceof Bn)}get parentPlayer(){return this.parentExtension}onLoadingHandler(e){this.dispatchOnLoading.call(this,e)}onStartedHandler(e){this.dispatchOnStarted.call(this,e)}onPlayingHandler(e){this.dispatchOnPlaying.call(this,e)}onPausedHandler(e){this.dispatchOnPaused.call(this,e)}onBufferingHandler(e){this.dispatchOnBuffering.call(this,e)}onBufferingCompleteHandler(e){this.dispatchOnBufferingComplete.call(this,e)}onTimeUpdateHandler(e){this.dispatchOnTimeUpdate.call(this,e)}onInterruptedHandler(e){this.dispatchOnInterrupted.call(this,e)}onEndedHandler(e){this.dispatchOnEnded.call(this,e)}onErrorHandler(e){this.dispatchOnError.call(this,e)}onEventHandler(e){this.dispatchOnEvent.call(this,e)}}class Fn extends wn{constructor(){super(Nn.AVPLAYER,webapis.avplay)}setPlayerType(e){}setPlayerElement(e){}wrapListener(e){let t=this._getVTVAVPlayer();return null==t?(vizbee.logger.warn(this.constructor.name+"::wrapListener - can't get AVPlayer"),e):t.wrapAVPlayerListener(e)}getListener(){let e=this._getVTVAVPlayer();if(null!=e)return e.getListener();vizbee.logger.warn(this.constructor.name+"::getListener - can't get AVPlayer")}_getVTVAVPlayer(){if(!this.playerElement)return;let e,t;if(VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player)return e=VizbeeTV.tv.player,Object.getPrototypeOf(e.constructor).name===Bn.name?t=e.basePlayer:Object.getPrototypeOf(e.constructor).name===$.name&&(t=e.currentPlayer),t&&"avplayer"==t.getName().toLowerCase()?t:void vizbee.logger.warn(this.constructor.name+"::_getVTVAVPlayer - can't get AVPlayer");vizbee.logger.warn(this.constructor.name+"::_getVTVAVPlayer - can't get platform player")}}class Hn{static get STOP_REASON_UNKNOWN(){return"stop_reason_unknown"}static get STOP_BY_USER(){return"stop_by_user"}static get STOP_IMPLICIT(){return"stop_implicit"}static get STOP_REASON_BEFORE_NEXT_VIDEO(){return"stop_reason_before_next_video"}}class Gn{constructor(){}wasAppLaunchedByVizbee(){return!!VizbeeTV.tv.launchParamsDeferral&&VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()}wasVideoStartedByVizbee(){return VZB.wasVideoStartedByVizbee()}addProvider(e,t){const i=VZB.getMetricsManager();i&&i.addProvider(e,t)}removeProvider(e){const t=VZB.getMetricsManager();t&&t.removeProvider(e)}logMetrics(e,t){const i=VZB.getMetricsManager();i&&i.trackEvent(e,t)}setCustomAttributes(e){const t=VZB.getMetricsManager();t&&t.setCustomProperties(e)}}class Wn{constructor(){this._type="",this._id=-1}toJSON(){return{type:this._type,id:this._id}}fromJSON(e){e&&e.type&&!isNaN(e.id)?(this._type=e.type,this._id=e.id):VizbeeSDK.logger.verbose("Track::fromJSON - invalid trackInfo")}set type(e){this._type=e}get type(){return this._type}set id(e){this._id=e}get id(){return this._id}}class jn extends Wn{constructor(){super(),this.type=i,this.subtype="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.subtype=this._subtype,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._subtype=e.subtype):VizbeeSDK.logger.verbose("SubtitleTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set subtype(e){this._subtype=e}get subtype(){return this._subtype}}class qn{constructor(){this.state={message:"This is vizbee snackbar!",theme:{color:"#FFFFFF",bgColor:"#7F98DE"},layout:{position:""},border:{color:"#FFFFFF"},font:{uri:"",family:"",size:24,weight:""},icon:{uri:"https://static.claspws.tv/screen/icons/common/user_icon_white.png"}},this.uiContainer=document.getElementsByTagName("body")[0],this.uiContainer&&(this._setupCSS(),this.render(this.uiContainer),this.isCurrentAnimationShowingUI=void 0)}render(e){this.nodes||e&&(this.nodes={},this.nodes.popupMessageWithIconOverlay=document.createElement("div"),this.nodes.popupMessageWithIconOverlay.id="vizbeeSnackbarOverlay",this.nodes.popupMessageWithIconOverlay.className="opaqueBackground hidden",this.nodes.popupMessageWithIconContainer=document.createElement("div"),this.nodes.popupMessageWithIconContainer.id="popupTimedoutMessageWithIconUIContainer",this.nodes.popupMessageWithIconContainer.className="popupTimedoutMessageWithIconUIContainer",this.nodes.popupMessageWithIconContainer.style.color=this.state.theme.color,this.nodes.popupTimedoutIconEle=document.createElement("div"),this.nodes.popupTimedoutIconEle.id="popupTimedoutIconEle",this.nodes.popupTimedoutIconEle.className="popupTimedoutIconEle",this.nodes.popupTimedoutMessageEle=document.createElement("div"),this.nodes.popupTimedoutMessageEle.id="popupTimedoutMessageEle",this.nodes.popupTimedoutMessageEle.className="popupMessageEle",this.nodes.popupMessageWithIconContainer.appendChild(this.nodes.popupTimedoutIconEle),this.nodes.popupMessageWithIconContainer.appendChild(this.nodes.popupTimedoutMessageEle),this.nodes.popupMessageWithIconOverlay.appendChild(this.nodes.popupMessageWithIconContainer),e.appendChild(this.nodes.popupMessageWithIconOverlay),this._updateUI())}setOptions(e){e&&(this.state.message=e.message||this.state.message,this.state.theme.color=e.theme.color||this.state.theme.color,this.state.theme.bgColor=e.theme.bgColor||this.state.theme.bgColor,this.state.layout.position=e.layout.position||this.state.layout.position,this.state.border.color=e.border.color||this.state.border.color,this.state.font.uri=e.font.uri||this.state.font.uri,this.state.font.family=e.font.family||this.state.font.family,this.state.font.size=this.screenRatio*(e.font.size||this.state.font.size),this.state.font.weight=e.font.weight||this.state.font.weight,this.state.icon.uri=e.icon.uri||this.state.icon.uri,this._updateUI(),this.show())}show(){this.nodes&&this.nodes.popupMessageWithIconOverlay&&(this._showUIWithAnimation(),M.removeClass("hidden",this.nodes.popupMessageWithIconOverlay))}hide(){this.nodes&&this.nodes.popupMessageWithIconOverlay&&this.nodes.popupMessageWithIconContainer&&(M.addClass("hidden",this.nodes.popupMessageWithIconOverlay),this.uiContainer&&this.uiContainer.contains(this.nodes.popupMessageWithIconOverlay)&&this.nodes.popupMessageWithIconOverlay.parentNode.removeChild(this.nodes.popupMessageWithIconOverlay))}_updateUI(){if(!this.nodes)return;let e=this.nodes.popupMessageWithIconContainer;if(e){e.style.color=this.state.theme.color,e.style.backgroundColor=this.state.theme.bgColor,null!=this.state.border.color&&(e.style.borderColor=this.state.border.color);const t=this.state.layout.position;if(t){delete e.style.top,delete e.style.right,delete e.style.bottom,delete e.style.left,e.style.position=t;const i=30*this.screenRatio+"px";t.indexOf("top")>-1?(e.style.top=i,t.indexOf("left")>-1?e.style.left=i:e.style.right=i):(e.style.bottom=i,t.indexOf("left")>-1?e.style.left=i:e.style.right=i)}}let t=this.nodes.popupTimedoutMessageEle;t&&(null!=this.state.font.uri&&(t.style.fontFamily=this.state.font.family),null!=this.state.font.size&&(t.style.fontSize=this.state.font.size+"px"),null!=this.state.font.weight&&(t.style.fontWeight=this.state.font.weight),null!=this.state.font.color&&(t.style.color=this.state.font.color),t.innerHTML=this.state.message);let i=this.nodes.popupTimedoutIconEle;i&&(this.state.icon.uri?(i.style.minWidth=36*this.screenRatio+"px",i.style.minHeight=36*this.screenRatio+"px",i.style.backgroundImage="url('"+this.state.icon.uri+"')",t&&(t.style.paddingLeft=12*this.screenRatio+"px")):(i.style.minWidth="0px",i.style.width="0px",t&&(t.style.paddingLeft="0px")))}_showUIWithAnimation(){this.isCurrentAnimationShowingUI=!0,P.get(this.state,["layout","position"],"").indexOf("top")>-1?this._showSlidingFromTopToBottom():this._showSlidingFromBottomToTop()}_isAnimationSupported(e){return e&&"function"==typeof e.animate}_showSlidingFromBottomToTop(){if(!this.nodes||!this.nodes.popupMessageWithIconContainer)return;if(!this._isAnimationSupported(this.nodes.popupMessageWithIconContainer))return void VizbeeTV.logger.i("PopupMessageWithIconView","_showSlidingFromBottomToTop","animation NOT supported!");const e=this.nodes.popupMessageWithIconContainer.offsetHeight+50,t=[{transform:"translateY("+e+"px)"},{transform:"translateY("+e/2+"px)"},{transform:"translateY(0px)"}];this.nodes.popupMessageWithIconContainer.animate(t,{duration:300,iterations:1})}_showSlidingFromTopToBottom(){if(!this.nodes||!this.nodes.popupMessageWithIconContainer)return;if(!this._isAnimationSupported(this.nodes.popupMessageWithIconContainer))return void VizbeeTV.logger.i("PopupMessageWithIconView","_showSlidingFromTopToBottom","animation NOT supported!");const e=this.nodes.popupMessageWithIconContainer.offsetHeight+50,t=[{transform:"translateY(-"+e+"px)"},{transform:"translateY(-"+e/2+"px)"},{transform:"translateY(0px)"}];this.nodes.popupMessageWithIconContainer.animate(t,{duration:300,iterations:1})}_setupCSS(){this.screenRatio=this._getScreenRatio();let e=this._processCSS(this.screenRatio,"\n #vizbeeSnackbarOverlay {\n position: absolute;\n top: 0px;\n left: 0px;\n width: $1280px;\n height: $720px;\n background: transparent !important;\n z-index: 9999;\n }\n\n #popupTimedoutMessageWithIconUIContainer {\n position: absolute;\n display: inline-flex;\n align-items: center;\n max-width: $420px;\n max-height: $80px;\n background: white;\n border-color: #FFFFFF;\n border: solid;\n border-width: $1px;\n border-radius: $45px;\n padding: $10px $24px;\n text-align: left !important;\n }\n\n #popupTimedoutIconEle {\n width: $36px;\n height: $36px;\n min-width: $36px;\n min-height: $36px;\n background-size: contain;\n background-repeat: no-repeat;\n }\n\n #popupTimedoutMessageEle {\n padding-left: $12px;\n }\n");this._appendToHEAD("vizbeeSnackbarCSS",e)}_processCSS(e,t){if(t)return t.replace(/\$[0-9]+/gi,function(t){let i=t.split("$");return Math.ceil(e*i[1])})}_getScreenRatio(){return document.body.clientWidth/1280}_appendToHEAD(e,t){if(this._isEmpty(e))return;if(this._isEmpty(t))return;let i=document.getElementById(e);if(null!==i&&i instanceof HTMLStyleElement)return;let r=document.createElement("style");r.type="text/css",r.id=e,r.styleSheet?r.styleSheet.cssText=t:r.appendChild(document.createTextNode(t)),document.getElementsByTagName("head")[0].appendChild(r)}_isEmpty(e){return void 0===e||0==e.length||null==e}}class Jn{constructor(e){this.uiConfig=e,this.popupMessageWithIconView=void 0}show(e=8){this.hide(),this.uiConfig&&"function"==typeof this.uiConfig.toJSON?(this.popupMessageWithIconView=new qn,this.popupMessageWithIconView.setOptions(this.uiConfig.toJSON()),-1!==e&&setTimeout(()=>{this.popupMessageWithIconView.hide()},1e3*e)):VizbeeTV.logger.e("PopupMessageWithIconView","show","Invalid uiConfig")}hide(){this.popupMessageWithIconView&&this.popupMessageWithIconView.hide();let e=document.getElementById("vizbeeSnackbarOverlay");e&&(VizbeeTV.logger.i("PopupMessageWithIconView","hide","Removing vizbeeSnackbarEle"),e.parentNode.removeChild(e))}}const Yn={TOP_LEFT:"top-left",TOP_RIGHT:"top-right",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right"};class $n{constructor(){this._message="This is a vizbee snackbar message",this._theme={color:"#FFFFFF",bgColor:"#7F98DE"},this._layout={position:Yn.BOTTOM_RIGHT},this._border={color:"#FFFFFF"},this._font={uri:"",family:"",size:24,weight:""},this._icon={uri:"https://s3.amazonaws.com/vga-videos/images/vsa/loading.gif"}}get message(){return this._message}set message(e){this._message=e}get theme(){return this._theme}set theme(e){this._theme=e}get layout(){return this._layout}set layout(e){this._layout=e}get border(){return this._border}set border(e){this._border=e}get font(){return this._font}set font(e){this._font=e}get icon(){return this._icon}set icon(e){this._icon=e}fromJSON(e){e&&(this._message=e.message,e.theme&&(this._theme.color=e.theme.color||this._theme.color,this._theme.bgColor=e.theme.bgColor||this._theme.bgColor),e.layout&&(this._layout=e.layout||this._layout),e.border&&(this._border=e.border||this._border),e.font&&(this._font.uri=e.font.uri||this._font.uri,this._font.family=e.font.family||this._font.family,this._font.size=e.font.size||this._font.size,this._font.weight=e.font.weight||this._font.weight),e.icon&&e.icon.uri&&(this._icon.uri=e.icon.uri||this._icon.uri))}toJSON(){return{message:this._message,theme:this._theme,layout:this._layout,border:this._border,font:this._font,icon:this._icon}}}function Qn(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class Zn{constructor(){Qn(this,"namespaceAndReceiverMap",new Map)}async send(e,t){return VizbeeSDK.logger.debug(this.constructor.name,"send",`namespace: ${t}, payload: ${JSON.stringify(e)}`),new Promise((i,r)=>{window.VZB.sendXMessage(e,t,{onSuccess:e=>{i()},onFailure:e=>{r(e)}})})}addReceiver(e,t){VizbeeSDK.logger.debug(this.constructor.name,"addReceiver",`with namespace: ${e}`),this.namespaceAndReceiverMap.set(e,t)}removeReceiver(e,t){VizbeeSDK.logger.debug(this.constructor.name,"removeReceiver",`with namespace: ${e}`),this.namespaceAndReceiverMap.delete(e)}onReceive(e,t,i){VizbeeSDK.logger.debug(this.constructor.name,"onReceive",`namespace: ${e}, payload: ${JSON.stringify(t)}, device: ${i}`);const r=this.namespaceAndReceiverMap.get(e);r&&r(t,e,i)}}let Xn=function(e){return e.ANDROID_MOBILE="Android",e.IOS="iOS",e.UNKNOWN="Unknown",e}({}),es=function(e){return e.ANDROID_MOBILE="ANDROID_MOBILE",e.IOS="IOS",e.UNKNOWN="UNKNOWN",e}({});function ts(e){switch(e){case Xn.ANDROID_MOBILE:return es.ANDROID_MOBILE;case Xn.IOS:return es.IOS;case Xn.UNKNOWN:default:return es.UNKNOWN}}let is=function(e){return e.JOIN="JOIN",e.LEAVE="LEAVE",e}({}),rs=function(e){return e.JOIN="JOIN",e.LEAVE="LEAVE",e}({});class ns{constructor(){Qn(this,"presenceCallbacks",[]),Qn(this,"syncController",null),this.init()}init(){var e,t,i;this.syncController=null===(e=window.VZB)||void 0===e||null===(t=e.getSyncController)||void 0===t?void 0:t.call(e),this.syncController?this.listenForSyncControllerSessionState():(null===(i=window.VizbeeSDK)||void 0===i||null===(i=i.logger)||void 0===i||i.warn("VizbeeBicastMemberPresenceClientImpl","init","syncController is not available"),this.listenForSyncControllerAvailability())}listenForSyncControllerAvailability(){var e,t;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerAvailability","waiting for syncController to be available"),null===(t=window.VZB)||void 0===t||t.addSyncReadyListener(()=>{var e,t,i;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerAvailability","syncController is now available"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.listenForSyncControllerSessionState()})}listenForSyncControllerSessionState(){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState","subscribing to presence events"),this.syncController.subscribeToPresence(e=>{if(VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState",`presence event received: ${JSON.stringify(e)}`),null!==e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState",`processing presence event: ${JSON.stringify(e)}`);const t=this.toVizbeeDevice(e.member),i={event:e.event===rs.JOIN?is.JOIN:is.LEAVE,device:t};this.presenceCallbacks.forEach(e=>e(i))}})}subscribe(e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","subscribe",e),this.presenceCallbacks.push(e)}unsubscribe(e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","unsubscribe","");const t=this.presenceCallbacks.indexOf(e);t>-1&&this.presenceCallbacks.splice(t,1)}getMembers(){var e,t;const i=(null===(e=this.syncController)||void 0===e||null===(t=e.getActiveSenders)||void 0===t?void 0:t.call(e))||{};return Object.values(i).map(e=>this.toVizbeeDevice(e))}toVizbeeDevice(e){var t,i,r,n,s,a,o,l,d,c,u;return{deviceId:null!==(t=null==e||null===(i=e.ssinfo)||void 0===i?void 0:i.REMOTE_DEVICE_ID)&&void 0!==t?t:"UNKNOWN",friendlyName:null!==(r=null==e||null===(n=e.ssinfo)||void 0===n?void 0:n.REMOTE_FRIENDLY_NAME)&&void 0!==r?r:"UNKNOWN",modelName:null!==(s=null==e||null===(a=e.ssinfo)||void 0===a?void 0:a.modelName)&&void 0!==s?s:"UNKNOWN",modelNumber:null!==(o=null==e||null===(l=e.ssinfo)||void 0===l?void 0:l.modelNumber)&&void 0!==o?o:"UNKNOWN",manufacturer:null!==(d=null==e||null===(c=e.ssinfo)||void 0===c?void 0:c.manufacturer)&&void 0!==d?d:"UNKNOWN",deviceType:ts(null==e||null===(u=e.ssinfo)||void 0===u?void 0:u.REMOTE_DEVICE_TYPE)}}}Qn(ns,"LOG_TAG","VizbeeBicastMemberPresenceClientImpl");class ss{constructor(){Qn(this,"_messagingClient",null),Qn(this,"_presenceClient",null)}getMessagingClient(){return this._messagingClient||(this._messagingClient=new Zn),this._messagingClient}getPresenceClient(){return this._presenceClient||(this._presenceClient=new ns),this._presenceClient}}class as{constructor(){if(Qn(this,"session",null),Qn(this,"sessionState",dr.NOT_CONNECTED),Qn(this,"sessionStateListeners",[]),Qn(this,"syncController",null),Qn(this,"onSessionStateChanged",e=>{var t,i;switch(this.sessionState=e,e){case dr.CONNECTED:null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.info("VizbeeBicastSessionManager","onSessionStateChanged","CONNECTED"),this.session=new ss,this.sessionStateListeners.forEach(e=>e.onSessionStateChanged(dr.CONNECTED));break;case dr.NOT_CONNECTED:null===(i=window.VizbeeSDK)||void 0===i||null===(i=i.logger)||void 0===i||i.info("VizbeeBicastSessionManager","onSessionStateChanged","NOT_CONNECTED"),this.session=null,this.sessionStateListeners.forEach(e=>e.onSessionStateChanged(dr.NOT_CONNECTED))}}),as.instance)return as.instance;this.init(),as.instance=this}init(){var e,t,i,r;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","init","initialize session manager"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.syncController?this.listenForSyncControllerSessionState():(null===(r=window.VizbeeSDK)||void 0===r||null===(r=r.logger)||void 0===r||r.warn("VizbeeBicastSessionManager","init","syncController is not available"),this.listenForSyncControllerAvailability())}listenForSyncControllerAvailability(){var e,t;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","listenForSyncControllerAvailability","waiting for syncController to be available"),null===(t=window.VZB)||void 0===t||t.addSyncReadyListener(()=>{var e,t,i;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","listenForSyncControllerAvailability","syncController is now available"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.listenForSyncControllerSessionState()})}listenForSyncControllerSessionState(){var e,t,i,r;this.sessionState=null!==(e=null===(t=this.syncController)||void 0===t||null===(i=t.sessionState)||void 0===i?void 0:i.call(t))&&void 0!==e?e:dr.NOT_CONNECTED,this.sessionState===dr.CONNECTED&&(this.session=new ss),null===(r=this.syncController)||void 0===r||r.addSessionStateListener(this.onSessionStateChanged)}addSessionStateListener(e){var t;null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.debug("VizbeeBicastSessionManager","addSessionStateListener","add session state listener"),"function"==typeof e?this.sessionStateListeners.push({onSessionStateChanged:e}):this.sessionStateListeners.push(e)}removeSessionStateListener(e){var t;null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.debug("VizbeeBicastSessionManager","removeSessionStateListener","remove session state listener");const i=this.sessionStateListeners.indexOf(e);i>-1&&this.sessionStateListeners.splice(i,1)}getSession(){return this.session}isConnecting(){return this.sessionState===dr.CONNECTING}isConnected(){return this.sessionState===dr.CONNECTED}}class os{constructor(){if(Qn(this,"presenceCallbacks",[]),Qn(this,"vizbeeSession",null),os.instance)return os.instance;this.init(),os.instance=this}init(){try{var e;if(VizbeeSDK.logger.info("VizbeePresenceManager::init - Initializing Vizbee Presence Manager"),null===(e=window.vizbee)||void 0===e||null===(e=e.continuity)||void 0===e||!e.xmessages)throw new Error("Vizbee continuity or xmessages not initialized");const t=new window.vizbee.continuity.xmessages.VizbeeBicastSessionManager;if(!t)throw new Error("Session manager initialization failed");t.addSessionStateListener({onSessionStateChanged:e=>{if(VizbeeSDK.logger.info("VizbeePresenceManager::init - Session state changed:",e),e===dr.CONNECTED){if(VizbeeSDK.logger.debug("VizbeePresenceManager::init - Session connected"),this.vizbeeSession=t.getSession(),!this.vizbeeSession)throw new Error("Failed to retrieve Vizbee session");if(this.vizbeePresenceClient=this.vizbeeSession.getPresenceClient(),!this.vizbeePresenceClient)throw new Error("Failed to retrieve Vizbee presence client");if(this.presenceCallbacks.length>0)for(let e=0;e<this.presenceCallbacks.length;e++){const t=this.presenceCallbacks[e];this.vizbeePresenceClient.subscribe(t)}}else{if(this.vizbeePresenceClient)for(let e=0;e<this.presenceCallbacks.length;e++){const t=this.presenceCallbacks[e];this.vizbeePresenceClient.unsubscribe(t)}this.vizbeeSession=null}}})}catch(e){throw VizbeeSDK.logger.warn("VizbeePresenceManager::init - Error initializing Vizbee session:",e),e}}subscribe(e){"function"==typeof e?(this.presenceCallbacks.push(e),this.vizbeePresenceClient?this.vizbeePresenceClient.subscribe(e):VizbeeSDK.logger.warn("VizbeePresenceManager::subscribe - Presence client not initialized yet")):VizbeeSDK.logger.warn("VizbeePresenceManager::subscribe - Provided callback is not a function")}unsubscribe(e){VizbeeSDK.logger.debug("VizbeePresenceManager::unsubscribe"),this.vizbeePresenceClient&&this.vizbeePresenceClient.unsubscribe(e);const t=this.presenceCallbacks.indexOf(e);t>-1&&this.presenceCallbacks.splice(t,1)}getMembers(){return this.vizbeePresenceClient?this.vizbeePresenceClient.getMembers():[]}}class ls extends Vn{constructor(){super()}get ContinuityContext(){return Kn}get adapters(){return{AppAdapter:An,PlayerAdapter:wn,BasePlayerAdapter:Un,AVPlayerAdapter:Fn,PlayerType:Nn,AdAdapter:Mn,AdType:On,VideoStopReason:Hn}}get messages(){return{VizbeeEvent:Rn,VideoInfo:xn,VideoStatus:Ln,AdEventType:Cn,AdStatus:kn,PlayerState:zn,SubtitleTrack:jn}}get analytics(){return{AnalyticsProvider:Gn}}get ui(){return{LayoutPosition:Yn,Snackbar:Jn,SnackbarUIConfig:$n}}get analytics(){return{AnalyticsProvider:Gn}}get ui(){return{LayoutPosition:Yn,Snackbar:Jn,SnackbarUIConfig:$n}}get xmessages(){return{VizbeeBicastSessionManager:as,VizbeeBicastSession:ss,VizbeeMessagingClient:void 0,VizbeePresenceManager:os}}}var ds=new class extends ls{constructor(){super()}},cs=new class extends _n{constructor(){super()}get continuity(){return ds}get framework(){return ds}};if(cs.logger=new Se,cs.logger.setPrefix("[Vizbee]"),"undefined"!=typeof window){if(window.VizbeeSDK=cs,window.vizbee){let e=window.vizbee;window.vizbee=window.VizbeeSDK,Object.keys(e).forEach(t=>{window.vizbee[t]=e[t]})}else window.vizbee=window.VizbeeSDK;"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event("VIZBEE_SDK_READY"))}
|
|
1
|
+
if(window.VizbeeSDK||(window.VizbeeSDK={}),!window.VizbeeSDK.logger){var e=function(){};window.VizbeeSDK.logger={debug:e,info:e,warn:e,error:e,d:e,i:e,w:e,e,critical:e,verbose:e}}const t="UNKNOWN",i="subtitle",r="audio",n="chromecast_caf",s="chromecast_v2",a="avplayer",o="bitmovin",l="videojs",d="theo",c="shaka";class u{constructor(e){if("Platform"===this.constructor.name)throw new TypeError("Platform::constructor() - Abstract class.");this.config=e||{},this.launchParams=void 0,this.isAppExitInProgress=!1}setConfig(e){this.config=e}get cloudPlatformName(){throw new TypeError("Platform::cloudPlatformName() - Abstract method.")}uniqueDeviceID(e,t){this.deviceId.uniqueDeviceID(e,t)}set deviceIDAlgorithm(e){}get deviceIDAlgorithm(){return this.deviceId.algorithm}get platformModel(){}get deviceInfo(){}get platformVersion(){}get networkInfo(){}get adId(){}get isAdTrackingDisabled(){}createInputDevice(){throw new TypeError("Platform::createInputDevice() - Abstract method.")}enableScreenSaver(e){}get defaultAppletAppId(){throw new TypeError("Platform::defaultAppletAppId() - Abstract method.")}get launchParamsDeferral(){return this.launchParams}get appLifeCycleManager(){}exit(){VizbeeTV.logger.i("BasePlatform","exit"),this.appLifeCycleManager&&this.appLifeCycleManager.emit("onEnd")}set isAppExiting(e){this.isAppExitInProgress=e}get isAppExiting(){return this.isAppExitInProgress}createPlayer(){throw new TypeError("Platform::createPlayer() - Abstract method.")}}class p{constructor(e,t){if("BaseEvent"===this.constructor.name)throw new TypeError("BaseEvent::constructor() - Abstract class.");this.nativeEvent=e,this.source=t}}class h extends p{constructor(e,t){super(e,t)}}class g extends h{constructor(e,t){if(!(t instanceof N))throw new TypeError("TVRemoteEvent::constructor() - source must be an instance of BaseTVRemote.");super(e,t),this.keyCode=t.keyCodeMap[e.keyCode],this.keyName=t.keyNameMap[this.keyCode]}}class f{constructor(){if("BaseEventDispatcher"===this.constructor.name)throw new TypeError("BaseEventDispatcher::constructor() - Abstract class.");this.eventType=void 0,this._eventHandlers=[],this.registerListener()}registerListener(){throw new TypeError("BaseEventDispatcher::registerListener() - Abstract method.")}set onevent(e){if(void 0===e)this._eventHandlers=[];else{if(!(e instanceof Function))throw new TypeError("BaseEventDispatcher::onevent setter - callback must be an instance of Function.");this._eventHandlers.push(e)}}dispatchEvent(e){if(!(e instanceof p))throw new TypeError("BaseEventDispatcher::dispatchEvent() - event must be instance of BaseEvent.");this._eventHandlers.forEach(t=>{t instanceof Function&&t(e)})}reset(){this._eventHandlers=[]}}class v extends f{constructor(){if(super(),"BaseInputDevice"===this.constructor.name)throw new TypeError("BaseInputDevice::constructor() - Abstract class.")}}var y,m,b,S={exports:{}},_=S.exports;function T(){return y||(y=1,e=S,function(t){var i=setTimeout;function r(){}var n="function"==typeof setImmediate&&setImmediate||function(e){i(e,1)},s=function(e){"undefined"!=typeof console&&console},a=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],h(e,this)}function l(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n(function(){var i=1===e._state?t.onFulfilled:t.onRejected;if(null!==i){var r;try{r=i(e._value)}catch(e){return void c(t.promise,e)}d(t.promise,r)}else(1===e._state?d:c)(t.promise,e._value)})):e._deferreds.push(t)}function d(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var i=t.then;if(t instanceof o)return e._state=3,e._value=t,void u(e);if("function"==typeof i)return void h((r=i,n=t,function(){r.apply(n,arguments)}),e)}e._state=1,e._value=t,u(e)}catch(t){c(e,t)}var r,n}function c(e,t){e._state=2,e._value=t,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&setTimeout(function(){e._handled||s(e._value)},1);for(var t=0,i=e._deferreds.length;t<i;t++)l(e,e._deferreds[t]);e._deferreds=null}function p(e,t,i){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=i}function h(e,t){var i=!1;try{e(function(e){i||(i=!0,d(t,e))},function(e){i||(i=!0,c(t,e))})}catch(e){if(i)return;i=!0,c(t,e)}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var i=new o(r);return l(this,new p(e,t,i)),i},o.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&a(arguments[0])?arguments[0]:arguments);return new o(function(t,i){if(0===e.length)return t([]);var r=e.length;function n(s,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var o=a.then;if("function"==typeof o)return void o.call(a,function(e){n(s,e)},i)}e[s]=a,0===--r&&t(e)}catch(e){i(e)}}for(var s=0;s<e.length;s++)n(s,e[s])})},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o(function(t){t(e)})},o.reject=function(e){return new o(function(t,i){i(e)})},o.race=function(e){return new o(function(t,i){for(var r=0,n=e.length;r<n;r++)e[r].then(t,i)})},o._setImmediateFn=function(e){n=e},o._setUnhandledRejectionFn=function(e){s=e},e.exports?e.exports=o:t.Promise||(t.Promise=o)}(_)),S.exports;var e}function E(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function I(){if(b)return m;b=1;var e={get:function(e,t,i){for(var r=Array.isArray(t)?t:[t],n=e,s=0;s<r.length;s++){if(null==n)return i;n=n[r[s]]}return void 0===n?i:n},extend:function(e){if(null==e)return e;for(var t=1;t<arguments.length;t++){var i=arguments[t];if(null!=i)for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e},isObject:function(e){return null!==e&&"object"==typeof e},find:function(e,t){if(null!=e){if(Array.isArray(e))return e.find(t);for(var i=Object.keys(e),r=0;r<i.length;r++){var n=e[i[r]];if(t(n,i[r],e))return n}}},keys:function(e){return Object.keys(e)},isString:function(e){return"string"==typeof e},filter:function(e,t){return Array.isArray(e)?e.filter(t):Object.keys(e).reduce(function(i,r){return t(e[r],r,e)&&i.push(e[r]),i},[])},omit:function(e){var t=Array.isArray(arguments[1])?arguments[1]:Array.prototype.slice.call(arguments,1),i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(i[r]=e[r]);return i},isUndefined:function(e){return void 0===e},isNumber:function(e){return"number"==typeof e},isArray:function(e){return Array.isArray(e)},each:function(e,t){return Array.isArray(e)?e.forEach(t):null!=e&&Object.keys(e).forEach(function(i){t(e[i],i,e)}),e},contains:function(e,t){return-1!==e.indexOf(t)},values:function(e){return Object.keys(e).map(function(t){return e[t]})},isFunction:function(e){return"function"==typeof e},isEmpty:function(e){return null==e||(Array.isArray(e)||"string"==typeof e?0===e.length:0===Object.keys(e).length)},clone:function(t){return Array.isArray(t)?t.slice():e.extend({},t)},reject:function(e,t){return Array.isArray(e)?e.filter(function(e){return!t(e)}):Object.keys(e).reduce(function(i,r){return t(e[r],r,e)||i.push(e[r]),i},[])},reduce:function(e,t,i){return Array.isArray(e)?e.reduce(t,i):(Object.keys(e).forEach(function(r){i=t(i,e[r],r,e)}),i)},isBoolean:function(e){return!0===e||!1===e},isNaN:function(e){return"number"==typeof e&&e!=e},isEqual:function(e,t){return JSON.stringify(e)===JSON.stringify(t)},pluck:function(e,t){return e.map(function(e){return e[t]})},findIndex:function(e,t){var i="function"==typeof t?t:function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})};return e.findIndex(i)},findLastIndex:function(e,t){for(var i="function"==typeof t?t:function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})},r=e.length-1;r>=0;r--)if(i(e[r],r,e))return r;return-1},findWhere:function(e,t){return e.find(function(e){return null!=e&&Object.keys(t).every(function(i){return e[i]===t[i]})})},without:function(e){var t=Array.prototype.slice.call(arguments,1);return e.filter(function(e){return-1===t.indexOf(e)})},sortBy:function(e,t){var i="function"==typeof t?t:function(e){return e[t]};return e.slice().sort(function(e,t){var r=i(e),n=i(t);return r<n?-1:r>n?1:0})},rest:function(e,t){return e.slice(void 0===t?1:t)},indexOf:function(e,t){return e.indexOf(t)},intersection:function(){var e=Array.prototype.slice.call(arguments);return e[0].filter(function(t){return e.every(function(e){return-1!==e.indexOf(t)})})}};return m=e}var P=E(I());let V=[],A=[],C=[],k=document.getElementsByTagName("HEAD")[0],D=document.getElementsByTagName("BODY")[0];class M{static xchangeHLSUrl(e,t,i,r,n,s){var a="unknown",o="unknown";t&&(a=t),i&&(o=i);var l="https://hlsxchange.claspws.tv/"+a+"/"+o;return e&&e.indexOf(l)>=0?e:(r&&n&&s&&(l+="/"+r+"/"+n+"/"+s),l+="/x.m3u8?hlsurl="+e)}static getRandomIntInclusive(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static buildErrorEvent(e,t,i){return{code:e,reason:t,data:i}}static loadStyleSheet(e){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadStyleSheet - Url must be a string.");var t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),k.appendChild(t),C.push(t),t.setAttribute("href",e)}static loadSynchronousScripts(e){var t=t||void 0;if(t||(t=T()),void 0===M.loadSynchronousScripts.scripts&&(M.loadSynchronousScripts.scripts=[],M.loadSynchronousScripts.index=-1,M.loadSynchronousScripts.loading=!1,M.loadSynchronousScripts.next=function(){if(!M.loadSynchronousScripts.loading){M.loadSynchronousScripts.loading=!0;var e=M.loadSynchronousScripts.scripts[++M.loadSynchronousScripts.index],t=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.src=e.src,i.onload=()=>{M.loadSynchronousScripts.loading=!1,M.loadSynchronousScripts.index<M.loadSynchronousScripts.scripts.length-1&&M.loadSynchronousScripts.next(),e.resolve()},t.appendChild(i)}}),e){for(var i=0;i<M.loadSynchronousScripts.scripts.length;i++)if(M.loadSynchronousScripts.scripts[i].src==e)return M.loadSynchronousScripts.scripts[i].promise;var r={src:e};r.promise=new t(e=>{r.resolve=e}),M.loadSynchronousScripts.scripts.push(r),M.loadSynchronousScripts.next()}return M.loadSynchronousScripts.scripts[M.loadSynchronousScripts.scripts.length-1].promise}static loadScript(e,t,i){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadScript - Url must be a string.");t=!(!t&&void 0!==t);var r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("async",t),r.onload=i||(()=>{}),k.appendChild(r),V.push(r),r.setAttribute("src",e)}static loadScriptToBody(e,t,i){if(!e||!(e instanceof String||"string"==typeof e))throw new TypeError("Util::loadScript - Url must be a string.");t=!(!t&&void 0!==t);var r=document.createElement("script");r.setAttribute("type","text/javascript"),r.setAttribute("async",t),r.onload=i||(()=>{}),D.appendChild(r),A.push(r),r.setAttribute("src",e)}static clearLoadedScripts(){for(let e=0;e<V.length;e++)V[e]&&V[e]instanceof Node&&(k.removeChild(V[e]),delete V[e])}static clearBodyLoadedScripts(){for(let e=0;e<A.length;e++)A[e]&&A[e]instanceof Node&&(D.removeChild(A[e]),delete A[e])}static clearLoadedStyleSheets(){for(let e=0;e<C.length;e++)C[e]&&C[e]instanceof Node&&(C[e].disabled=!0,k.removeChild(C[e]),delete C[e])}static clearAllLoadedScriptsAndStyleSheets(){M.clearLoadedScripts(),M.clearLoadedStyleSheets()}static addClass(e,t){if(t){var i=t.className;if(-1!=i.indexOf(e))return;""!=i&&(e=" "+e),t.className=i+e}}static removeClass(e,t){if(t){var i=t.className,r=new RegExp(e,"g");i=i.replace(r,""),t.className=i}}static hasClass(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1}static elementInViewport(e,t,i){var r=e.getBoundingClientRect(),n=r.top,s=r.bottom,a=r.left,o=r.right,l=document.documentElement.clientHeight,d=document.documentElement.clientWidth,c=window.innerHeight,u=window.innerWidth;return i&&(n-=i),t?n>=0&&s<=window.innerHeight:n>=0&&n<=(c||l)&&a>=0&&a<=(u||d)||s>=0&&s<=(c||l)&&o>=0&&o<=(u||d)}static smoothScroll(e,t){var i=e,r=e;do{if(!(i=i.parentNode))return;i.scrollTop+=1}while(0==i.scrollTop);var n=0;do{if(e==i)break;n+=e.offsetTop}while(e=e.offsetParent);M.myscroll(r,t,i,i.scrollTop,n-t,0)}static myscroll(e,t,i,r,n,s){++s>10||e.children.length>0&&M.elementInViewport(e.children.item(0),!0,t)||(i.scrollTop=r+(n-r)/10*s,setTimeout(function(){M.myscroll(e,t,i,r,n,s)},20))}static xhr(e){var t=t||void 0;return t||(t=T()),new t(function(t,i){var r=0===e.retries?0:e.retries||3;!function n(){var s=new XMLHttpRequest;e.disableSSL||(e.url=e.url.replace(/^http:\/\//i,"https://")),s.open(e.method||"GET",e.url,!0),Object.keys(e.headers||{}).forEach(function(t){s.setRequestHeader(t,e.headers[t])});var a=void 0;s.onreadystatechange=function(o){var l,d;if(2==s.readyState&&(l=s.getAllResponseHeaders().trim().split(/[\r\n]+/),d={},l.forEach(function(e){var t=e.split(": "),i=t.shift(),r=t.join(": ");d[i]=r}),a=d),4===s.readyState)if(-1===[200,201,202,203,204,304].indexOf(s.status))r>0?(r--,n()):e.isFullResponse?i(s):i(new Error("Server responded with a status of "+s.status));else try{var c=o.target;e.format=e.format||"json","json"===e.format?(c=c.response?JSON.parse(c.response):{}).headers?Object.assign(c.headers,a):c.headers=a:"xml"===e.format&&(c=c.responseXML),e.isFullResponse?t({xhr:o.target,data:c,headers:a}):t(c)}catch(o){r>0?(r--,n()):e.isFullResponse?i(s):i("JSON parse error with Server response")}},e.timeout&&(s.timeout=e.timeout,s.ontimeout=function(t){r>0?(r--,n()):i(new Error("Server timeout "+e.timeout+"ms"))}),s.send(e.data)}()})}static timeSnapToMs(e){e.split(".").length<=1&&(e+=".000");let t=e.split(":"),i=t.pop().split("."),r=1e3*Number(i[0])+Number(i[1]);return r+=1e3*Number(t.pop())*60,r+=1e3*Number(t.pop())*60*60,r}static millisecondsToString(e,t){var i="",r=Math.floor(e%31536e3%86400%3600%60);i=isNaN(r)||r<=0?":00":r<10?":0"+r:":"+r;var n=Math.floor(e%31536e3%86400%3600/60);i=isNaN(n)||n<=0?"00"+i:n<10?"0"+n+i:n+i;var s=Math.floor(e%31536e3%86400/3600);return t?i=isNaN(s)||s<=0?"00:"+i:s<10?"0"+s+":"+i:s+":"+i:s>0&&(i=s+":"+i),i}static getUrlVars(e=window.location.href){for(var t,i={},r=e.slice(e.indexOf("?")+1).split("&"),n=0;n<r.length;n++)i[(t=r[n].split("="))[0]]=decodeURIComponent(t[1]);return i}static updateUrlQueryParams(e,t){if(!e)return VizbeeUtils.logger.warn("Util::updateUrlQueryParams - INVALID inputUrl, doing nothing"),e;if(P.isEmpty(t))return VizbeeUtils.logger.warn("Util::updateUrlQueryParams - INVALID inputParams, doing nothing"),e;try{let i=new URL(e),r=new URLSearchParams(i.search);Object.keys(t).forEach(e=>r.set(e,t[e])),i.search=r.toString();let n=i.toString();return VizbeeUtils.logger.debug("Util::updateUrlQueryParams - updated url="+n),n}catch(t){return VizbeeUtils.logger.error("Util::updateUrlQueryParams - failed to update query params for url="+e),e}}static get docCookies(){return{getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,t,i,r,n,s){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(i)switch(i.constructor){case Number:a=i===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+i;break;case String:a="; expires="+i;break;case Date:a="; expires="+i.toUTCString()}return document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(n?"; domain="+n:"")+(r?"; path="+r:"")+(s?"; secure":""),!0},removeItem:function(e,t,i){return!!this.hasItem(e)&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(i?"; domain="+i:"")+(t?"; path="+t:""),!0)},hasItem:function(e){return!!e&&new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),t=e.length,i=0;i<t;i++)e[i]=decodeURIComponent(e[i]);return e},eraseCookieFromAllPaths:function(e){var t=location.pathname.split("/"),i=" path=";document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for(var r=0;r<t.length;r++)i+=("/"!=i.substr(-1)?"/":"")+t[r],document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;"+i+";"}}}static invert(e){for(var t={},i=Object.keys(e),r=0,n=i.length;r<n;r++)t[e[i[r]]]=i[r];return t}static deepMerge(e,t){var i=Array.isArray(t),r=i&&[]||{};return i?(e=e||[],r=r.concat(e),t.forEach(function(t,i){void 0===r[i]?r[i]=t:"object"==typeof t?r[i]=M.deepMerge(e[i],t):-1===e.indexOf(t)&&r.push(t)})):("object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){r[t]=e[t]}),Object.keys(t).forEach(function(i){"object"==typeof t[i]&&t[i]&&e[i]?r[i]=M.deepMerge(e[i],t[i]):r[i]=t[i]})),r}static isEqual(e,t){return P.isEqual(e,t)}static flatten(e){var t={};return function e(i,r){if(Object(i)!==i)t[r]=i;else if(Array.isArray(i)){for(var n=0,s=i.length;n<s;n++)e(i[n],r+"["+n+"]");0==s&&(t[r]=[])}else{var a=!0;for(var o in i)a=!1,e(i[o],r?r+"."+o:o);a&&r&&(t[r]={})}}(e,""),t}static unflatten(e){if(Object(e)!==e||Array.isArray(e))return e;var t=/\.?([^.\[\]]+)|\[(\d+)\]/g,i={};for(var r in e){for(var n,s=i,a="";n=t.exec(r);)s=s[a]||(s[a]=n[2]?[]:{}),a=n[2]||n[1];s[a]=e[r]}return i[""]||i}static decodeB64Recurse(e,t){if(!e||!t)return e;for(var i in e){var r=e[i];if("object"==typeof r)M.decodeB64Recurse(r,t);else if(i.indexOf(t)>-1){var n=i.replace(t,"");if(e[n]=e[i],delete e[i],"string"==typeof e[n]){var s=decodeURIComponent(escape(atob(e[n])));e[n]=M.parseFunction(s)}}}return e}static parseFunction(e){var t=e.indexOf("{"),i=e.substring(t+1,e.lastIndexOf("}")),r=e.substring(0,t),n=r.substring(r.indexOf("(")+1,r.lastIndexOf(")")).split(",");function s(){return Function.apply(this,n)}return n.push(i),s.prototype=Function.prototype,new s}static padStart(e,t,i){return t|=0,i=String(void 0!==i?i:" "),e.length>t?String(e):((t-=e.length)>i.length&&(i+=M.repeat(i,t/i.length)),i.slice(0,t)+String(e))}static padEnd(e,t,i){return t|=0,i=String(void 0!==i?i:" "),e.length>t?String(e):((t-=e.length)>i.length&&(i+=M.repeat(i,t/i.length)),String(e)+i.slice(0,t))}static repeat(e,t){if(!e)throw new TypeError("can't convert "+e+" to object");var i=""+e;if((t=+t)!=t&&(t=0),t<0)throw new RangeError("repeat count must be non-negative");if(t==1/0)throw new RangeError("repeat count must be less than infinity");if(t=Math.floor(t),0==i.length||0==t)return"";if(i.length*t>=1<<28)throw new RangeError("repeat count must not overflow maximum string size");var r=i.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)i+=i,t--;return i+i.substring(0,r-i.length)}static getShortString(e,t){if(!P.isString(t))return e;if(!P.isString(e))return e;if(-1!=e.indexOf(t)){let i=e.trim().split(t);return P.reduce(i,(e,t)=>e+t.charAt(0),"")}return e}static toCamelCase(e){return void 0===e?e:(e=e.replace(/([-_][a-z])/g,e=>e.toUpperCase().replace("-","").replace("_",""))).charAt(0).toLowerCase()+e.slice(1)}static matchStringWithRegex(e,t){return null!=t&&null!=e&&new RegExp(e,"i").test(t)}static isValidIPv4Address(e){return null!=e&&M.matchStringWithRegex(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,e)}static convertObjectsToString(e){if(!e)return e;if(!Array.isArray(e))return e;for(let t=0;t<e.length;t++){let i=e[t];try{"object"==typeof i&&(i=JSON.stringify(i))}catch(e){}e[t]=i}return e}static getUpdatedStringWithReplacedValues(e,t){return P.isString(e)?!t||Array.isArray(t)||"object"!=typeof t?(VizbeeUtils.logger.d("Util","getUpdatedStringWithReplacedValues","INVALID input json, NOT updating input string"),e):(Object.keys(t).forEach(i=>{e=e.replace(new RegExp(i,"gi"),t[i])}),e):(VizbeeUtils.logger.warn("Util::getUpdatedStringWithReplacedValues - INVALID inputString, NOT updating input string"),e)}static uuidv4(){return crypto&&crypto.getRandomValues?([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)):Math.floor(1e10*Math.random()).toString()}static checkIfImageExists(e){var t=t||void 0;return t||(t=T()),new t(function(t,i){const r=new Image;r.src=e,r.complete?t(!0):(r.onload=()=>{t(!0)},r.onerror=()=>{t(!1)})})}static getFormEncodedUriFormat(e){if(P.isObject(e)){var t=[];for(var i in e){var r=encodeURIComponent(i),n=encodeURIComponent(e[i]);t.push(r+"="+n)}return t.join("&")}}}let w=!1;class N extends v{constructor(e){if(super(),VizbeeTV.logger.debug("constructing BaseTVRemote"),this.eventType=g,!(e&&e instanceof u))throw new Error("BaseTVRemote::constructor() -- platform cannot be empty or invalid.");this.platform=e}static get keys(){return{up:1,down:2,left:3,right:4,select:5,play:6,pause:7,stop:8,ffw:9,rw:10,back:11,exit:12,play_pause:13,alt_up:14,alt_down:15,alt_left:16,alt_right:17,skip_next:18,skip_prev:19}}get keyNameMap(){return{1:"up",2:"down",3:"left",4:"right",5:"select",6:"play",7:"pause",8:"stop",9:"fast-forward",10:"rewind",11:"back",12:"exit",13:"play-pause",14:"alt_up",15:"alt_down",16:"alt_left",17:"alt_right",18:"skip_next",19:"skip_prev"}}get keyCodeMap(){throw new TypeError("Abstract method - BaseTVRemote::keyMap getter.")}registerListener(){try{w=!0;let e="keydown";document.addEventListener(e,e=>{this.dispatchEvent(new g(e,this))})}catch(e){VizbeeTV.logger.error("registerListener error - ",e.message,e)}}sendKeyEvent(e){try{var t=M.invert(this.keyCodeMap)[e],i=new Event("keydown");i.keyCode=t,i.charCode=t,document.dispatchEvent(i)}catch(e){VizbeeTV.logger.error("sendKeyEvent error ",e.message,e)}}sendPlay(){this.sendKeyEvent(N.keys.play)}sendPause(){this.sendKeyEvent(N.keys.pause)}sendStop(){this.sendKeyEvent(N.keys.stop)}}class O extends N{get keyCodeMap(){return{80:N.keys.play,85:N.keys.pause,83:N.keys.stop}}sendPlay(){this.isStandalone()?this.platform.player.play():super.sendPlay()}sendPause(){this.isStandalone()?this.platform.player.pause():super.sendPause()}sendStop(e){this.isStandalone()?this.platform.player.stop(e):super.sendStop(e)}isStandalone(){return this.platform.config.standalone}}class x{init(){this.player=void 0}setPlayer(e){this.player=e}getPlayer(){return this.player}getTracks(e){return[]}getEnabledTracks(e){return[]}enableTracks(e=[]){}disableTracks(e){}}let z=class{constructor(){this._type="",this._id=-1}toJSON(){return{type:this._type,id:this._id}}fromJSON(e){e&&e.type&&!isNaN(e.id)?(this._type=e.type,this._id=e.id):VizbeeTV.logger.verbose("Track::fromJSON - invalid trackInfo")}set type(e){this._type=e}get type(){return this._type}set id(e){this._id=e}get id(){return this._id}},L=class extends z{constructor(){super(),this.type=i,this.subtype="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.subtype=this._subtype,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._subtype=e.subtype):VizbeeTV.logger.verbose("SubtitleTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set subtype(e){this._subtype=e}get subtype(){return this._subtype}};class R extends x{constructor(){super()}init(){this._playerManager=cast.framework.CastReceiverContext.getInstance().getPlayerManager()}getTracks(e){if(!e)return[];let t=[];try{if(this._isTextTracksManagerAvailable()){let r=this._playerManager.getTextTracksManager();if(r){let n=r.getTracks();if(n&&n.length>0&&e==i){let e=n.filter(e=>cast.framework.messages.TrackType.TEXT==e.type);e&&e.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:this._isValidTrackLanguage(e.language)?e.language:"en"}),t.push(i)})}}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getTracks - error",e&e.message),t=[]}return t}getEnabledTracks(e){if(!e)return[];let t=[];try{if(this._isTextTracksManagerAvailable()&&e==i){let e=this._playerManager.getTextTracksManager();if(e){let i=e.getActiveTracks(),r=i.length>0?i[0]:void 0,n=new L;n.fromJSON({id:r.trackId,lang:this._isValidTrackLanguage(r.language)?r.language:"en"}),t.push(n)}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getEnabledTracks - error",e),t=[]}return t}enableTracks(e=[]){!e||!Array.isArray(e)||e.length<=0?VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - enable subtitles command ignored due to invalid input"):this._isTextTracksManagerAvailable()?(VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - sending setActiveByIds to CAFPlayer"),this._playerManager.getTextTracksManager().setActiveByIds(e)):VizbeeTV.logger.debug("ChromecastCAFSubtitle::enableTracks - ignoring command as textTracksManager is not available")}disableTracks(e){this._isTextTracksManagerAvailable()?(VizbeeTV.logger.debug("ChromecastCAFSubtitle::disableTracks - sending setActiveByIds[] to CAFPlayer"),this._playerManager.getTextTracksManager().setActiveByIds([])):VizbeeTV.logger.debug("ChromecastCAFSubtitle::disableTracks - ignoring command as textTracksManager is not available")}_isTextTracksManagerAvailable(){let e=this.getPlayer();return!(!e||!e.playerState)&&[e.playerState.STARTED,e.playerState.BUFFERING,e.playerState.PLAYING,e.playerState.PAUSED].indexOf(e.getCurrentState())>=0}_isValidTrackLanguage(e){return!(!e||e.indexOf("null")>=0)}}class K extends x{constructor(){super()}getTracks(e){if(!e||i!=e)return[];let t=this.getPlayer();if(!t)return[];let r=this._getTracksFromVideoInfo(t);return r&&r.length>0||(r=[],r=this._getTracksFromMediaManager(t)),r}_getTracksFromVideoInfo(e){if(!e)return[];let t=[];if(e.videoInfo&&e.videoInfo.tracks&&e.videoInfo.tracks.length>0){let i=e.videoInfo.tracks.filter(e=>"text"==e.type.toLowerCase());i.length>0&&i.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:e.language,subtype:e.trackContentType}),t.push(i)})}return t}_getTracksFromMediaManager(e){let t=[];try{let i=e.mediaManager&&e.mediaManager.getMediaInformation();if(i&&i.tracks&&i.tracks.length){let e=i.tracks.filter(e=>"text"==e.type.toLowerCase());e.length>0&&e.forEach(e=>{let i=new L;i.fromJSON({id:e.trackId,lang:e.language,subtype:e.trackContentType}),t.push(i)})}}catch(e){t=[]}return t}getEnabledTracks(e){if(!e||i!=e)return[];let t=this.getPlayer();if(!t)return[];let r=[];return r=this._getEnabledTracksFromVideoInfo(t),r&&r.length>0||(r=[],r=this._getEnabledTracksFromMediaManager(t)),r}_getEnabledTracksFromVideoInfo(e){if(!e||!e.videoInfo)return[];let t=[];if(e.videoInfo.tracks&&e.videoInfo.tracks.length>0&&isFinite(e.videoInfo.activeTrackId)){let i=e.videoInfo.tracks.find(t=>e.videoInfo.activeTrackId==t.trackId);if(i){let e=new L;e.fromJSON({id:i.trackId,lang:i.language,subtype:i.trackContentType}),t.push(e)}}return t}_getEnabledTracksFromMediaManager(e){let t=[];try{let i=e.mediaManager&&e.mediaManager.getMediaInformation();if(i&&i.tracks&&i.tracks.length){let r,n=i.tracks.filter(e=>"text"==e.type.toLowerCase()),s=e.playerElement&&e.playerElement.textTracks.length||0;for(let t=0;t<s;t++){let i=e.playerElement.textTracks[t];if("showing"==i.mode){""==i.id?e.platformConfig.captionsType&&"cea608"==e.platformConfig.captionsType.toLowerCase()?(i.trackId=99,r=i):r=n&&n[0]:r=n.find(e=>e.trackId==i.id);break}}if(r){let e=new L;e.fromJSON({id:r.trackId,lang:r.language,subtype:r.trackContentType}),t.push(e)}}}catch(e){t=[]}return t}enableTracks(e=[]){let t=this.getPlayer();this._areInbandCaptionAvailable(t)?this._enableInbandTracks(e,t):this._enableExternalTracks(e,t)}_enableInbandTracks(e=[],t){VizbeeTV.logger.debug("ChromecastV2InbandSubtitle::enableTracks - ",e);for(var i=t.castPlayer.getStreamingProtocol(),r=i.getStreamCount(),n=0;n<r;n++){for(var s=n+1,a=!1,o=0;o<e.length;o++)if(e[o]==s){a=!0;break}var l=i.isStreamEnabled(n);a&&!l&&i.enableStream(n,!0)}t.castPlayer.enableCaptions(!0)}_enableExternalTracks(e=[],t){if(0==e.length)return;var r=this.getTracks(i,t);if(0==r.length)return;let n=e[0];var s=r.find(e=>n==e.id);if(s){var a,o="ttml";s.subtype.indexOf("vtt")>=0&&(a="webvtt"),s.subtype.indexOf(o)>=0&&(a=o),a&&(t.videoInfo.activeTrackId=n,t.castPlayer.enableCaptions(!0,a,n))}}disableTracks(e=[]){let t=this.getPlayer();this._areInbandCaptionAvailable(t)?this._disableInbandTracks(e,t):this._disableExternalTracks(e,t)}_disableInbandTracks(e=[],t){VizbeeTV.logger.debug("ChromecastV2InbandSubtitle::disableTracks - ",e);for(var i=t.castPlayer.getStreamingProtocol(),r=i.getStreamCount(),n=0;n<r;n++){for(var s=n+1,a=!1,o=0;o<e.length;o++)if(e[o]==s){a=!0;break}var l=i.isStreamEnabled(n);!a&&l&&i.enableStream(n,!1)}t.castPlayer.enableCaptions(!0)}_disableExternalTracks(e=[],t){if(0!=e.length){var r=this.getEnabledTracks(i,t);if(r&&r.length>0){let i=r.find(t=>t.id==e[0]);if(i){var n,s="ttml";i.subtype.indexOf("vtt")>=0&&(n="webvtt"),i.subtype.indexOf(s)>=0&&(n=s),n&&(t.videoInfo.activeTrackId=void 0,t.castPlayer.enableCaptions(!1,n))}}}}_areInbandCaptionAvailable(e){VizbeeTV.logger.verbose("ChromecastV2InbandSubtitle::_areInbandCaptionAvailable");let t=e.mediaManager.getMediaInformation();return 0!=(t&&t.tracks).length||(VizbeeTV.logger.verbose("ChromecastV2InbandSubtitle::_areInbandCaptionAvailable - No in_band captions"),!1)}}class U{static getInstance(e,t){if(VizbeeTV.logger.debug("SubtitleFactory::getInstance - playerType = "+e+", subtitleType = "+t),e)return n==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Chromecast CAFSubtitle"),new R):s==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Chromecast V2Subtitle"),new K):a==e?"in_band"==t||"in_manifest"==t?new null:void 0:o==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Bitmovin Subtitle"),new null):l==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating VideoJS Subtitle"),new null):d==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating THEO Subtitle"),new null):c==e?(VizbeeTV.logger.debug("SubtitleFactory::getInstance - creating Shaka Subtitle"),new null):void 0}}class B extends x{constructor(){super(),this.init()}init(){this.subtitleInstance=void 0,this.playerType=void 0,this.subtitleType=void 0,this.videoPlayer=void 0}setPlayerWithType(e,t){e?t?(this.playerType=e,this.playerType==o?this.videoPlayer=t.bitmovinPlayer:this.playerType==l?this.videoPlayer=t.playerElement:this.playerType==d?this.videoPlayer=t.playerInstance:this.playerType==c?this.videoPlayer=t.shakaPlayer:this.videoPlayer=t,this._setSubtitleInstance()):VizbeeTV.logger.warn("VirtualSubtitle::setPlayer - invalid parameter 'videoPlayer'"):VizbeeTV.logger.warn("VirtualSubtitle::setPlayer - invalid parameter 'playerType'")}getPlayer(){return this.videoPlayer}setSubtitleType(e){this.subtitleType=e,this._setSubtitleInstance()}_setSubtitleInstance(){this.playerType&&this.videoPlayer&&this.subtitleType&&(this.subtitleInstance=U.getInstance(this.playerType,this.subtitleType),this.subtitleInstance&&(this.subtitleInstance.init(),this.subtitleInstance.setPlayer(this.videoPlayer)))}isReady(){return!!this.subtitleInstance}getTracks(e){return VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - trackType = ",e),this.subtitleInstance?this.subtitleInstance.getTracks(e):(VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - sending empty data as there is no valid subtitle instance"),[])}getEnabledTracks(e){return VizbeeTV.logger.verbose("VirtualSubtitle::getTracks - trackType = ",e),this.subtitleInstance?this.subtitleInstance.getEnabledTracks(e):(VizbeeTV.logger.verbose("VirtualSubtitle::getEnabledTracks - sending empty data as there is no valid subtitle instance"),[])}enableTracks(e=[]){this.subtitleInstance&&this.subtitleInstance.enableTracks(e)}disableTracks(e){this.subtitleInstance&&this.subtitleInstance.disableTracks(e)}}const F={en:"English","en-US":"English (United States)","en-GB":"English (United Kingdom)","en-CA":"English (Canada)","en-AU":"English (Australia)",es:"Spanish","es-ES":"Spanish (Spain)","es-MX":"Spanish (Mexico)",fr:"French","fr-FR":"French (France)","fr-CA":"French (Canada)","fr-BE":"French (Belgium)",de:"German","de-DE":"German (Germany)","de-AT":"German (Austria)","de-CH":"German (Switzerland)",it:"Italian","it-IT":"Italian (Italy)",pt:"Portuguese","pt-PT":"Portuguese (Portugal)","pt-BR":"Portuguese (Brazil)",ru:"Russian","ru-RU":"Russian (Russia)",zh:"Chinese","zh-CN":"Chinese (Simplified)","zh-TW":"Chinese (Traditional)",ja:"Japanese",ko:"Korean",ar:"Arabic","ar-SA":"Arabic (Saudi Arabia)","ar-EG":"Arabic (Egypt)",hi:"Hindi",bn:"Bengali",pa:"Punjabi",mr:"Marathi",te:"Telugu",tr:"Turkish",vi:"Vietnamese",th:"Thai",id:"Indonesian",ms:"Malay",tl:"Tagalog",sw:"Swahili",fi:"Finnish",sv:"Swedish",no:"Norwegian",da:"Danish",pl:"Polish",hu:"Hungarian",cs:"Czech",sk:"Slovak",el:"Greek",ro:"Romanian",bg:"Bulgarian",sr:"Serbian",hr:"Croatian",uk:"Ukrainian",he:"Hebrew",ur:"Urdu",fa:"Persian",gu:"Gujarati",kn:"Kannada",ml:"Malayalam",ta:"Tamil",si:"Sinhalese",cy:"Welsh",sq:"Albanian",mk:"Macedonian",bs:"Bosnian",et:"Estonian",lv:"Latvian",lt:"Lithuanian",ka:"Georgian",am:"Amharic",yo:"Yoruba",ig:"Igbo",zu:"Zulu",xh:"Xhosa",ne:"Nepali",ms:"Malay","hi-IN":"Hindi (India)","bn-IN":"Bengali (India)","pa-IN":"Punjabi (India)"};class H{init(){this.player=void 0,this._reset()}setPlayer(e){this.player=e}getPlayer(){return this.player}getTracks(e){return[]}getEnabledTracks(e){return[]}setActiveTrack(e){}_setTrackIdStringToNumberMap(e){if(!this.trackIdStringToNumberMap[e]){let t=parseInt(e);P.isNaN(t)&&(t=Object.keys(this.trackIdStringToNumberMap).length+1),this.trackIdStringToNumberMap[e]=t,VizbeeTV.logger.verbose("BaseAudio::_setTrackIdStringToNumberMap - updated trackIdStringToNumberMap = ",this.trackIdStringToNumberMap)}}_setTrackLanguageCodeToNameMap(e){!e&&this.trackLanguageCodeToNameMap[e]||(this.trackLanguageCodeToNameMap[e]=F[e]||e,VizbeeTV.logger.verbose("BaseAudio::_setTrackLanguageCodeToNameMap - updated _setTrackLanguageCodeToNameMap = ",this.trackLanguageCodeToNameMap))}_reset(){this.trackIdStringToNumberMap={},this.trackLanguageCodeToNameMap={}}}class G extends z{constructor(){super(),this.type=r,this._label="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.label=this._label,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._label=e.label):VizbeeTV.logger.verbose("AudioTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set label(e){this._label=e}get label(){return this._label}}class W extends H{constructor(){super()}init(){super.init(),this._playerManager=cast.framework.CastReceiverContext.getInstance().getPlayerManager()}getTracks(e){if(!e||r!=e)return VizbeeTV.logger.verbose("ChromecastCAFAudio::getTracks - INVALID trackType"),[];let t=[],i=[];try{if(this._isAudioTracksManagerAvailable()){let e=this._playerManager.getAudioTracksManager();if(e){let r=e.getTracks();r&&r.length>0&&r.forEach(e=>{if(this._isDuplicateTrack(i,e))return;let r=e.name;r&&r!==e.language||(this._setTrackLanguageCodeToNameMap(e.language),r=this.trackLanguageCodeToNameMap[e.language]);let n=new G;n.fromJSON({id:e.trackId,lang:e.language,label:r||e.language}),t.push(n),i.push({language:e.language,name:e.name})})}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getTracks - error",e)}return t}getEnabledTracks(e){if(!e||r!=e)return VizbeeTV.logger.verbose("ChromecastCAFAudio::getEnabledTracks - INVALID trackType"),[];let t;try{if(this._isAudioTracksManagerAvailable()){let e=this._playerManager.getAudioTracksManager();if(e){let i=e.getActiveTrack();if(!i){let t=e.getTracks();t&&t.length>0&&(i=t[0])}if(i){let e=i.name;e&&e!==i.language||(this._setTrackLanguageCodeToNameMap(i.language),e=this.trackLanguageCodeToNameMap[i.language]),t=new G,t.fromJSON({id:i.trackId,lang:i.language,label:e||i.language})}}}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::getEnabledTracks - error",e)}return[t]}setActiveTrack(e){if(isNaN(e))VizbeeTV.logger.debug("ChromecastCAFAudio::setActiveTrack - enable audio command ignored due to invalid input");else try{if(this._isAudioTracksManagerAvailable()){let t=this._playerManager.getAudioTracksManager();t&&t.setActiveById(e)}}catch(e){VizbeeTV.logger.debug("ChromecastCAFSubtitle::setActiveTrack - error",e)}}_isAudioTracksManagerAvailable(){let e=this.getPlayer();return!(!e||!e.playerState)&&[e.playerState.STARTED,e.playerState.BUFFERING,e.playerState.PLAYING,e.playerState.PAUSED].indexOf(e.getCurrentState())>=0}_isDuplicateTrack(e,t){const{language:i,name:r}=t;return!!P.find(e,function(e){return e.name==r&&e.language==i})}}class j{static getInstance(e){return o==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating Bitmovin Audio"),new null):d==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating THEO Audio"),new W):n==e?(VizbeeTV.logger.debug("AudioFactory::getInstance - creating Chromecast CAF Audio"),new W):void 0}}class q extends H{constructor(){super(),this.init()}init(){this.audioInstance=void 0,this.playerType=void 0,this.videoPlayer=void 0}setPlayerWithType(e,t){VizbeeTV.logger.debug("VirtualAudio::setPlayerWithType - playerType = ",e,", playerInstance = ",t),e?t?(this.playerType=e,this.playerType==o?this.videoPlayer=t.bitmovinPlayer:this.playerType==l?this.videoPlayer=t.playerElement:this.playerType==c?this.videoPlayer=t.shakaPlayer:this.videoPlayer=t,this._setAudioInstance()):VizbeeTV.logger.warn("VirtualAudio::setPlayerWithType - invalid parameter 'videoPlayer'"):VizbeeTV.logger.warn("VirtualAudio::setPlayerWithType - invalid parameter 'playerType'")}getPlayer(){return this.videoPlayer}_setAudioInstance(){this.playerType&&this.videoPlayer&&(VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - playerType = ",this.playerType),VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - videoPlayer = ",this.videoPlayer),this.audioInstance=j.getInstance(this.playerType),this.audioInstance&&(VizbeeTV.logger.debug("VirtualAudio::_setAudioInstance - setting audio instance"),this.audioInstance.init(),this.audioInstance.setPlayer(this.videoPlayer)))}isReady(){return!!this.audioInstance}getTracks(e){return VizbeeTV.logger.verbose("VirtualAudio::getTracks - trackType = ",e),this.audioInstance?this.audioInstance.getTracks(e):(VizbeeTV.logger.verbose("VirtualAudio::getTracks - sending empty data as there is no valid audio instance"),[])}getEnabledTracks(e){return VizbeeTV.logger.verbose("VirtualAudio::getEnabledTracks - trackType = ",e),this.audioInstance?this.audioInstance.getEnabledTracks(e):(VizbeeTV.logger.verbose("VirtualAudio::getEnabledTracks - sending empty data as there is no valid audio instance"),[])}setActiveTrack(e){this.audioInstance&&this.audioInstance.setActiveTrack(e)}}class J{constructor(){this.adPodStartedTimeInMs=0,this.adPodEndedTimeInMs=0,this.loadReceivedByAppTimeInMs=0,this.loadReceivedByPlayerTimeInMs=0,this.metadataLoadedTimeInMs=0,this.playerReadyToPlayTimeInMs=0,this.playbackStartedTimeInMs=0}toJSON(){return{adPodStartedTimeInMs:this._adPodStartedTimeInMs,adPodEndedTimeInMs:this._adPodEndedTimeInMs,loadReceivedByAppTimeInMs:this._loadReceivedByAppTimeInMs,loadReceivedByPlayerTimeInMs:this._loadReceivedByPlayerTimeInMs,metadataLoadedTimeInMs:this._metadataLoadedTimeInMs,playerReadyToPlayTimeInMs:this._playerReadyToPlayTimeInMs,playbackStartedTimeInMs:this._playbackStartedTimeInMs}}fromJSON(e){e&&(e.adPodStartedTimeInMs&&(this.adPodStartedTimeInMs=e.adPodStartedTimeInMs),e.adPodEndedTimeInMs&&(this.adPodEndedTimeInMs=e.adPodEndedTimeInMs),e.loadReceivedByAppTimeInMs&&(this.loadReceivedByAppTimeInMs=e.loadReceivedByAppTimeInMs),e.loadReceivedByPlayerTimeInMs&&(this.loadReceivedByPlayerTimeInMs=e.loadReceivedByPlayerTimeInMs),e.metadataLoadedTimeInMs&&(this.metadataLoadedTimeInMs=e.metadataLoadedTimeInMs),e.playerReadyToPlayTimeInMs&&(this.playerReadyToPlayTimeInMs=e.playerReadyToPlayTimeInMs),e.playbackStartedTimeInMs&&(this.playbackStartedTimeInMs=e.playbackStartedTimeInMs))}reset(){this.adPodStartedTimeInMs=0,this.adPodEndedTimeInMs=0,this.loadReceivedByAppTimeInMs=0,this.loadReceivedByPlayerTimeInMs=0,this.metadataLoadedTimeInMs=0,this.playerReadyToPlayTimeInMs=0,this.playbackStartedTimeInMs=0}set adPodStartedTimeInMs(e){this._adPodStartedTimeInMs=e}get adPodStartedTimeInMs(){return this._adPodStartedTimeInMs}set adPodEndedTimeInMs(e){this._adPodEndedTimeInMs=e}get adPodEndedTimeInMs(){return this._adPodEndedTimeInMs}set loadReceivedByAppTimeInMs(e){this._loadReceivedByAppTimeInMs=e}get loadReceivedByAppTimeInMs(){return this._loadReceivedByAppTimeInMs}set loadReceivedByPlayerTimeInMs(e){this._loadReceivedByPlayerTimeInMs=e}get loadReceivedByPlayerTimeInMs(){return this._loadReceivedByPlayerTimeInMs}set metadataLoadedTimeInMs(e){this._metadataLoadedTimeInMs=e}get metadataLoadedTimeInMs(){return this._metadataLoadedTimeInMs}set playerReadyToPlayTimeInMs(e){this._playerReadyToPlayTimeInMs=e}get playerReadyToPlayTimeInMs(){return this._playerReadyToPlayTimeInMs}set playbackStartedTimeInMs(e){this._playbackStartedTimeInMs=e}get playbackStartedTimeInMs(){return this._playbackStartedTimeInMs}}class Y{constructor(e){if(VizbeeTV.logger.debug("BasePlayer::constructor() platform =",e),"BasePlayer"===this.constructor.name)throw new TypeError("BasePlayer::constructor() -- Abstract class.");if(!(e&&e instanceof u))throw new Error("BasePlayer::constructor() -- platform cannot be empty or invalid.");this.playerState={IDLE:"idle",PREPARING:"preparing",LOADING:"loading",STARTED:"started",PLAYING:"playing",PAUSED:"paused",BUFFERING:"buffering",INTERRUPTED:"interrupted",ENDED:"ended",ERROR:"error"},this.currentState=this.playerState.IDLE,this.platform=e,this.platformConfig=e.config,this.videoInfo={},this.hlsxchange=!0,this.currentSrc="",this.startVideoTimestampInMS=0,this.onStartedTimestampInMS=0,this.resetListeners(),this.subtitlesDelegate=new B,this.audioDelegate=new q,this.streamQualityInfo=new J}reconstruct(e){}set enableHLSExchange(e){this.hlsxchange=e}set onLoading(e){"function"==typeof e&&this._loadingListeners.push(e)}dispatchOnLoading(){this.currentState=this.playerState.LOADING;for(var e=this._loadingListeners.length-1;e>-1;e--)if(this._loadingListeners[e]())return}set onStarted(e){"function"==typeof e&&this._startedListeners.push(e)}dispatchOnStarted(){this.onStartedTimestampInMS=(new Date).getTime(),this.currentState=this.playerState.STARTED;for(var e=this._startedListeners.length-1;e>-1;e--)if(this._startedListeners[e]())return}set onPlaying(e){"function"==typeof e&&this._playingListeners.push(e)}dispatchOnPlaying(){this.currentState=this.playerState.PLAYING;for(var e=this._playingListeners.length-1;e>-1;e--)if(this._playingListeners[e]())return}set onPaused(e){"function"==typeof e&&this._pausedListeners.push(e)}dispatchOnPaused(){this.currentState=this.playerState.PAUSED;for(var e=this._pausedListeners.length-1;e>-1;e--)if(this._pausedListeners[e]())return}set onTimeUpdate(e){"function"==typeof e&&this._timeupdateListeners.push(e)}dispatchOnTimeUpdate(e){this.currentState=this.playerState.PLAYING;for(var t=this._timeupdateListeners.length-1;t>-1;t--)if(this._timeupdateListeners[t](e))return}set onBuffering(e){"function"==typeof e&&this._bufferingListeners.push(e)}dispatchOnBuffering(e){this.currentState=this.playerState.BUFFERING;for(var t=this._bufferingListeners.length-1;t>-1;t--)if(this._bufferingListeners[t](e))return}set onBufferingComplete(e){"function"==typeof e&&this._bufferingCompleteListeners.push(e)}dispatchOnBufferingComplete(e){for(var t=this._bufferingCompleteListeners.length-1;t>-1;t--)if(this._bufferingCompleteListeners[t](e))return}set onEnded(e){"function"==typeof e&&this._endedListeners.push(e)}dispatchOnEnded(){VizbeeTV.logger.info(this.constructor.name+"::dispatchOnEnded ["+this.currentState+"] sending ended"),this.currentState=this.playerState.ENDED;for(var e=this._endedListeners.length-1;e>-1;e--)if(this._endedListeners[e]())return;this.currentState=this.playerState.IDLE}set onInterrupted(e){"function"==typeof e&&this._interruptedListeners.push(e)}dispatchOnInterrupted(e){if(!this._canBeInterrupted())return VizbeeTV.logger.warn(this.constructor.name+"::dispatchOnInterrupted ["+this.currentState+"] tried to send interrupted in wrong state ",e),!1;VizbeeTV.logger.info(this.constructor.name+"::dispatchOnInterrupted ["+this.currentState+"] sending interrupted ",e),this.currentState=this.playerState.INTERRUPTED;for(var t=this._interruptedListeners.length-1;t>-1;t--)if(this._interruptedListeners[t](e))return;return this.currentState=this.playerState.IDLE,!0}_canBeInterrupted(){return this.currentState==this.playerState.STARTED||this.currentState==this.playerState.PLAYING||this.currentState==this.playerState.PAUSED||this.currentState==this.playerState.BUFFERING}set onError(e){"function"==typeof e&&this._errorListeners.push(e)}dispatchOnError(e){if(!this._canBeErrored())return VizbeeTV.logger.warn(this.constructor.name+"::dispatchOnError ["+this.currentState+"] tried to send error in wrong state ",e),!1;VizbeeTV.logger.info(this.constructor.name+"::dispatchOnError ["+this.currentState+"] sending error ",e),this.currentState=this.playerState.ERROR;for(var t=this._errorListeners.length-1;t>-1;t--)if(this._errorListeners[t](e))return;return this.currentState=this.playerState.IDLE,!0}_canBeErrored(){return this.currentState!=this.playerState.IDLE}set onEvent(e){"function"==typeof e&&this._eventListeners.push(e)}dispatchOnEvent(e){for(var t=this._eventListeners.length-1;t>-1;t--)if(this._eventListeners[t](e))return}resetListeners(){this._startedListeners=[],this._loadingListeners=[],this._playingListeners=[],this._pausedListeners=[],this._timeupdateListeners=[],this._bufferingListeners=[],this._bufferingCompleteListeners=[],this._endedListeners=[],this._interruptedListeners=[],this._errorListeners=[],this._eventListeners=[]}start(e){VizbeeTV.logger.debug(this.constructor.name+"::Start() BEGINNING - CURRENT_PLAYER_STATE -- ",this.currentState),this.videoInfo=e,this.currentState=this.playerState.PREPARING,this.startVideoTimestampInMS=(new Date).getTime(),this.subtitlesDelegate.init();let t=this.getPlayerType();this.subtitlesDelegate.setPlayerWithType(t,this);let i=this.getSubtitleTypeFromVideoInfo(e);this.subtitlesDelegate.setSubtitleType(i),this.audioDelegate.init(),this.audioDelegate.setPlayerWithType(t,this),VizbeeTV.logger.debug(this.constructor.name+"::Start() ENDING - CURRENT_PLAYER_STATE -- ",this.currentState)}play(){throw new TypeError(this.constructor.name+"::play() - Abstract method.")}pause(){throw new TypeError(this.constructor.name+"::pause() - Abstract method.")}togglePlayPause(){throw new TypeError(this.constructor.name+"::togglePlayPause() - Abstract method.")}seek(e){throw new TypeError(this.constructor.name+"::seek() - Abstract method.")}stop(e){throw new TypeError(this.constructor.name+"::stop() - Abstract method.")}currentTime(){throw new TypeError(this.constructor.name+"::currentTime() - Abstract method.")}getDuration(){throw new TypeError(this.constructor.name+"::getDuration() - Abstract method.")}getStartTime(){return this.startVideoTimestampInMS>0&&this.onStartedTimestampInMS>this.startVideoTimestampInMS?this.onStartedTimestampInMS-this.startVideoTimestampInMS:0}getBufferLevel(){return{current:0,target:0}}getAudioBufferLevel(){return{current:0,target:0,didDetectSeparateAudio:!1}}getCurrentState(){return this.currentState}getName(){return this.constructor.name}getPlayerType(){let e,t=this.getName().toLowerCase();return-1!=t.indexOf("bitmovin")?e=o:-1!=t.indexOf("videojs")?e=l:-1!=t.indexOf("theo")?e=d:-1!=t.indexOf("shaka")?e=c:-1!=t.indexOf("avplayer")?e=a:-1!=t.indexOf("caf")?e=n:-1!=t.indexOf("chromecast")&&(e=s),e}getCurrentVersion(){return""}getHlsxchangeUrl(){return this.hlsxchange&&(this.videoInfo.src.lastIndexOf(".m3u8")>=0||this.videoInfo.src.lastIndexOf("m3u")>=0)?M.xchangeHLSUrl(this.videoInfo.src,this.videoInfo.appID,this.platform.cloudPlatformName,this.videoInfo.minBitrate,this.videoInfo.maxBitrate,1):this.videoInfo.src}getAppVideoStartErrorInfo(e,t){let i,r;if(this.videoInfo&&this.videoInfo.videourl&&-1!=this.videoInfo.videourl.indexOf("start_video_failure")){let e=M.getUrlVars(this.videoInfo.videourl);i=e.errorCode,r=e.errorReason}return i&&r?{errorCode:i,errorReason:r}:{errorCode:e,errorReason:t}}buildErrorEvent(e,t,i){return{player:this.constructor.name,code:e,reason:t,data:i}}doAction(e){}reset(){this.resetListeners()}destroy(){this.resetListeners()}getTracks(e){return e==i?this.subtitlesDelegate&&this.subtitlesDelegate.isReady()?this.subtitlesDelegate.getTracks(e):[]:e==r&&this.audioDelegate&&this.audioDelegate.isReady()?this.audioDelegate.getTracks(e):[]}getEnabledTracks(e){return e==i?this.subtitlesDelegate&&this.subtitlesDelegate.isReady()?this.subtitlesDelegate.getEnabledTracks(e):[]:e==r&&this.audioDelegate&&this.audioDelegate.isReady()?this.audioDelegate.getEnabledTracks(e):[]}getSubtitleTypeFromVideoInfo(e){return"any"}enableTracks(e){this.subtitlesDelegate.isReady()&&this.subtitlesDelegate.enableTracks(e)}disableTracks(e){this.subtitlesDelegate.isReady()&&this.subtitlesDelegate.disableTracks(e)}changeAudioTrack(e){this.audioDelegate.isReady()?this.audioDelegate.setActiveTrack(e):VizbeeTV.logger.warn(this.constructor.name+"::changeAudioTrack - audio delegate is not ready")}getStreamQualityInfo(){return this.streamQualityInfo&&this.streamQualityInfo.toJSON()}setStreamQualityInfo(e){this.streamQualityInfo&&this.streamQualityInfo.fromJSON(e)}resetStreamQualityInfo(){this.streamQualityInfo&&this.streamQualityInfo.reset()}setTracks(e){}getCurrentTrack(){var e;return this.videoInfo.tracks&&this.videoInfo.tracks.length>0&&isFinite(this.videoInfo.activeTrackId)&&(e=this.videoInfo.tracks.find(e=>this.videoInfo.activeTrackId==e.trackId)),e}}class $ extends Y{extend(){throw new TypeError("BasePlayerExtensible::extend() - Abstract method.")}beforeStart(){throw new TypeError("BasePlayerExtensible::beforeStart() - Abstract method.")}}class Q extends ${constructor(e){super(e),this.playerElement=this.platformConfig.videoElement,this.currentSrc="",this.eventListenersSet=!1,this.bypassCanPlay=!1,this.hlsxchange=!1,this.invokedWithStartVideo=!1,this.startedPlaying=!1,this.finishedStartSeek=!1,this.isVideoStopped=!1,this.isVideoEnded=!1,this.logEvents=["abort","error","canplay","canplaythrough","durationchange","emptied","ended","loadeddata","loadedmetadata","loadstart","pause","play","playing","ratechange","seeked","seeking","stalled","volumechange","waiting"],this.playbackEvents=["canplay","canplaythrough","durationchange","loadeddata","loadedmetadata","pause","play","playing","seeked","seeking"],this.loadingEvents=["loadeddata","loadedmetadata"],this.startedEvents=["loadedmetadata"],this.platformConfig.standalone?this.registerEventHandlers():this.configurePlayerElement()}configurePlayerElement(){let e=this.playerElement;e.removeAttribute("style"),e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e.style.backgroundColor="black",e.style.display="block"}baseStart(e){super.start(e)}start(e){this.baseStart(e),this.platformConfig.standalone||this.configurePlayerElement(),this.invokedWithStartVideo=!0,VizbeeTV.logger.debug("HtmlPlayer::Start() -- ",this.currentSrc,this.videoInfo.src),this.startedPlaying=!1,this.finishedStartSeek=!1,VizbeeTV.logger.debug("HtmlPlayer::start() -- Playing video"),this.videoInfo.src=this.getHlsxchangeUrl(),VizbeeTV.logger.info("HtmlPlayer::start() - video url ",this.videoInfo.src),""!=this.playerElement.src&&(VizbeeTV.logger.debug("HtmlPlayer::start - setting src to empty"),this.playerElement.src=""),this.playerElement.removeAttribute("src"),this.playerElement.removeAttribute("type"),this.playerElement.setAttribute("src",this.videoInfo.src),this.videoInfo.src.lastIndexOf(".m3u8")>=0||this.videoInfo.src.lastIndexOf("m3u")>=0?this.playerElement.setAttribute("type","application/vnd.apple.mpegurl"):this.videoInfo.src.lastIndexOf(".ism")>=0?this.playerElement.setAttribute("type","application/vnd.ms-sstr+xml"):this.videoInfo.src.lastIndexOf(".mpd")>=0?this.playerElement.setAttribute("type","application/dash+xml"):this.playerElement.setAttribute("type","video/mp4"),this.registerEventHandlers(),this.bypassCanPlay=!1,this.playerElement.load(),this.currentSrc=this.videoInfo.src}play(){VizbeeTV.logger.debug("HtmlPlayer::play() called."),this.playerElement.play(),this.bypassCanPlay=!1}pause(){VizbeeTV.logger.debug("HtmlPlayer::pause() called."),this.playerElement.pause(),void 0===this.playerElement.paused&&(this.bypassCanPlay=!0)}seek(e){VizbeeTV.logger.debug("HtmlPlayer::seek() called with time ",e);var t=e/1e3;0==t&&(t=1),this.playerElement.currentTime=t}togglePlayPause(){this.playerElement.paused?this.playerElement.play():this.playerElement.pause()}stop(e){this.isVideoStopped=!0,this.playerElement.src&&this.playerElement.src!=location.origin+location.pathname&&(this.playerElement.src=""),this.videoInfo&&(this.videoInfo.src=""),this.currentSrc=""}currentTime(){return this.playerElement.currentTime}getDuration(){return this.playerElement.duration}destroy(){return new Promise((e,t)=>{this.unregisterEventHandlers(),super.destroy(),e()})}registerEventHandlers(){VizbeeTV.logger.debug("HtmlPlayer::registerEventHandlers called",this,this.playerElement),this.playerElement&&(this.eventListenersSet||(this._eventCallbackHandles={logEvent:e=>this.defaultLogHandler(e),loadingEvent:e=>this.loadingHandler(e),startedEvent:e=>this.startedEventHandler(e),canplayEvent:e=>this.videoCanPlayHandler(e),playEvent:e=>this.videoPlayHandler(e),playingEvent:e=>this.videoPlayingHandler(e),seekedEvent:e=>this.videoSeekedHandler(e),pauseEvent:e=>this.videoPausedHandler(e),bufferingEvent:e=>this.bufferingHandler(e),timeupdateEvent:e=>this.timeUpdateHandler(e),endedEvent:()=>this.endedHandler(),errorEvent:e=>this.errorHandler(e),abortEvent:e=>this.abortHandler(e)},this.logEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.logEvent,!1)}),this.playbackEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.playbackEvent,!1)}),this.loadingEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.loadingEvent,!1)}),this.startedEvents.forEach(e=>{this.playerElement.addEventListener(e,this._eventCallbackHandles.startedEvent,!1)}),this.playerElement.addEventListener("canplay",this._eventCallbackHandles.canplayEvent,!1),this.playerElement.addEventListener("play",this._eventCallbackHandles.playEvent,!1),this.playerElement.addEventListener("playing",this._eventCallbackHandles.playingEvent,!1),this.playerElement.addEventListener("seeked",this._eventCallbackHandles.seekedEvent,!1),this.playerElement.addEventListener("pause",this._eventCallbackHandles.pauseEvent,!1),this.playerElement.addEventListener("seeking",this._eventCallbackHandles.bufferingEvent,!1),this.playerElement.addEventListener("timeupdate",this._eventCallbackHandles.timeupdateEvent,!1),this.playerElement.addEventListener("ended",this._eventCallbackHandles.endedEvent,!1),this.playerElement.addEventListener("error",this._eventCallbackHandles.errorEvent,!1),this.playerElement.addEventListener("abort",this._eventCallbackHandles.abortEvent,!1),this.eventListenersSet=!0))}unregisterEventHandlers(){VizbeeTV.logger.debug("HtmlPlayer::unregisterEventHandlers called"),this.playerElement&&this.eventListenersSet&&this._eventCallbackHandles&&(this.logEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.logEvent)}),this.playbackEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.playbackEvent)}),this.loadingEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.loadingEvent)}),this.startedEvents.forEach(e=>{this.playerElement.removeEventListener(e,this._eventCallbackHandles.startedEvent)}),this.playerElement.removeEventListener("canplay",this._eventCallbackHandles.canplayEvent),this.playerElement.removeEventListener("play",this._eventCallbackHandles.playEvent),this.playerElement.removeEventListener("playing",this._eventCallbackHandles.playingEvent),this.playerElement.removeEventListener("seeked",this._eventCallbackHandles.seekedEvent),this.playerElement.removeEventListener("pause",this._eventCallbackHandles.pauseEvent),this.playerElement.removeEventListener("seeking",this._eventCallbackHandles.bufferingEvent),this.playerElement.removeEventListener("timeupdate",this._eventCallbackHandles.timeupdateEvent),this.playerElement.removeEventListener("ended",this._eventCallbackHandles.endedEvent),this.playerElement.removeEventListener("error",this._eventCallbackHandles.errorEvent),this.playerElement.removeEventListener("abort",this._eventCallbackHandles.abortEvent),this.eventListenersSet=!1)}defaultLogHandler(e){VizbeeTV.logger.debug("HtmlPlayer::defaultLogHandler ["+this.getCurrentState()+"] "+e.type+" -- ",e,this.currentSrc,this.getDuration(),this.currentTime(),this),VizbeeTV.logger.debug("---------------------"),VizbeeTV.logger.debug("readyState",this.playerElement.readyState),VizbeeTV.logger.debug("---------------------")}loadingHandler(e){this.isVideoEnded=!1,this.dispatchOnLoading()}startedEventHandler(e){this.dispatchOnStarted()}videoCanPlayHandler(e){if(this.invokedWithStartVideo&&(VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - checking and playing video",this,this.playerElement.duration,this.startedPlaying),this.isVideoEnded=!1,!this.startedPlaying)){this.videoInfo&&this.videoInfo.startTime||(this.videoInfo=this.videoInfo||{},this.videoInfo.startTime=0);var t=this.videoInfo.startTime/1e3;if(VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - starttime = "+t),!this.finishedStartSeek&&0!=t)try{VizbeeTV.logger.debug("HtmlPlayer::videoCanPlayHandler::canplay - seeking to start time = ",t),this.finishedStartSeek=!0,this.playerElement.currentTime=t||0}catch(e){VizbeeTV.logger.error("HtmlPlayer::videoCanPlayHandler::canplay - Error setting start time for video",e)}this.bypassCanPlay||(VizbeeTV.tv.player.play(!0),this.startedPlaying=!0)}}videoPlayHandler(e){this.isVideoEnded=!1,this.dispatchOnPlaying()}videoPlayingHandler(e){this.isVideoEnded=!1,this.dispatchOnPlaying()}videoPausedHandler(e){this.dispatchOnPaused()}videoSeekedHandler(e){this.dispatchOnBufferingComplete(),this.playerElement.paused?this.dispatchOnPaused():this.dispatchOnPlaying()}bufferingHandler(e){this.isVideoEnded=!1,this.dispatchOnBuffering()}timeUpdateHandler(e){this.playerElement.paused||this.dispatchOnTimeUpdate(e)}endedHandler(){this.isVideoEnded=!0,this.dispatchOnEnded()}abortHandler(e){let t,i=this.buildErrorEvent(0,"UNKNOWN",{});i.data=e,e&&e.currentTarget&&e.currentTarget.error?t=e.currentTarget.error:e&&e.target&&e.target.error&&(t=e.target.error),t&&void 0!==t.code&&null!=t.code&&(i.code=t.code),i.reason="STOP_BY_USER",this.dispatchOnInterrupted(i)||this.errorHandler(e),this.isVideoStopped=!1}errorHandler(e){let t,i=this.buildErrorEvent(0,"UNKNOWN",{});if(i.data=e,e&&e.currentTarget&&e.currentTarget.error?t=e.currentTarget.error:e&&e.target&&e.target.error&&(t=e.target.error),this.isVideoStopped)return this.isVideoStopped=!1,i.reason="STOP_BY_USER",void this.dispatchOnError(i);if(t&&void 0!==t.code&&null!=t.code)switch(i.code=t.code,t.code){case t.MEDIA_ERR_ABORTED:i.reason="MEDIA_ERR_ABORTED",VizbeeTV.logger.error("HtmlPlayer::ERROR ** You aborted the video playback.");break;case t.MEDIA_ERR_NETWORK:i.reason="MEDIA_ERR_NETWORK",VizbeeTV.logger.error("HtmlPlayer::ERROR ** A network error caused the video download to fail part-way.");break;case t.MEDIA_ERR_DECODE:i.reason="MEDIA_ERR_DECODE",VizbeeTV.logger.error("HtmlPlayer::ERROR ** The video playback was aborted due to a corruption problem or because the video used features your browser did not support.");break;case t.MEDIA_ERR_SRC_NOT_SUPPORTED:i.reason="MEDIA_ERR_SRC_NOT_SUPPORTED",VizbeeTV.logger.error("HtmlPlayer::ERROR ** The video could not be loaded, either because the server or network failed or because the format is not supported.");break;default:VizbeeTV.logger.error("HtmlPlayer::ERROR ** An unknown error occurred.",t)}let r=this.getAppVideoStartErrorInfo(i.code,i.reason);i.code=r.errorCode,i.reason=r.errorReason,VizbeeTV.logger.error("HtmlPlayer::ErrorHandler ["+this.currentState+"]",i.reason,i.code),this.dispatchOnError(i)}}let Z=Math.pow(10,1e3);class X extends Q{constructor(e){VizbeeTV.logger.debug("ChromecastPlayer::constructor()"),super(e),this.mediaManager=this.platformConfig.mediaManager,this.registerMediaManagerEvents(),this.subtitlesDelegate.init(),this.subtitlesDelegate.setPlayerWithType(s,this),this.subtitlesDelegate.setSubtitleType("any"),this.needRequestWithCredentials=["chivasott1-i.akamaihd.net","chivasott2-i.akamaihd.net","chivasott3-i.akamaihd.net","chivasott4-i.akamaihd.net","chivasott5-i.akamaihd.net","chivasott6-i.akamaihd.net"]}start(e){if(super.baseStart(e),VizbeeTV.logger.debug("ChromeCastPlayer::Start() -- ",this.currentSrc,this.videoInfo.src),this.invokedWithStartVideo=!0,this.startedPlaying=!1,this.finishedStartSeek=!1,this.screenSaverEnabled=!1,this.resetPlayer(),VizbeeTV.logger.debug("ChromecastPlayer::start() with source ",this.videoInfo.src),this.videoInfo.src.indexOf(".m3u8")>0||this.videoInfo.src.lastIndexOf("m3u")>=0||this.videoInfo.src.indexOf(".ism")>0){var t=new cast.player.api.Host({mediaElement:this.playerElement,url:this.videoInfo.src});new RegExp(this.needRequestWithCredentials.join("|")).test(this.videoInfo.src)&&(t.updateManifestRequestInfo=e=>{e.withCredentials=!0},t.updateSegmentRequestInfo=e=>{e.withCredentials=!0}),t.onError=e=>{this.resetPlayer(),this.onCastPlayerError(e)},this.castPlayer=new cast.player.api.Player(t)}else this.playerElement.setAttribute("src",this.videoInfo.src);if(this.eventListenersSet||(this.registerEventHandlers(),this.eventListenersSet=!0),this.videoInfo.src.indexOf(".m3u8")>0||this.videoInfo.src.lastIndexOf("m3u")>=0){VizbeeTV.logger.debug("ChromecastPlayer::start() with streaming protocol hls - starts at current position",this.videoInfo.src);let e=this.getHlsSegmentFormat();i=null!=e?cast.player.api.CreateHlsStreamingProtocol(t,e):cast.player.api.CreateHlsStreamingProtocol(t),this.castPlayer.protocol=i,this.videoInfo.isLive?(this.videoInfo.startTime=0,this.castPlayer.load(this.castPlayer.protocol,Z)):this.castPlayer.load(this.castPlayer.protocol,this.videoInfo.startTime/1e3)}else if(this.videoInfo.src.indexOf(".ism")>0){VizbeeTV.logger.debug("ChromecastPlayer::start() with streaming protocol Smooth streaming",this.videoInfo.src);var i=cast.player.api.CreateSmoothStreamingProtocol(t);this.castPlayer.protocol=i,this.videoInfo.isLive?(this.videoInfo.startTime=0,this.castPlayer.load(this.castPlayer.protocol,Z)):this.castPlayer.load(this.castPlayer.protocol,this.videoInfo.startTime/1e3)}else this.playerElement.load();this.currentSrc=this.videoInfo.src}seek(e){this.videoInfo.isLive?VizbeeTV.logger.debug("ChromecastPlayer::seek called on live video - not supported"):super.seek(e)}stop(e){this.castPlayer&&(this.castPlayer.unload(),this.castPlayer=null),super.stop(e)}pause(){super.pause(),this.pauseFromSync=!0}setTracks(e){var t,i,r=this.videoInfo.tracks||[],n="ttml",s="webvtt";if(0!=r.length)if(e.length>0&&(i=e[0]),i){var a=r.find(e=>i==e.trackId);a&&(a.trackContentType.indexOf("vtt")>=0&&(t=s),a.trackContentType.indexOf(n)>=0&&(t=n),t&&(this.videoInfo.activeTrackId=i,this.castPlayer.enableCaptions(!0,t,a.trackContentId)))}else{var o=this.getCurrentTrack();o&&(o.trackContentType.indexOf("vtt")>=0&&(t=s),o.trackContentType.indexOf(n)>=0&&(t=n),t&&(this.videoInfo.activeTrackId=void 0,this.castPlayer.enableCaptions(!1,t)))}else this.checkForInbandCaptions(e)}checkForInbandCaptions(e){VizbeeTV.logger.debug("ChromecastHtmlPlayer::checkForInbandCaptions() - ",e),0!=this.mediaManager.getMediaInformation().length?this.processInBandTracks(e):VizbeeTV.logger.debug("ChromecastHtmlPlayer::checkForInbandCaptions() - No in_band captions")}processInBandTracks(e){VizbeeTV.logger.debug("ChromecastHtmlPlayer::processInBandTracks() - ",e);for(var t=this.castPlayer.getStreamingProtocol(),i=t.getStreamCount(),r=0;r<i;r++){for(var n=r+1,s=!1,a=0;a<e.length;a++)if(e[a]==n){s=!0;break}var o=t.isStreamEnabled(r);s&&!o?t.enableStream(r,!0):!s&&o&&t.enableStream(r,!1)}this.castPlayer.enableCaptions(!0)}registerMediaManagerEvents(){if(this.mediaManager){let e=this.mediaManager.onStop;this.mediaManager.onStop=t=>{this.isVideoStopped=!0,e(t)}}}videoPausedHandler(e){try{if(this.castPlayer&&this.castPlayer.getState().underflow)return void this.dispatchOnBuffering()}catch(e){if(this.pauseFromSync)return this.dispatchOnPaused(),void(this.pauseFromSync=!1)}if(this.pauseFromSync)return this.dispatchOnPaused(),void(this.pauseFromSync=!1)}videoSeekedHandler(e){!this.playerElement.paused||this.castPlayer&&this.castPlayer.getState()&&this.castPlayer.getState().underflow?this.dispatchOnPlaying():this.dispatchOnPaused()}onCastPlayerError(e){VizbeeTV.logger.debug("ChromecastPlayer::onCastPlayerError()",e);let t="UNKNOWN";switch(e){case cast.player.api.ErrorCode.PLAYBACK:VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error related to media playback"),t="MEDIA_ERR_PLAYBACK";break;case cast.player.api.ErrorCode.MEDIAKEYS:t="MEDIAKEYS_ERR",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error fetching the keys or decrypting the content");break;case cast.player.api.ErrorCode.NETWORK:t="MEDIA_ERR_NETWORK",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Network error");break;case cast.player.api.ErrorCode.MANIFEST:t="MEDIA_ERR_MANIFEST",VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Error loading or parsing the manifest");break;default:VizbeeTV.logger.error("ChromecastPlayer::onCastPlayerError() Unknown player error.")}let i=this.getAppVideoStartErrorInfo(e,t);e=i.errorCode,t=i.errorReason;let r={code:e,reason:t},n=this.buildErrorEvent(e,t,r);this.dispatchOnError(n)}resetPlayer(){this.playerElement.removeAttribute("type"),this.playerElement.removeAttribute("src"),this.playerElement.load(),this.castPlayer&&(this.castPlayer.unload(),this.castPlayer=null)}getHlsSegmentFormat(){let e=cast.player.api.HlsSegmentFormat.MPEG2_TS;if(this.videoInfo&&this.videoInfo.streamTypeInfo){let t=this.videoInfo.streamTypeInfo;"hls"==t.type&&("cmaf"==t.subType?e=cast.player.api.HlsSegmentFormat.FMP4:"single"==t.audioBitrateFormat&&(e=void 0))}return e}}class ee{constructor(){this._instance=void 0}getInstance(e){return this._instance||(e&&"v3"==e.toLowerCase()?this._instance=null:this._instance=X),this._instance}}class te extends ${constructor(e,t){if(super(e),!t)throw ReferenceError("DynamicPlayerSelector::constructor | DefaultPlatformPlayer is not passed.");this.nativePlayerClass=t.nativePlayer,this.htmlPlayerClass=t.htmlPlayer,this.bitmovinPlayerClass=t.bitmovinPlayer,this.modularBitmovinPlayerClass=t.modularBitmovinPlayer,this.videoJSPlayerClass=t.videoJSPlayer,this.theoPlayerPlayerClass=t.theoPlayer,this.shakaPlayerClass=t.shakaPlayer,this.topPlayerClass=t.topPlayer,this.currentPlayer=void 0,this.nativePlayer=void 0,this.htmlPlayer=void 0,this.bitmovinPlayer=void 0,this.modularBitmovinPlayer=void 0,this.videoJSPlayer=void 0,this.theoPlayer=void 0,this.shakaPlayer=void 0,this.topPlayer=void 0,VizbeeTV.logger.info("DynamicPlayerSelector::constructor - creating and selecting player");let i=e.config.vtvPlayerListConfig||[{type:"native"}];i.forEach(e=>{this._createPlayer(e)}),this._selectPlayer(i[0])}reconstruct(e){VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - newPlatformConfig",e),this.platform.config=e,e.standalone&&this._destroyAllPlayers();let t=[{type:"native"}];t=!e.vtvPlayerListConfig||P.isArray(e.vtvPlayerListConfig)&&0==e.vtvPlayerListConfig.length?[{type:"native"}]:e.vtvPlayerListConfig,VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - updated vtvPlayerListConfig",t),VizbeeTV.logger.info("DynamicPlayerSelector::reconstruct - creating and selecting player"),t.forEach(e=>{this._createPlayer(e)}),this._selectPlayer(t[0])}_destroyAllPlayers(){VizbeeTV.logger.info("DynamicPlayerSelector::_destroyAllPlayers - destroying all players"),this.nativePlayer&&(this.nativePlayer.destroy(),this.nativePlayer=void 0),this.htmlPlayer&&(this.htmlPlayer.destroy(),this.htmlPlayer=void 0),this.bitmovinPlayer&&(this.bitmovinPlayer.destroy(),this.bitmovinPlayer=void 0),this.modularBitmovinPlayer&&(this.modularBitmovinPlayer.destroy(),this.modularBitmovinPlayer=void 0),this.videoJSPlayer&&(this.videoJSPlayer.destroy(),this.videoJSPlayer=void 0),this.theoPlayer&&(this.theoPlayer.destroy(),this.theoPlayer=void 0),this.shakaPlayer&&(this.shakaPlayer.destroy(),this.shakaPlayer=void 0),this.topPlayer&&(this.topPlayer.destroy(),this.topPlayer=void 0),this.currentPlayer=void 0}_createPlayer(e){switch(e&&e.type){case"top":null==this.topPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Top Player"),this.topPlayer=new this.topPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Top Player");break;case"bitmovin":"modular"==e.subtype&&this.modularBitmovinPlayerClass?null==this.modularBitmovinPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Modular Bitmovin Player"),this.modularBitmovinPlayer=new this.modularBitmovinPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Modular Bitmovin Player"):null==this.bitmovinPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Static Bitmovin Player"),this.bitmovinPlayer=new this.bitmovinPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Static Bitmovin Player");break;case"videojs":null==this.videoJSPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING VideoJS Player"),this.videoJSPlayer=new this.videoJSPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED VideoJS Player");break;case"theo":null==this.theoPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING THEO Player"),this.theoPlayer=new this.theoPlayerPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED THEO Player");break;case"shaka":null==this.shakaPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Shaka Player"),this.shakaPlayer=new this.shakaPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Shaka Player");break;case"html":null==this.htmlPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING HTML Player"),this.htmlPlayer=new this.htmlPlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED HTML Player");break;default:null==this.nativePlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - CREATING Native Player"),this.nativePlayer=new this.nativePlayerClass(this.platform)):VizbeeTV.logger.info("DynamicPlayerSelector::_createPlayer - ALREADY CREATED Native Player")}}_selectPlayer(e){if(e&&e.type)switch(e.type){case"top":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Top Player"),this._preparePlayer(this.topPlayer);break;case"bitmovin":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Bitmovin Player"),"modular"==e.subtype?this._preparePlayer(this.modularBitmovinPlayer):this._preparePlayer(this.bitmovinPlayer);break;case"videojs":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING VideoJS Player"),this._preparePlayer(this.videoJSPlayer);break;case"theo":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING THEO Player"),this._preparePlayer(this.theoPlayer);break;case"shaka":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Shaka Player"),this._preparePlayer(this.shakaPlayer);break;case"html":VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING HTML Player"),this._preparePlayer(this.htmlPlayer);break;default:VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - SELECTING Native Player"),this._preparePlayer(this.nativePlayer)}else null==this.currentPlayer?(VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - DEFAULTING to native player"),this._preparePlayer(this.nativePlayer)):VizbeeTV.logger.info("DynamicPlayerSelector::_selectPlayer - REUSING current player")}_preparePlayer(e){e?this.currentPlayer&&this.currentPlayer.constructor.name==e.constructor.name?VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - NO CHANGE to already prepared player"):(VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - CHANGING player listeners"),this.currentPlayer&&this.currentPlayer.constructor.name!=e.constructor.name&&this._removePlayerListeners(this.currentPlayer),this.currentPlayer=e,this._addPlayerListeners(this.currentPlayer)):VizbeeTV.logger.info("DynamicPlayerSelector::_preparePlayer - INVALID player argument")}beforeStart(e){super.start(e)}start(e){this.beforeStart(e),VizbeeTV.logger.info("START TIME TRACKING [DynamicPlayerSelector Start Video] - player="+this.currentPlayer.constructor.name,e),VizbeeTV.logger.info("DynamicPlayerSelector::_start - current player="+this.currentPlayer.constructor.name),e.vtvPlayerConfig&&(VizbeeTV.logger.info("DynamicPlayerSelector::_start - playerType="+e.vtvPlayerConfig.type),this._createPlayer(e.vtvPlayerConfig),this._selectPlayer(e.vtvPlayerConfig)),this.currentPlayer.enableHLSExchange=e.useHLSExchange,this.currentPlayer.start(e)}play(){this.currentPlayer&&this.currentPlayer.play()}pause(){this.currentPlayer&&this.currentPlayer.pause()}togglePlayPause(){this.currentPlayer&&this.currentPlayer.togglePlayPause()}stop(e){this.currentPlayer&&this.currentPlayer.stop(e)}seek(e){this.currentPlayer&&this.currentPlayer.seek(e)}currentTime(){return this.currentPlayer?this.currentPlayer.currentTime():-1}getDuration(){return this.currentPlayer?this.currentPlayer.getDuration():-1}getStartTime(){return this.currentPlayer?this.currentPlayer.getStartTime():-1}getBufferLevel(){return this.currentPlayer?this.currentPlayer.getBufferLevel():{current:0,target:0}}getAudioBufferLevel(){return this.currentPlayer?this.currentPlayer.getAudioBufferLevel():{current:0,target:0,didDetectSeparateAudio:!1}}getCurrentState(){return this.currentPlayer?this.currentPlayer.getCurrentState():"IDLE"}setTracks(e){if(this.currentPlayer)return this.currentPlayer.setTracks(e)}getTracks(e){return this.currentPlayer?this.currentPlayer.getTracks(e):[]}getEnabledTracks(e){return this.currentPlayer?this.currentPlayer.getEnabledTracks(e):[]}enableTracks(e){this.currentPlayer&&this.currentPlayer.enableTracks(e)}disableTracks(e){this.currentPlayer&&this.currentPlayer.disableTracks(e)}changeAudioTrack(e){this.currentPlayer&&this.currentPlayer.changeAudioTrack(e)}getStreamQualityInfo(){return this.currentPlayer?this.currentPlayer.getStreamQualityInfo():{}}setStreamQualityInfo(e){this.currentPlayer&&this.currentPlayer.setStreamQualityInfo(e)}resetStreamQualityInfo(){this.currentPlayer&&this.currentPlayer.resetStreamQualityInfo()}getName(){return this.currentPlayer.getName()}getCurrentVersion(){return this.currentPlayer.getCurrentVersion()}doAction(e){return this.currentPlayer.doAction(e)}wrapAVPlayerListener(e){return this.currentPlayer.wrapAVPlayerListener(e)}destroy(){super.destroy(),this._destroyAllPlayers()}_addPlayerListeners(e){e.onLoading=e=>{this.dispatchOnLoading.call(this,e)},e.onStarted=e=>{this.dispatchOnStarted.call(this,e)},e.onPlaying=e=>{this.dispatchOnPlaying.call(this,e)},e.onPaused=e=>{this.dispatchOnPaused.call(this,e)},e.onBuffering=e=>{this.dispatchOnBuffering.call(this,e)},e.onBufferingComplete=e=>{this.dispatchOnBufferingComplete.call(this,e)},e.onTimeUpdate=e=>{this.dispatchOnTimeUpdate.call(this,e)},e.onInterrupted=e=>{this.dispatchOnInterrupted.call(this,e)},e.onEnded=e=>{this.dispatchOnEnded.call(this,e)},e.onError=e=>{this.dispatchOnError.call(this,e)},e.onEvent=e=>{this.dispatchOnEvent.call(this,e)}}_removePlayerListeners(e){e.resetListeners()}}class ie{constructor(){if("BaseDeviceID"===this.constructor.name)throw new TypeError("BaseDeviceID::constructor() - Abstract class.");this.deviceIdAlgorithm="VTV_DEFAULT",this.deviceIdKey="deviceid"}uniqueDeviceID(e,t){VizbeeTV.logger.error("BaseDeviceID::uniqueDeviceID - subclass did not override; no deviceId available"),t()}get algorithm(){return this.deviceIdAlgorithm}}class re extends ie{constructor(){super(),this.deviceIdAlgorithm="VTV_SESSION_ID"}uniqueDeviceID(e,t){let i,r=cast.receiver.CastReceiverManager.getInstance();r?r.getApplicationData()&&r.getApplicationData().sessionId?(i=r.getApplicationData().sessionId,e(i)):r.onReady=this.chain(r.onReady,function(i){i.length>0?e(i[0].data.sessionId):i.data&&i.data.sessionId?e(i.data.sessionId):(VizbeeTV.logger.error("SessionDeviceID::uniqueDeviceID - onReady fired without a sessionId"),t())}):t()}chain(e,t){return e?function(){e.call(this,arguments),t.call(this,arguments)}:t}}class ne extends ie{constructor(){super(),this.deviceIdAlgorithm="VTV_SESSION_ID"}uniqueDeviceID(e,t){let i,r=cast.framework.CastReceiverContext.getInstance();r?r.getApplicationData()&&r.getApplicationData().sessionId?(i=r.getApplicationData().sessionId,e(i)):r.addEventListener(cast.framework.system.EventType.READY,i=>{i&&i.data&&i.data.sessionId?e(i.data.sessionId):(VizbeeTV.logger.error("CAFSessionDeviceID::uniqueDeviceID - READY fired without a sessionId"),t())}):t()}}class se{constructor(){this._instance=void 0}getInstance(e){return this._instance||(e&&"v3"==e.toLowerCase()?this._instance=new ne:this._instance=new re),this._instance}}class ae{constructor(){var e,t,i,r,n;this._uaParser=(e=navigator.userAgent,i={name:"",version:""},r={name:"",version:""},n={name:"",version:""},(t=/Windows\s*(?:NT\s*)?([\d.]+)?/i.exec(e))?(i.name="Windows",i.version=t[1]||""):(t=/Mac OS X\s*([\d_.]+)?/i.exec(e))?(i.name="Mac OS",i.version=(t[1]||"").replace(/_/g,".")):(t=/CrOS[\s/]*([\w.]+)?/i.exec(e))?(i.name="Chromium OS",i.version=t[1]||""):(t=/Android\s*([\d.]+)?/i.exec(e))?(i.name="Android",i.version=t[1]||""):(t=/(?:iPhone|iPad).*OS\s*([\d_]+)/i.exec(e))?(i.name="iOS",i.version=(t[1]||"").replace(/_/g,".")):(t=/Linux/i.exec(e))&&(i.name="Linux"),(t=/(?:Edg|EdgA|EdgIOS)\/([\d.]+)/i.exec(e))?(r.name="Edge",r.version=t[1]):(t=/OPR\/([\d.]+)/i.exec(e))?(r.name="Opera",r.version=t[1]):(t=/Firefox\/([\d.]+)/i.exec(e))?(r.name="Firefox",r.version=t[1]):(t=/Chrome\/([\d.]+)/i.exec(e))?(r.name="Chrome",r.version=t[1]):(t=/Safari\/([\d.]+)/i.exec(e))&&/Version\/([\d.]+)/.test(e)&&(r.name="Safari",r.version=/Version\/([\d.]+)/.exec(e)[1]),(t=/AppleWebKit\/([\d.]+)/i.exec(e))?(n.name="WebKit",n.version=t[1]):(t=/Gecko\/([\d.]+)/i.exec(e))?(n.name="Gecko",n.version=t[1]):(t=/Trident\/([\d.]+)/i.exec(e))&&(n.name="Trident",n.version=t[1]),{os:i,browser:r,engine:n})}get deviceId(){return t}get make(){return t}get model(){return t}get modelYear(){return t}get serialNumber(){return t}get friendlyName(){return t}get macAddress(){return t}get userAgent(){return navigator.userAgent}get os(){return{name:this._uaParser.os.name,sdkVersion:this._uaParser.os.version,version:this._uaParser.os.version}}get browser(){return{name:this._uaParser.browser.name,version:this._uaParser.browser.version,engine_name:this._uaParser.engine.name,engine_version:this._uaParser.engine.version}}get screen(){return{height:document.body.clientHeight,width:document.body.clientWidth}}}class oe extends ae{constructor(){super()}}class le{constructor(){}get internalIP(){return t}get externalIP(){return t}get isWifiConnected(){return!0}get connectionType(){return t}get bssid(){return t}get ssid(){return t}}class de extends le{constructor(){super()}}class ce{constructor(){}isLaunchedbyVizbee(){throw new TypeError("BaseLaunchParams::isLaunchedbyVizbee() - Abstract method. This method must be implemented by derived classes.")}getLaunchParams(e){}setLaunchParams(e){}waitUntilReady(){return this._readyPromise||Promise.resolve()}}class ue extends ce{constructor(){super()}isLaunchedbyVizbee(){return!0}getLaunchParams(){let e,t={};if(e=window.location.href,!this.isValidUrl(e))return;let i=!1,r=e.indexOf("?");if(r>=0){let n=e.slice(r+1).split("&");for(let e=0;e<n.length;e++){let r,s;r=n[e].split("="),2==r.length&&r[0].length&&r[1].length&&(i=!0,s=r[0],t[s]=r[1])}}return i?t:void 0}isValidUrl(e){return/(http|https):\/\//.test(e)}}class pe{constructor(){this.eventMap={}}addHandler(e,t){this.eventMap[e]||(this.eventMap[e]=[]),this.eventMap[e].push(t)}removeHandler(e,t){if(this.eventMap&&this.eventMap[e]){let i,r=this.eventMap[e];if(r&&r.length&&(i=r.reduce((e,i,r)=>this._isFunction(i)&&i==t?e=r:e,-1),i>-1))return r.splice(i,1),this.eventMap[e]=r,!0}return!1}emit(e,t){e&&(VizbeeTV.logger.i("BaseAppLifeCycleManager","emit","eventName=",e,"; eventData=",t),this.eventMap&&this.eventMap[e]&&this.eventMap[e].forEach(i=>{VizbeeTV.logger.i("BaseAppLifeCycleManager","emit","calling handler for event=",e),i.apply({},t)}))}reset(){this.eventMap={}}_isFunction(e){return"function"==typeof e||!1}}class he extends pe{constructor(){super(),this._didBackgroundOnce=!1}init(){document&&this._listen()}_listen(){document.addEventListener("visibilitychange",()=>{try{if(VizbeeTV.tv.isAppExiting)return void VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is exiting");document.hidden?(VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is in background"),this._emitOnBackground()):(VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_listen - application is in foreground"),this._emitOnForeground())}catch(e){VizbeeTV.logger.error("ChromecastAppLifeCycleManager::_listen - error reading lifecycle events",e)}})}_emitOnBackground(){this._didBackgroundOnce=!0,(this.eventMap.onBackground||[]).forEach(e=>{VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_emitOnBackground"),e.apply({})})}_emitOnForeground(){this._didBackgroundOnce&&(this.eventMap.onForeground||[]).forEach(e=>{VizbeeTV.logger.info("ChromecastAppLifeCycleManager::_emitOnForeground"),e.apply({})})}}const ge={chromecast:class extends u{constructor(e){super(e),this.deviceId=this._getDeviceId(),this.launchParams=new ue,this._deviceInfo=new oe,this._networkInfo=new de,this.chromecastAppLifeCycleManager=new he,this.chromecastAppLifeCycleManager.init()}createPlayer(){let e={nativePlayer:this._getPlayer(),htmlPlayer:this._getPlayer(),bitmovinPlayer:null,modularBitmovinPlayer:null,videoJSPlayer:null,theoPlayer:null,shakaPlayer:null,topPlayer:null};return this.player=new te(this,e),this.player}createInputDevice(){return this.inputDevice=new O(this),this.inputDevice}reset(){}exit(){VizbeeTV.logger.i("Chromecast","exit"),this.isAppExiting=!0;try{window.cast&&window.cast.framework?window.cast.framework.CastReceiverContext.getInstance().stop():window.cast&&window.cast.receiver?window.cast.receiver.CastReceiverManager.getInstance().stop():window.close()}catch(e){VizbeeTV.logger.w("Chromecast","exit","failed to stop receiver",e)}}get platformVersion(){return window.cast&&window.cast.framework?"v3":"v2"}get defaultAppletAppId(){return"vzb0000001"}get cloudPlatformName(){return"chromecast"}get deviceInfo(){return this._deviceInfo}get networkInfo(){return this._networkInfo}get launchParamsDeferral(){return this.launchParams}get appLifeCycleManager(){return this.chromecastAppLifeCycleManager}_getDeviceId(){return(new se).getInstance(this.platformVersion)}_getPlayer(){return(new ee).getInstance(this.platformVersion)}}};let fe,ve;class ye extends u{constructor(e,t){if(super(t),e=e.toLowerCase(),!ge[e])throw new TypeError("ChromecastVirtualPlatform::constructor() - platform "+e+" does not exist.");this.__platform=new ge[e](t),this.player,this.inputDevice}static getPlatformType(){if(window.cast)return"Chromecast"}static detectPlatformWhenReady(e){e(ye.getPlatformType())}reset(){fe&&(fe.stop(),VizbeeTV.logger.debug("player reset",fe)),ve&&(ve.reset(),ve=void 0)}uniqueDeviceID(e,t){this.__platform.uniqueDeviceID(e,t)}set enableHLSExchange(e){fe.enableHLSExchange=e}set deviceIDAlgorithm(e){return this.__platform.deviceIDAlgorithm=e}get deviceIDAlgorithm(){return this.__platform.deviceIDAlgorithm}get player(){return void 0===fe&&(fe=this.__platform.createPlayer()),fe}set player(e){e&&(fe=e)}destroyPlayer(){fe.destroy().then(()=>{fe=void 0})}get inputDevice(){return void 0===ve&&(ve=this.__platform.createInputDevice()),ve}set screenSaverEnabled(e){e=e||!1,void 0!==this.__platform&&this.__platform.enableScreenSaver&&(VizbeeTV.logger.debug("ChromecastVirtualPlatform::screenSaverEnabled = "+e),this.__platform.enableScreenSaver(e))}exit(){void 0!==this.__platform&&this.__platform.exit&&this.__platform.exit()}set isAppExiting(e){this.__platform.isAppExiting=e}get isAppExiting(){return this.__platform.isAppExiting}get defaultAppletAppId(){return this.__platform.defaultAppletAppId}get cloudPlatformName(){return this.__platform.cloudPlatformName}get platformModel(){return this.__platform.platformModel}get platformVersion(){return this.__platform.platformVersion}get adId(){return this.__platform.adId}get isAdTrackingDisabled(){return this.__platform.isAdTrackingDisabled}get appLifeCycleManager(){return this.__platform.appLifeCycleManager}get launchParamsDeferral(){return this.__platform.launchParamsDeferral}get deviceInfo(){return this.__platform.deviceInfo}get networkInfo(){return this.__platform.networkInfo}}class me extends ye{constructor(e,t){super(e,t),this.setUIStyleConfig("transparent","white","black")}extendPlayer(e,t){VizbeeTV.logger.debug("ExtendPlayer - ",this.player.constructor.name),this.player=new e(this.player,t)}unextendPlayer(){try{if(this.player.extendedPlayer){var e=this.player.extendedPlayer;this.player.reset(),this.player=e}}catch(e){VizbeeTV.logger.error("Error while unextending Player",e,this.player,this.player.extendedPlayer)}}wrapExtension(e,t){this.extendPlayer(e,t)}unwrapExtensionToBasePlayer(){for(;this.player.extendedPlayer;)this.unextendPlayer();this.player.reset()}unwrapExtensionToStandardPlayerControls(){for(;!(this.player instanceof StandardPlayerControls);)this.unextendPlayer()}setUIStyleConfig(e,t,i){this.config.primaryColor=e||this.config.primaryColor,this.config.secondaryColor=t||this.config.secondaryColor,this.config.tertiaryColor=i||this.config.tertiaryColor}}class be{constructor(){this.currentLevel=this.LEVEL.CRITICAL,this.enableLogging=!0,this.logPrefix=""}static enableRemoteLogging(e,t){window.console.log=window.console.info=window.console.error=window.console.warn=window.console.debug=function(){let i=new XMLHttpRequest;try{let r=Array.prototype.slice.call(arguments);r=M.convertObjectsToString(r);let n=[t];Array.prototype.push.apply(n,r);let s=encodeURIComponent(JSON.stringify({data:n.join(" ")}));i.open("GET",e+s,!0),i.send(null)}catch(e){}}}get LEVEL(){return{CRITICAL:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,VERBOSE:5}}setLevel(e){this.currentLevel=e}setPrefix(e){this.logPrefix=e}enable(){this.enableLogging=!0}disable(){this.enableLogging=!1}c(){let e=this._getLogArguments.apply(this,arguments);e&&this.critical.apply(this,e)}critical(){if(this.shouldLog(this.LEVEL.CRITICAL)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [CRITICAL]:"];Array.prototype.push.apply(t,e),console.error.apply(console,t)}}e(){let e=this._getLogArguments.apply(this,arguments);e&&this.error.apply(this,e)}error(){if(this.shouldLog(this.LEVEL.ERROR)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [ERROR]:"];Array.prototype.push.apply(t,e),console.error.apply(console,t)}}w(){let e=this._getLogArguments.apply(this,arguments);e&&this.warn.apply(this,e)}warn(){if(this.shouldLog(this.LEVEL.WARN)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [WARN]:"];Array.prototype.push.apply(t,e),console.warn.apply(console,t)}}i(){let e=this._getLogArguments.apply(this,arguments);e&&this.info.apply(this,e)}info(){if(this.shouldLog(this.LEVEL.INFO)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [INFO]:"];Array.prototype.push.apply(t,e),console.info.apply(console,t)}}d(){let e=this._getLogArguments.apply(this,arguments);e&&this.debug.apply(this,e)}debug(){if(this.shouldLog(this.LEVEL.DEBUG)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [DEBUG]:"];Array.prototype.push.apply(t,e),console.log.apply(console,t)}}v(){let e=this._getLogArguments.apply(this,arguments);e&&this.verbose.apply(this,e)}verbose(){if(this.shouldLog(this.LEVEL.VERBOSE)){var e=Array.prototype.slice.call(arguments);e=M.convertObjectsToString(e);let t=[this.getCurrentTimeString()+" "+this.logPrefix+" [VERBOSE]:"];Array.prototype.push.apply(t,e),console.log.apply(console,t)}}shouldLog(e){return!!this.enableLogging&&e<=this.currentLevel}_getLogArguments(){let e=Array.prototype.slice.call(arguments);if(e&&e.length>=2){let t=[this._getClassAndMethodNamePrefix(e[0],e[1])],i=Array.prototype.slice.call(arguments,2);return Array.prototype.push.apply(t,i),t}}_getClassAndMethodNamePrefix(e,t){return e&&t?M.padEnd(e+"::",40," ")+M.padEnd(t,30," ")+" - ":""}getCurrentTimeString(){return"["+(new Date).toISOString()+"]"}}class Se extends be{constructor(){super()}critical(){try{super.critical(...arguments);let e=Array.prototype.slice.call(arguments);if(e.length>0){let t=e[e.length-1],i=window.Raven||window.Sentry;this._shouldLogException()&&i&&(P.isObject(t)||P.isString(t))&&i.captureException(t)}}catch(e){}}_shouldLogException(){return!0}}var _e,Te,Ee,Ie;function Pe(){if(Te)return _e;Te=1;var e,t={getItem:function(e){return e&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},setItem:function(e,t,i,r,n,s){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(i)switch(i.constructor){case Number:a=i===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+i;break;case String:a="; expires="+i;break;case Date:a="; expires="+i.toUTCString()}return document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(n?"; domain="+n:"")+(r?"; path="+r:"")+(s?"; secure":""),!0},removeItem:function(e,t,i){return!!this.hasItem(e)&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(i?"; domain="+i:"")+(t?"; path="+t:""),!0)},hasItem:function(e){return!!e&&new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){for(var e=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),t=e.length,i=0;i<t;i++)e[i]=decodeURIComponent(e[i]);return e},eraseCookieFromAllPaths:function(e){var t=location.pathname.split("/"),i=" path=";document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for(var r=0;r<t.length;r++)i+=("/"!=i.substr(-1)?"/":"")+t[r],document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT;"+i+";"}},i=(e=function(){for(var e,t={},i=decodeURIComponent(window.location.href),r=i.slice(i.indexOf("?")+1).split("&"),n=0;n<r.length;n++)t[(e=r[n].split("="))[0]]=e[1];return t}()||{},{getQueryParamForKey:function(t){return e[t]||!1},getQueryParams:function(){return e}});return _e={chain:function(e,t){return e?function(){e.call(this,arguments),t.call(this,arguments)}:t},xhr:function(e){return new Promise(function(t,i){var r=e.retries||2;!function n(){var s=new XMLHttpRequest;e.url=e.url.replace(/^http:\/\//i,"https://"),s.open(e.method||"GET",e.url,!0),Object.keys(e.headers||{}).forEach(function(t){s.setRequestHeader(t,e.headers[t])}),s.onreadystatechange=function(a){if(4===s.readyState)if(-1===[200,304].indexOf(s.status))VizbeeSDK.logger.error("xhr error",a),r>0?(r--,n()):i(new Error("Server responded with a status of "+s.status));else try{e.format=e.format||"json";var o=a.target;"json"===e.format?o=JSON.parse(o.response):"xml"===e.format&&(o=o.responseXML),VizbeeSDK.logger.debug("Util::xhr() -- response object --",o),t(o)}catch(a){r>0?(r--,n()):i("JSON parse error with Server response")}},e.timeout&&(s.timeout=e.timeout,s.ontimeout=function(t){r>0?(r--,n()):i(new Error("Server timeout "+e.timeout+"ms"))}),s.send(e.data)}()})},log:function(){var e=Array.prototype.slice.call(arguments);e.unshift("VIZBEE [LOG]"),console.log.apply(console,e)},docCookies:t,urlParser:i},_e}window.VizbeeTV={init:function(e,t,i){this.logger=new Se,this.logger.setPrefix("[VTVLIB]"),this.Util=M,i?this.tv instanceof me?this.tv.config=P.extend(this.tv.config,t):this.tv=new me(e,t):this.tv instanceof ye?this.tv.config=P.extend(this.tv.config,t):this.tv=new ye(e,t)}};var Ve,Ae,Ce,ke,De={getIpv6Address:function(e){M.xhr({url:"https://ip.claspws.tv",timeout:5e3,retries:3}).then(t=>{var i=t&&t.headers&&t.headers["x-vzb-client-ip"];i?(VizbeeSDK.logger.debug("Ipv6::getIpv6Address - ipv6Address=",i),e(i)):(VizbeeSDK.logger.warn("Ipv6::getIpv6Address - ipv6Address=empty"),e())}).catch(t=>{VizbeeSDK.logger.warn("Ipv6::getIpv6Address - failed",t),e()})}};function Me(){if(Ae)return Ve;function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function r(e){return void 0===e}return Ae=1,Ve=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(e){var n,s,a,o,l,d;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((n=arguments[1])instanceof Error)throw n;var c=new Error('Uncaught, unspecified "error" event. ('+n+")");throw c.context=n,c}if(r(s=this._events[e]))return!1;if(t(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:o=Array.prototype.slice.call(arguments,1),s.apply(this,o)}else if(i(s))for(o=Array.prototype.slice.call(arguments,1),a=(d=s.slice()).length,l=0;l<a;l++)d[l].apply(this,o);return!0},e.prototype.addListener=function(n,s){var a;if(!t(s))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",n,t(s.listener)?s.listener:s),this._events[n]?i(this._events[n])?this._events[n].push(s):this._events[n]=[this._events[n],s]:this._events[n]=s,i(this._events[n])&&!this._events[n].warned&&(a=r(this._maxListeners)?e.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[n].length>a&&(this._events[n].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[n].length),"function"==typeof console.trace&&console.trace()),this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(e,i){if(!t(i))throw TypeError("listener must be a function");var r=!1;function n(){this.removeListener(e,n),r||(r=!0,i.apply(this,arguments))}return n.listener=i,this.on(e,n),this},e.prototype.removeListener=function(e,r){var n,s,a,o;if(!t(r))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,s=-1,n===r||t(n.listener)&&n.listener===r)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,r);else if(i(n)){for(o=a;o-- >0;)if(n[o]===r||n[o].listener&&n[o].listener===r){s=o;break}if(s<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,r)}return this},e.prototype.removeAllListeners=function(e){var i,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(t(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},e.prototype.listeners=function(e){return this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.prototype.listenerCount=function(e){if(this._events){var i=this._events[e];if(t(i))return 1;if(i)return i.length}return 0},e.listenerCount=function(e,t){return e.listenerCount(t)},Ve}function we(){if(ke)return Ce;ke=1;var e,t=new(0,Me().EventEmitter);return Ce={reset:function(){e=void 0},getApp:function(){return e},setApp:function(i){i&&(e=i,VizbeeSDK.logger.debug("AppAdapter::setApp in setApp"),t.emit("app",{type:"app",obj:i}))},isAppSet:function(){return!!e},preInit:function(){VizbeeSDK.logger.debug("AppAdapter::preInit() called"),e&&e.preInit?e.preInit():VizbeeSDK.logger.error("AppAdapter::preInit() - app.preInit() callback not provided by host app")},willStartVideo:function(t,i){e&&e.willStartVideo?e.willStartVideo(t,i):VizbeeSDK.logger.info("AppAdapter::willStartVideo() - app.willStartVideo() callback not provided by host app")},startVideo:function(t){e&&e.startVideo?e.startVideo(t):VizbeeSDK.logger.info("AppAdapter::StartVideo() - app.startVideo() callback not provided by host app")},playVideo:function(){return VizbeeSDK.logger.info("AppAdapter::PlayVideo() called"),e&&e.playVideo?e.playVideo():(VizbeeSDK.logger.info("AppAdapter::PlayVideo() - app.playVideo() callback not provided by host app"),!1)},pauseVideo:function(){return VizbeeSDK.logger.info("AppAdapter::PauseVideo() called"),e&&e.pauseVideo?e.pauseVideo():(VizbeeSDK.logger.info("AppAdapter::PauseVideo() - app.pauseVideo() callback not provided by host app"),!1)},stopVideo:function(t){return VizbeeSDK.logger.info("AppAdapter::StopVideo() called",t,e),VizbeeSDK.logger.debug("AppAdapter::StopVideo() called"),e&&e.stopVideo?(VizbeeSDK.logger.info("AppAdapter::StopVideo() called",t),e.stopVideo(t)):(VizbeeSDK.logger.info("AppAdapter::StopVideo() - app.stopVideo() callback not provided by host app"),!1)},seekVideo:function(t){return VizbeeSDK.logger.info("AppAdapter::SeekVideo() called",t),e&&e.seekVideo?e.seekVideo(t):(VizbeeSDK.logger.info("AppAdapter::SeekVideo() - app.seekVideo() callback not provided by host app"),!1)},getVideoInfo:function(){if(e&&e.getVideoInfo)return e.getVideoInfo()},getTracks:function(){return e&&e.getTracks?e.getTracks():(VizbeeSDK.logger.verbose("AppAdapter::getTracks() - app.getTracks() callback not provided by host app"),!1)},getEnabledTracks:function(){return e&&e.getEnabledTracks?e.getEnabledTracks():(VizbeeSDK.logger.verbose("AppAdapter::getEnabledTracks() - app.getEnabledTracks() callback not provided by host app"),!1)},enableTracks:function(t){return VizbeeSDK.logger.verbose("AppAdapter::enableTracks() called"),e&&e.enableTracks?e.enableTracks(t):(VizbeeSDK.logger.verbose("AppAdapter::enableTracks() - app.enableTracks() callback not provided by host app"),!1)},disableTracks:function(t){return VizbeeSDK.logger.verbose("AppAdapter::disableTracks() called"),e&&e.disableTracks?e.disableTracks(t):(VizbeeSDK.logger.verbose("AppAdapter::disableTracks() - app.disableTracks() callback not provided by host app"),!1)},getAudioTracks:function(){return e&&e.getAudioTracks?e.getAudioTracks():(VizbeeSDK.logger.verbose("AppAdapter::getAudioTracks() - app.getAudioTracks() callback not provided by host app"),!1)},getActiveAudioTrack:function(){return e&&e.getActiveAudioTrack?e.getActiveAudioTrack():(VizbeeSDK.logger.verbose("AppAdapter::getActiveAudioTrack() - app.getActiveAudioTrack() callback not provided by host app"),!1)},changeAudioTrack:function(t){return VizbeeSDK.logger.info("AppAdapter::changeAudioTrack() called"),e&&e.changeAudioTrack?e.changeAudioTrack(t):(VizbeeSDK.logger.info("AppAdapter::changeAudioTrack() - app.changeAudioTrack() callback not provided by host app"),!1)},onEvent:function(t){VizbeeSDK.logger.debug("AppAdapter::onEvent() called"),e&&e.onEvent?e.onEvent(t):VizbeeSDK.logger.info("AppAdapter::onEvent() - callback not provided by host app")},updatePresence:function(t){VizbeeSDK.logger.debug("AppAdapter::updatePresence() called"),e&&e.updatePresence?e.updatePresence(t):VizbeeSDK.logger.info("AppAdapter::updatePresence() - callback not provided by host app")},addListener:function(e){t.addListener("app",e)}},Ce}var Ne,Oe,xe=I(),ze=new(0,Me().EventEmitter),Le=we(),Re=void 0,Ke={isInProgress:!1},Ue=!1,Be="videoadapter_video",Fe="videoadapter_ad";function He(e){var t,i,r=!xe.contains(["timeupdate"],e.type);Ke.isInProgress||(Re&&"app"!==Re.app.state?(t=new We,e.type,"loading"===e.type&&(i="BUFFERING"),"playing"===e.type&&(i="PLAYING"),"paused"===e.type&&(i="PAUSED_BY_USER"),"ended"==e.type&&(i="FINISHED"),"interrupted"==e.type&&(i="INTERRUPTED"),"error"===e.type&&(i="INTERRUPTED",e.data&&e.data.reason&&"stop_by_user"!=e.data.reason.toLowerCase()&&(i="FAILED",t.error=e.data,t.error.data={})),i&&(t.state=i),ze.emit(Be,t,r)):VizbeeSDK.logger.verbose('VideoAdapter::videoEventHandler - app.state = "app"'))}function Ge(e,t){var i=e.playing||e.preparing;(i||!i&&Ke.isInProgress)&&ze.emit(Fe,e,t),Ke.isInProgress=i||!1,Ke.isInProgress||(Ue=!1),"FINISHED"==e.state||e.state}function We(e){var t={type:"video",position:-1,duration:-1,cc:{},tr:{}};return Oe?(t.position=1e3*Oe.currentTime(),t.duration=1e3*Oe.getDuration(),t.startTime=Oe.getStartTime(),t.videoBufferLevel=Oe.getBufferLevel(),t.audioBufferLevel=Oe.getAudioBufferLevel(),t.qos=Oe.getStreamQualityInfo(),t.volume=100,t.muted=!1):(t.position=-1,t.duration=-1,t.startTime=0,t.videoBufferLevel=0,t.audioBufferLevel=0,t.volume=1,t.muted=!1),t.qos||(t.qos={adPodStartedTimeInMs:0,adPodEndedTimeInMs:0,loadReceivedByAppTimeInMs:0,loadReceivedByPlayerTimeInMs:0,metadataLoadedTimeInMs:0,playerReadyToPlayTimeInMs:0,playbackStartedTimeInMs:0}),xe.extend(t,e)}function je(){Ke.isInProgress&&Ne.reset()}var qe,Je,Ye,$e,Qe,Ze,Xe,et,tt,it,rt,nt,st,at,ot={setVideo:function(e){var t;(t=e).onLoading=function(e){Ke.isInProgress||(He({type:"loading"}),Ue=!1)},t.onPlaying=function(e){Ke.isInProgress||(He({type:"playing"}),Ue=!0)},t.onPaused=function(e){Ke.isInProgress||(He({type:"paused"}),Ue=!1)},t.onBuffering=function(e){Ke.isInProgress||(He({type:"loading"}),Ue=!1)},t.onError=function(e){Ke.isInProgress||(He({type:"error",data:e}),Ue=!1)},t.onInterrupted=function(e){Ke.isInProgress||(He({type:"interrupted",data:e}),Ue=!1)},t.onEnded=function(){Ke.isInProgress||(He({type:"ended"}),Ue=!1)},t.onTimeUpdate=function(e){Ke.isInProgress||(Ue?He({type:"timeupdate"}):(Ue=!0,He({type:"playing"})))},Oe=e},setVideoInfo:function(e){e&&Re&&Re.setCurrentVideoInfo(e)},setId:function(e,t){if(Re){if(Re.video&&Re.video.id&&e&&Re.video.id!=e){VizbeeSDK.logger.debug("VideoAdapter::setId - SENDING INTERRUPTED");var i=new We({id:Re.video.id,state:"INTERRUPTED"});ze.emit(Be,i,!0)}var r=new We({id:e});r.position=r.duration=-1,r.state="UNKNOWN",ze.emit(Be,r,!0),VizbeeSDK.logger.debug("VideoAdapter::setId - setting currentGUID = "+e),Re.setCurrentVideoInfo(xe.extend(Re.getCurrentVideoInfo()||{},{id:e,islive:t}))}},setVideoStop:function(){Ke&&Ke.isInProgress&&Ne&&(Ke.isInProgress=!1,Ne.reset()),He({type:"error"})},willStart:function(e,t){Le.willStartVideo(e,t)},start:function(e){He({type:"loadedmetadata"}),je(),Le.startVideo(e)},play:function(){Le.playVideo()||VizbeeTV.tv.inputDevice.sendPlay()},pause:function(){Le.pauseVideo()||VizbeeTV.tv.inputDevice.sendPause()},seek:function(e){Le.seekVideo(e)||xe.isNumber(e)&&Oe.seek(e)},stop:function(e){if(!Le.stopVideo(e)){VizbeeTV.tv.inputDevice.sendStop(),VizbeeSDK.logger.debug("VideoAdapter::stop - sending INTERRUPTED state");var t=new We({state:"INTERRUPTED"});ze.emit(Be,t,!0),je()}},exit:function(){var e=new We({state:"INTERRUPTED"});ze.emit(Be,e,!0)},setTracks:function(e){Oe.setTracks(e)},getTracks:function(e){e=e||i;var t=Le.getTracks();return!1!==t?t:Oe.getTracks(e)},getEnabledTracks:function(e){e=e||i;var t=Le.getEnabledTracks();return!1!==t?t:Oe.getEnabledTracks(e)},enableTracks:function(e){Le.enableTracks(e)||Oe.enableTracks(e)},disableTracks:function(e){Le.disableTracks(e)||Oe.disableTracks(e)},getAudioTracks:function(e){e=e||r;var t=Le.getAudioTracks();return!1!==t?t:Oe.getTracks(e)},getActiveAudioTrack:function(e){e=e||r;var t=Le.getActiveAudioTrack();return!1!==t?t:(Oe.getEnabledTracks(e)||[])[0]},changeAudioTrack:function(e){Le.changeAudioTrack(e)||Oe.changeAudioTrack(e)},mute:function(e){},volumeUp:function(){ze.emit(Be,new We,!0)},volumeDown:function(){ze.emit(Be,new We,!0)},onEvent:function(e){Le.onEvent(e)},setAdAdapter:function(e){Ne&&Ne.removeListener(Ge),(Ne=e)&&Ne.addListener(Ge)},setAppStateManager:function(e){Re=e},reset:function(){Oe=void 0,Ke={playing:!1}},addListener:function(e){ze.addListener(Be,e),ze.addListener(Fe,e)},removeListener:function(e){ze.removeListener(Be,e),ze.removeListener(Fe,e)}};function lt(){if(Je)return qe;Je=1;var e,t=I();return qe={reset:function(){e=void 0},setVideoAdapter:function(t){e=t},isAdapterSet:function(){return!!e},getCurrentTime:function(){var i=0;return e&&t.isFunction(e.getCurrentTime)&&(i=e.getCurrentTime()),i},getDuration:function(){var i=0;return e&&t.isFunction(e.getDuration)&&(i=e.getDuration()),i}}}function dt(){if($e)return Ye;$e=1;var e=new(0,Me().EventEmitter),t=ot,i=lt(),r=void 0;function n(t,n){"video"==t.type&&(t=function(e,t){return t||e.position<=-1||e.duration<=-1||e.position>e.duration||i.isAdapterSet()&&(e.position=i.getCurrentTime(),e.duration=i.getDuration(),VizbeeSDK.logger.debug("ssaivideoadapater::modifyStatus",e.position,e.duration)),e}(t,r&&r.getSyncVideoInfo().islive)),function(t,i){e.emit("ssaivideoadapter_video",t,i)}(t,n)}return Ye={init:function(){t.addListener(n)},setVideo:t.setVideo,setVideoInfo:t.setVideoInfo,setId:t.setId,setVideoStop:t.setVideoStop,willStart:t.willStart,start:t.start,play:t.play,pause:t.pause,seek:t.seek,stop:t.stop,exit:t.exit,setTracks:t.setTracks,getTracks:t.getTracks,getEnabledTracks:t.getEnabledTracks,enableTracks:t.enableTracks,disableTracks:t.disableTracks,getAudioTracks:t.getAudioTracks,getActiveAudioTrack:t.getActiveAudioTrack,changeAudioTrack:t.changeAudioTrack,mute:t.mute,volumeUp:t.volumeUp,volumeDown:t.volumeDown,onEvent:t.onEvent,setAppStateManager:function(e){r=e,t.setAppStateManager(e)},setAdAdapter:t.setAdAdapter,reset:function(){r=void 0,t.removeListener(n),t.reset()},addListener:function(t){e.addListener("ssaivideoadapter_video",t)},removeListener:function(t){e.removeListener("ssaivideoadapter_video",t)}}}function ct(){if(Ze)return Qe;Ze=1;var e=I(),t=new(0,Me().EventEmitter),i=dt(),r=we(),n={state:"app"},s={},a={},o="default",l={},d={};function c(e){l=e}function u(t,i){"app"===t.type&&p(),"video"===t.type&&function(t,i){e.extend(s,t),["FINISHED","INTERRUPTED","FAILED"].indexOf(s.state)>-1?(VizbeeSDK.logger.debug("AppStateManager::videoEventHanlder() -- setting app.state to 'app'."),h(),n.state="app",g()):(n.state="video",i&&h())}(t,i),"ad"===t.type&&function(t,i){let r=i;t.playing||t.preparing?(n.state="ad",s.state="PAUSED_BY_AD",e.extend(a,t)):(a.preparing=!1,a.playing=!1,"INTERRUPTED"==t.state?(n.state="app",s.state="INTERRUPTED",r=!0):"PAUSED_BY_AD"==s.state&&(s.state="UNKNOWN"),s.duration<=s.position&&s.duration>0&&(n.state="app",s.state="FINISHED",r=!0)),r&&h()}(t,i)}function p(){VizbeeSDK.logger.debug("AppStateManager:appEventHandler appIsSet is TRUE"),t.emit("state",{type:"appIsSet"})}function h(){t.emit("state",{})}function g(){VizbeeSDK.logger.debug("AppStateManager:reset() previous video and ad objects = ",s,a,l),s.id="",s.state="UNKNOWN",s.position=-1,s.duration=-1,s.elapsedTime=0,s.tr={},s.error={},a.id="",a.state="UNKNOWN",a.position=-1,a.duration=-1,o={},VizbeeSDK.logger.debug("AppStateManager:reset() complete : current video and ad objects = ",s,a,l)}return g(),i.addListener(u),r.addListener(u),r.isAppSet()&&p(),Qe={type:"AppStateManager",app:n,video:s,ad:a,reset:g,syncStartVideoSource:o,syncVideoInfo:l,setSyncVideoInfo:c,getSyncVideoInfo:function(){return l},currentVideoInfo:d,setCurrentVideoInfo:function(e){d=e,l&&e&&l.id!=e.id&&c({})},getCurrentVideoInfo:function(){return d},wasVideoStartedByVizbee:function(){return!!(d&&d.senderInfo&&d.senderInfo.st)||!(!l||!d||l.id!=d.id)},addListener:function(e){t.addListener("state",e)},removeListener:function(e){t.removeListener("state",e)}}}function ut(){return it?tt:(it=1,tt={setVGA:function(t){t&&(e=t,VizbeeSDK.logger.debug("VGAAdapter::setVGA in setVGA"))},onSubscribedToSync:function(){VizbeeSDK.logger.debug("VGAAdapter::subscribedToSync in subscribedToSync"),e&&e.onSubscribedToSync&&e.onSubscribedToSync()},reset:function(){e=void 0}});var e}function pt(){if(nt)return rt;nt=1;var e=new(0,Me().EventEmitter),t="sync_proxy_video_cmds";return rt={send:function(i){e.emit(t,i)},reset:function(){e.removeAllListeners(t)},addListener:function(i){e.addListener(t,i)}}}class ht{constructor(e){this.appConfig=e||{},this._eventListeners=[]}connect(e){throw new TypeError("BaseSync::connect() - Abstract method.")}disconnect(){this._eventListeners=[]}send(e){}set onReceive(e){"function"==typeof e&&this._eventListeners.push(e)}dispatchReceive(e){for(var t=this._eventListeners.length-1;t>-1;t--)this._eventListeners[t](e)}}class gt{constructor(e,t){this.type=e,this.data=t}}class ft{static get SYNC_CONNECT(){return"sync-connect"}static get SYNC_MESSAGE(){return"sync-message"}static get SYNC_PRESENCE(){return"sync-presence"}}var vt,yt,mt,bt,St=E(function(){if(at)return st;at=1;var e=Pe().docCookies,t="screen_device_id",i="should_verify_screen_device_id",r="screen_device_id_verified_intermediate",n="screen_device_id_verified",s=e.getItem(n),a=e.getItem(t);return st={getDeviceId:function(){return a},getDeviceIdFromStorage:function(){return e.getItem(t)},isDeviceIdVerified:function(){return s},isDeviceIdVerifiedFlagStored:function(){return e.getItem(n)},isIntermediateVerifcationCookieSet:function(){return e.getItem(r)},isShouldVerifyDeviceIdFlagSet:function(){return e.getItem(i)},setDeviceId:function(n){s||(a!==n&&this.isIntermediateVerifcationCookieSet()&&e.eraseCookieFromAllPaths(r),a=n,e.setItem(t,a,1/0,"/"),e.setItem(i,"yes",1/0,"/"))},verifyDeviceId:function(){e.getItem(i)&&(e.getItem(n)||(e.getItem(r)?(s="yes",e.setItem(n,s,1/0,"/"),VizbeeSDK.logger.debug("SETTING VERIFIED COOKIE *** ",e.getItem(n))):(e.setItem(r,"yes",1/0,"/"),VizbeeSDK.logger.debug("SETTING INTERMEDIATE COOKIE *** ",e.getItem(r)))),e.eraseCookieFromAllPaths(i))},reset:function(){for(var o=[t,n,i,r],l=0;l<o.length;l++)e.eraseCookieFromAllPaths(o[l]);s=null,a=null}}}()),_t={exports:{}},Tt={exports:{}};function Et(){return vt||(vt=1,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t={rotl:function(e,t){return e<<t|e>>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&t.rotl(e,8)|4278255360&t.rotl(e,24);for(var i=0;i<e.length;i++)e[i]=t.endian(e[i]);return e},randomBytes:function(e){for(var t=[];e>0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],i=0,r=0;i<e.length;i++,r+=8)t[r>>>5]|=e[i]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],i=0;i<32*e.length;i+=8)t.push(e[i>>>5]>>>24-i%32&255);return t},bytesToHex:function(e){for(var t=[],i=0;i<e.length;i++)t.push((e[i]>>>4).toString(16)),t.push((15&e[i]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],i=0;i<e.length;i+=2)t.push(parseInt(e.substr(i,2),16));return t},bytesToBase64:function(t){for(var i=[],r=0;r<t.length;r+=3)for(var n=t[r]<<16|t[r+1]<<8|t[r+2],s=0;s<4;s++)8*r+6*s<=8*t.length?i.push(e.charAt(n>>>6*(3-s)&63)):i.push("=");return i.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/gi,"");for(var i=[],r=0,n=0;r<t.length;n=++r%4)0!=n&&i.push((e.indexOf(t.charAt(r-1))&Math.pow(2,-2*n+8)-1)<<2*n|e.indexOf(t.charAt(r))>>>6-2*n);return i}},Tt.exports=t),Tt.exports;var e,t}function It(){if(mt)return yt;mt=1;var e={utf8:{stringToBytes:function(t){return e.bin.stringToBytes(unescape(encodeURIComponent(t)))},bytesToString:function(t){return decodeURIComponent(escape(e.bin.bytesToString(t)))}},bin:{stringToBytes:function(e){for(var t=[],i=0;i<e.length;i++)t.push(255&e.charCodeAt(i));return t},bytesToString:function(e){for(var t=[],i=0;i<e.length;i++)t.push(String.fromCharCode(e[i]));return t.join("")}}};return yt=e}var Pt,Vt,At,Ct=(bt||(bt=1,function(){var e=Et(),t=It().utf8,i=It().bin,r=function(n,s){n.constructor==String?n=s&&"binary"===s.encoding?i.stringToBytes(n):t.stringToBytes(n):"undefined"!=typeof Buffer&&"function"==typeof Buffer.isBuffer&&Buffer.isBuffer(n)?n=Array.prototype.slice.call(n,0):Array.isArray(n)||(n=n.toString());for(var a=e.bytesToWords(n),o=8*n.length,l=1732584193,d=-271733879,c=-1732584194,u=271733878,p=0;p<a.length;p++)a[p]=16711935&(a[p]<<8|a[p]>>>24)|4278255360&(a[p]<<24|a[p]>>>8);a[o>>>5]|=128<<o%32,a[14+(o+64>>>9<<4)]=o;var h=r._ff,g=r._gg,f=r._hh,v=r._ii;for(p=0;p<a.length;p+=16){var y=l,m=d,b=c,S=u;l=h(l,d,c,u,a[p+0],7,-680876936),u=h(u,l,d,c,a[p+1],12,-389564586),c=h(c,u,l,d,a[p+2],17,606105819),d=h(d,c,u,l,a[p+3],22,-1044525330),l=h(l,d,c,u,a[p+4],7,-176418897),u=h(u,l,d,c,a[p+5],12,1200080426),c=h(c,u,l,d,a[p+6],17,-1473231341),d=h(d,c,u,l,a[p+7],22,-45705983),l=h(l,d,c,u,a[p+8],7,1770035416),u=h(u,l,d,c,a[p+9],12,-1958414417),c=h(c,u,l,d,a[p+10],17,-42063),d=h(d,c,u,l,a[p+11],22,-1990404162),l=h(l,d,c,u,a[p+12],7,1804603682),u=h(u,l,d,c,a[p+13],12,-40341101),c=h(c,u,l,d,a[p+14],17,-1502002290),l=g(l,d=h(d,c,u,l,a[p+15],22,1236535329),c,u,a[p+1],5,-165796510),u=g(u,l,d,c,a[p+6],9,-1069501632),c=g(c,u,l,d,a[p+11],14,643717713),d=g(d,c,u,l,a[p+0],20,-373897302),l=g(l,d,c,u,a[p+5],5,-701558691),u=g(u,l,d,c,a[p+10],9,38016083),c=g(c,u,l,d,a[p+15],14,-660478335),d=g(d,c,u,l,a[p+4],20,-405537848),l=g(l,d,c,u,a[p+9],5,568446438),u=g(u,l,d,c,a[p+14],9,-1019803690),c=g(c,u,l,d,a[p+3],14,-187363961),d=g(d,c,u,l,a[p+8],20,1163531501),l=g(l,d,c,u,a[p+13],5,-1444681467),u=g(u,l,d,c,a[p+2],9,-51403784),c=g(c,u,l,d,a[p+7],14,1735328473),l=f(l,d=g(d,c,u,l,a[p+12],20,-1926607734),c,u,a[p+5],4,-378558),u=f(u,l,d,c,a[p+8],11,-2022574463),c=f(c,u,l,d,a[p+11],16,1839030562),d=f(d,c,u,l,a[p+14],23,-35309556),l=f(l,d,c,u,a[p+1],4,-1530992060),u=f(u,l,d,c,a[p+4],11,1272893353),c=f(c,u,l,d,a[p+7],16,-155497632),d=f(d,c,u,l,a[p+10],23,-1094730640),l=f(l,d,c,u,a[p+13],4,681279174),u=f(u,l,d,c,a[p+0],11,-358537222),c=f(c,u,l,d,a[p+3],16,-722521979),d=f(d,c,u,l,a[p+6],23,76029189),l=f(l,d,c,u,a[p+9],4,-640364487),u=f(u,l,d,c,a[p+12],11,-421815835),c=f(c,u,l,d,a[p+15],16,530742520),l=v(l,d=f(d,c,u,l,a[p+2],23,-995338651),c,u,a[p+0],6,-198630844),u=v(u,l,d,c,a[p+7],10,1126891415),c=v(c,u,l,d,a[p+14],15,-1416354905),d=v(d,c,u,l,a[p+5],21,-57434055),l=v(l,d,c,u,a[p+12],6,1700485571),u=v(u,l,d,c,a[p+3],10,-1894986606),c=v(c,u,l,d,a[p+10],15,-1051523),d=v(d,c,u,l,a[p+1],21,-2054922799),l=v(l,d,c,u,a[p+8],6,1873313359),u=v(u,l,d,c,a[p+15],10,-30611744),c=v(c,u,l,d,a[p+6],15,-1560198380),d=v(d,c,u,l,a[p+13],21,1309151649),l=v(l,d,c,u,a[p+4],6,-145523070),u=v(u,l,d,c,a[p+11],10,-1120210379),c=v(c,u,l,d,a[p+2],15,718787259),d=v(d,c,u,l,a[p+9],21,-343485551),l=l+y>>>0,d=d+m>>>0,c=c+b>>>0,u=u+S>>>0}return e.endian([l,d,c,u])};r._ff=function(e,t,i,r,n,s,a){var o=e+(t&i|~t&r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._gg=function(e,t,i,r,n,s,a){var o=e+(t&r|i&~r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._hh=function(e,t,i,r,n,s,a){var o=e+(t^i^r)+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._ii=function(e,t,i,r,n,s,a){var o=e+(i^(t|~r))+(n>>>0)+a;return(o<<s|o>>>32-s)+t},r._blocksize=16,r._digestsize=16,_t.exports=function(t,n){if(void 0!==t){var s=e.wordsToBytes(r(t,n));return n&&n.asBytes?s:n&&n.asString?i.bytesToString(s):e.bytesToHex(s)}}}()),_t.exports),kt=E(Ct),Dt={exports:{}},Mt={exports:{}},wt={exports:{}},Nt={exports:{}},Ot={exports:{}};function xt(){return Vt||(Vt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){return Pt||(Pt=1,e=Ot,function(e){var t={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i};function i(){var e,t,i="";for(e=0;e<32;e++)t=16*Math.random()|0,8!==e&&12!==e&&16!==e&&20!==e||(i+="-"),i+=(12===e?4:16===e?3&t|8:t).toString(16);return i}function r(e,i){var r=t[i||"all"];return r&&r.test(e)||!1}i.isUUID=r,i.VERSION="0.1.0",e.uuid=i,e.isUUID=r}(t=Ot.exports),null!==e&&(e.exports=t.uuid)),Ot.exports;var e,t}(),n=(i=r)&&i.__esModule?i:{default:i};t.default={createUUID:function(){return n.default.uuid?n.default.uuid():(0,n.default)()}},e.exports=t.default}(Nt,Nt.exports)),Nt.exports}function zt(){return At||(At=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),n=(i=xt())&&i.__esModule?i:{default:i},s=function(){function e(t){var i=t.setup,r=t.db;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._db=r,this.instanceId="pn-"+n.default.createUUID(),this.secretKey=i.secretKey||i.secret_key,this.subscribeKey=i.subscribeKey||i.subscribe_key,this.publishKey=i.publishKey||i.publish_key,this.sdkName=i.sdkName,this.sdkFamily=i.sdkFamily,this.partnerId=i.partnerId,this.setAuthKey(i.authKey),this.setCipherKey(i.cipherKey),this.setFilterExpression(i.filterExpression),this.origin=i.origin||"pubsub.pndsn.com",this.secure=i.ssl||!1,this.restore=i.restore||!1,this.proxy=i.proxy,this.keepAlive=i.keepAlive,this.keepAliveSettings=i.keepAliveSettings,this.autoNetworkDetection=i.autoNetworkDetection||!1,this.dedupeOnSubscribe=i.dedupeOnSubscribe||!1,this.maximumCacheSize=i.maximumCacheSize||100,this.customEncrypt=i.customEncrypt,this.customDecrypt=i.customDecrypt,"undefined"!=typeof location&&"https:"===location.protocol&&(this.secure=!0),this.logVerbosity=i.logVerbosity||!1,this.suppressLeaveEvents=i.suppressLeaveEvents||!1,this.announceFailedHeartbeats=i.announceFailedHeartbeats||!0,this.announceSuccessfulHeartbeats=i.announceSuccessfulHeartbeats||!1,this.useInstanceId=i.useInstanceId||!1,this.useRequestId=i.useRequestId||!1,this.requestMessageCountThreshold=i.requestMessageCountThreshold,this.setTransactionTimeout(i.transactionalRequestTimeout||15e3),this.setSubscribeTimeout(i.subscribeRequestTimeout||31e4),this.setSendBeaconConfig(i.useSendBeacon||!0),this.setPresenceTimeout(i.presenceTimeout||300),null!=i.heartbeatInterval&&this.setHeartbeatInterval(i.heartbeatInterval),this.setUUID(this._decideUUID(i.uuid))}return r(e,[{key:"getAuthKey",value:function(){return this.authKey}},{key:"setAuthKey",value:function(e){return this.authKey=e,this}},{key:"setCipherKey",value:function(e){return this.cipherKey=e,this}},{key:"getUUID",value:function(){return this.UUID}},{key:"setUUID",value:function(e){return this._db&&this._db.set&&this._db.set(this.subscribeKey+"uuid",e),this.UUID=e,this}},{key:"getFilterExpression",value:function(){return this.filterExpression}},{key:"setFilterExpression",value:function(e){return this.filterExpression=e,this}},{key:"getPresenceTimeout",value:function(){return this._presenceTimeout}},{key:"setPresenceTimeout",value:function(e){return this._presenceTimeout=e,this.setHeartbeatInterval(this._presenceTimeout/2-1),this}},{key:"setProxy",value:function(e){this.proxy=e}},{key:"getHeartbeatInterval",value:function(){return this._heartbeatInterval}},{key:"setHeartbeatInterval",value:function(e){return this._heartbeatInterval=e,this}},{key:"getSubscribeTimeout",value:function(){return this._subscribeRequestTimeout}},{key:"setSubscribeTimeout",value:function(e){return this._subscribeRequestTimeout=e,this}},{key:"getTransactionTimeout",value:function(){return this._transactionalRequestTimeout}},{key:"setTransactionTimeout",value:function(e){return this._transactionalRequestTimeout=e,this}},{key:"isSendBeaconEnabled",value:function(){return this._useSendBeacon}},{key:"setSendBeaconConfig",value:function(e){return this._useSendBeacon=e,this}},{key:"getVersion",value:function(){return"4.20.3"}},{key:"_decideUUID",value:function(e){return e||(this._db&&this._db.get&&this._db.get(this.subscribeKey+"uuid")?this._db.get(this.subscribeKey+"uuid"):"pn-"+n.default.createUUID())}}]),e}();t.default=s,e.exports=t.default}(wt,wt.exports)),wt.exports}var Lt,Rt={exports:{}};function Kt(){return Lt||(Lt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();n(zt());var r=n(null);function n(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t){var i=t.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._config=i,this._iv="0123456789012345",this._allowedKeyEncodings=["hex","utf8","base64","binary"],this._allowedKeyLengths=[128,256],this._allowedModes=["ecb","cbc"],this._defaultOptions={encryptKey:!0,keyEncoding:"utf8",keyLength:256,mode:"cbc"}}return i(e,[{key:"HMACSHA256",value:function(e){return r.default.HmacSHA256(e,this._config.secretKey).toString(r.default.enc.Base64)}},{key:"SHA256",value:function(e){return r.default.SHA256(e).toString(r.default.enc.Hex)}},{key:"_parseOptions",value:function(e){var t=e||{};return t.hasOwnProperty("encryptKey")||(t.encryptKey=this._defaultOptions.encryptKey),t.hasOwnProperty("keyEncoding")||(t.keyEncoding=this._defaultOptions.keyEncoding),t.hasOwnProperty("keyLength")||(t.keyLength=this._defaultOptions.keyLength),t.hasOwnProperty("mode")||(t.mode=this._defaultOptions.mode),-1===this._allowedKeyEncodings.indexOf(t.keyEncoding.toLowerCase())&&(t.keyEncoding=this._defaultOptions.keyEncoding),-1===this._allowedKeyLengths.indexOf(parseInt(t.keyLength,10))&&(t.keyLength=this._defaultOptions.keyLength),-1===this._allowedModes.indexOf(t.mode.toLowerCase())&&(t.mode=this._defaultOptions.mode),t}},{key:"_decodeKey",value:function(e,t){return"base64"===t.keyEncoding?r.default.enc.Base64.parse(e):"hex"===t.keyEncoding?r.default.enc.Hex.parse(e):e}},{key:"_getPaddedKey",value:function(e,t){return e=this._decodeKey(e,t),t.encryptKey?r.default.enc.Utf8.parse(this.SHA256(e).slice(0,32)):e}},{key:"_getMode",value:function(e){return"ecb"===e.mode?r.default.mode.ECB:r.default.mode.CBC}},{key:"_getIV",value:function(e){return"cbc"===e.mode?r.default.enc.Utf8.parse(this._iv):null}},{key:"encrypt",value:function(e,t,i){return this._config.customEncrypt?this._config.customEncrypt(e):this.pnEncrypt(e,t,i)}},{key:"decrypt",value:function(e,t,i){return this._config.customDecrypt?this._config.customDecrypt(e):this.pnDecrypt(e,t,i)}},{key:"pnEncrypt",value:function(e,t,i){if(!t&&!this._config.cipherKey)return e;i=this._parseOptions(i);var n=this._getIV(i),s=this._getMode(i),a=this._getPaddedKey(t||this._config.cipherKey,i);return r.default.AES.encrypt(e,a,{iv:n,mode:s}).ciphertext.toString(r.default.enc.Base64)||e}},{key:"pnDecrypt",value:function(e,t,i){if(!t&&!this._config.cipherKey)return e;i=this._parseOptions(i);var n=this._getIV(i),s=this._getMode(i),a=this._getPaddedKey(t||this._config.cipherKey,i);try{var o=r.default.enc.Base64.parse(e),l=r.default.AES.decrypt({ciphertext:o},a,{iv:n,mode:s}).toString(r.default.enc.Utf8);return JSON.parse(l)}catch(e){return null}}}]),e}();t.default=s,e.exports=t.default}(Rt,Rt.exports)),Rt.exports}var Ut,Bt,Ft={exports:{}},Ht={exports:{}},Gt={exports:{}};function Wt(){return Ut||(Ut=1,e=Gt,t=Gt.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={PNNetworkUpCategory:"PNNetworkUpCategory",PNNetworkDownCategory:"PNNetworkDownCategory",PNNetworkIssuesCategory:"PNNetworkIssuesCategory",PNTimeoutCategory:"PNTimeoutCategory",PNBadRequestCategory:"PNBadRequestCategory",PNAccessDeniedCategory:"PNAccessDeniedCategory",PNUnknownCategory:"PNUnknownCategory",PNReconnectedCategory:"PNReconnectedCategory",PNConnectedCategory:"PNConnectedCategory",PNRequestMessageCountExceededCategory:"PNRequestMessageCountExceededCategory"},e.exports=t.default),Gt.exports;var e,t}function jt(){return Bt||(Bt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),n=(i=Wt())&&i.__esModule?i:{default:i},s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._listeners=[]}return r(e,[{key:"addListener",value:function(e){this._listeners.push(e)}},{key:"removeListener",value:function(e){var t=[];this._listeners.forEach(function(i){i!==e&&t.push(i)}),this._listeners=t}},{key:"removeAllListeners",value:function(){this._listeners=[]}},{key:"announcePresence",value:function(e){this._listeners.forEach(function(t){t.presence&&t.presence(e)})}},{key:"announceStatus",value:function(e){this._listeners.forEach(function(t){t.status&&t.status(e)})}},{key:"announceMessage",value:function(e){this._listeners.forEach(function(t){t.message&&t.message(e)})}},{key:"announceNetworkUp",value:function(){var e={};e.category=n.default.PNNetworkUpCategory,this.announceStatus(e)}},{key:"announceNetworkDown",value:function(){var e={};e.category=n.default.PNNetworkDownCategory,this.announceStatus(e)}}]),e}();t.default=s,e.exports=t.default}(Ht,Ht.exports)),Ht.exports}var qt,Jt,Yt,$t={exports:{}},Qt={},Zt={exports:{}};function Xt(){return qt||(qt=1,e=Zt,t=Zt.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNPushNotificationEnabledChannelsOperation:"PNPushNotificationEnabledChannelsOperation",PNRemoveAllPushNotificationsOperation:"PNRemoveAllPushNotificationsOperation",PNWhereNowOperation:"PNWhereNowOperation",PNSetStateOperation:"PNSetStateOperation",PNHereNowOperation:"PNHereNowOperation",PNGetStateOperation:"PNGetStateOperation",PNHeartbeatOperation:"PNHeartbeatOperation",PNChannelGroupsOperation:"PNChannelGroupsOperation",PNRemoveGroupOperation:"PNRemoveGroupOperation",PNChannelsForGroupOperation:"PNChannelsForGroupOperation",PNAddChannelsToGroupOperation:"PNAddChannelsToGroupOperation",PNRemoveChannelsFromGroupOperation:"PNRemoveChannelsFromGroupOperation",PNAccessManagerGrant:"PNAccessManagerGrant",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default),Zt.exports;var e,t}function ei(){if(Jt)return Qt;Jt=1,Object.defineProperty(Qt,"__esModule",{value:!0}),Qt.getOperation=function(){return t.default.PNTimeOperation},Qt.getURL=function(){return"/time/0"},Qt.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},Qt.prepareParams=function(){return{}},Qt.isAuthSupported=function(){return!1},Qt.handleResponse=function(e,t){return{timetoken:t[0]}},Qt.validateParams=function(){};var e,t=(e=Xt())&&e.__esModule?e:{default:e};return Qt}var ti,ii,ri,ni,si={exports:{}};function ai(){if(ri)return ii;function e(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}return ri=1,ii={signPamFromParams:function(t){return(i=t,function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(i).sort()).map(function(i){return i+"="+e(t[i])}).join("&");var i},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var e=void 0,t=void 0;return{promise:new Promise(function(i,r){e=i,t=r}),reject:t,fulfill:e}},encodeString:e}}function oi(){return ni||(ni=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();o(Kt()),o(zt()),o(jt());var r=o((Yt||(Yt=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();!(i=ei())||i.__esModule;var n=function(){function e(t){var i=t.timeEndpoint;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._timeEndpoint=i}return r(e,[{key:"onReconnection",value:function(e){this._reconnectionCallback=e}},{key:"startPolling",value:function(){this._timeTimer=setInterval(this._performTimeLoop.bind(this),3e3)}},{key:"stopPolling",value:function(){clearInterval(this._timeTimer)}},{key:"_performTimeLoop",value:function(){var e=this;this._timeEndpoint(function(t){t.error||(clearInterval(e._timeTimer),e._reconnectionCallback())})}}]),e}();t.default=n,e.exports=t.default}($t,$t.exports)),$t.exports)),n=o((ti||(ti=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i,r=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();!(i=zt())||i.__esModule;var n=function(){function e(t){var i=t.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.hashHistory=[],this._config=i}return r(e,[{key:"getKey",value:function(e){var t=function(e){var t=0;if(0===e.length)return t;for(var i=0;i<e.length;i+=1)t=(t<<5)-t+e.charCodeAt(i),t&=t;return t}(JSON.stringify(e.payload)).toString();return e.publishMetaData.publishTimetoken+"-"+t}},{key:"isDuplicate",value:function(e){return this.hashHistory.includes(this.getKey(e))}},{key:"addEntry",value:function(e){this.hashHistory.length>=this._config.maximumCacheSize&&this.hashHistory.shift(),this.hashHistory.push(this.getKey(e))}},{key:"clearHistory",value:function(){this.hashHistory=[]}}]),e}();t.default=n,e.exports=t.default}(si,si.exports)),si.exports)),s=o(ai()),a=o(Wt());function o(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(t){var i=t.subscribeEndpoint,s=t.leaveEndpoint,a=t.heartbeatEndpoint,o=t.setStateEndpoint,l=t.timeEndpoint,d=t.config,c=t.crypto,u=t.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._listenerManager=u,this._config=d,this._leaveEndpoint=s,this._heartbeatEndpoint=a,this._setStateEndpoint=o,this._subscribeEndpoint=i,this._crypto=c,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new r.default({timeEndpoint:l}),this._dedupingManager=new n.default({config:d})}return i(e,[{key:"adaptStateChange",value:function(e,t){var i=this,r=e.state,n=e.channels,s=void 0===n?[]:n,a=e.channelGroups,o=void 0===a?[]:a;return s.forEach(function(e){e in i._channels&&(i._channels[e].state=r)}),o.forEach(function(e){e in i._channelGroups&&(i._channelGroups[e].state=r)}),this._setStateEndpoint({state:r,channels:s,channelGroups:o},t)}},{key:"adaptPresenceChange",value:function(e){var t=this,i=e.connected,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s;i?(n.forEach(function(e){t._heartbeatChannels[e]={state:{}}}),a.forEach(function(e){t._heartbeatChannelGroups[e]={state:{}}})):(n.forEach(function(e){e in t._heartbeatChannels&&delete t._heartbeatChannels[e]}),a.forEach(function(e){e in t._heartbeatChannelGroups&&delete t._heartbeatChannelGroups[e]}),!1===this._config.suppressLeaveEvents&&this._leaveEndpoint({channels:n,channelGroups:a},function(e){t._listenerManager.announceStatus(e)})),this.reconnect()}},{key:"adaptSubscribeChange",value:function(e){var t=this,i=e.timetoken,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s,o=e.withPresence,l=void 0!==o&&o;this._config.subscribeKey&&""!==this._config.subscribeKey?(i&&(this._lastTimetoken=this._currentTimetoken,this._currentTimetoken=i),"0"!==this._currentTimetoken&&0!==this._currentTimetoken&&(this._storedTimetoken=this._currentTimetoken,this._currentTimetoken=0),n.forEach(function(e){t._channels[e]={state:{}},l&&(t._presenceChannels[e]={}),t._pendingChannelSubscriptions.push(e)}),a.forEach(function(e){t._channelGroups[e]={state:{}},l&&(t._presenceChannelGroups[e]={}),t._pendingChannelGroupSubscriptions.push(e)}),this._subscriptionStatusAnnounced=!1,this.reconnect()):console&&console.log}},{key:"adaptUnsubscribeChange",value:function(e,t){var i=this,r=e.channels,n=void 0===r?[]:r,s=e.channelGroups,a=void 0===s?[]:s,o=[],l=[];n.forEach(function(e){e in i._channels&&(delete i._channels[e],o.push(e)),e in i._presenceChannels&&(delete i._presenceChannels[e],o.push(e))}),a.forEach(function(e){e in i._channelGroups&&(delete i._channelGroups[e],l.push(e)),e in i._presenceChannelGroups&&(delete i._channelGroups[e],l.push(e))}),0===o.length&&0===l.length||(!1!==this._config.suppressLeaveEvents||t||this._leaveEndpoint({channels:o,channelGroups:l},function(e){e.affectedChannels=o,e.affectedChannelGroups=l,e.currentTimetoken=i._currentTimetoken,e.lastTimetoken=i._lastTimetoken,i._listenerManager.announceStatus(e)}),0===Object.keys(this._channels).length&&0===Object.keys(this._presenceChannels).length&&0===Object.keys(this._channelGroups).length&&0===Object.keys(this._presenceChannelGroups).length&&(this._lastTimetoken=0,this._currentTimetoken=0,this._storedTimetoken=null,this._region=null,this._reconnectionManager.stopPolling()),this.reconnect())}},{key:"unsubscribeAll",value:function(e){this.adaptUnsubscribeChange({channels:this.getSubscribedChannels(),channelGroups:this.getSubscribedChannelGroups()},e)}},{key:"getHeartbeatChannels",value:function(){return Object.keys(this._heartbeatChannels)}},{key:"getHeartbeatChannelGroups",value:function(){return Object.keys(this._heartbeatChannelGroups)}},{key:"getSubscribedChannels",value:function(){return Object.keys(this._channels)}},{key:"getSubscribedChannelGroups",value:function(){return Object.keys(this._channelGroups)}},{key:"reconnect",value:function(){this._startSubscribeLoop(),this._registerHeartbeatTimer()}},{key:"disconnect",value:function(){this._stopSubscribeLoop(),this._stopHeartbeatTimer(),this._reconnectionManager.stopPolling()}},{key:"_registerHeartbeatTimer",value:function(){this._stopHeartbeatTimer(),0!==this._config.getHeartbeatInterval()&&(this._performHeartbeatLoop(),this._heartbeatTimer=setInterval(this._performHeartbeatLoop.bind(this),1e3*this._config.getHeartbeatInterval()))}},{key:"_stopHeartbeatTimer",value:function(){this._heartbeatTimer&&(clearInterval(this._heartbeatTimer),this._heartbeatTimer=null)}},{key:"_performHeartbeatLoop",value:function(){var e=this,t=[];t=(t=t.concat(this.getHeartbeatChannels())).concat(this.getSubscribedChannels());var i=[];i=(i=i.concat(this.getHeartbeatChannelGroups())).concat(this.getSubscribedChannelGroups());var r={};0===t.length&&0===i.length||(this.getSubscribedChannels().forEach(function(t){var i=e._channels[t].state;Object.keys(i).length&&(r[t]=i)}),this.getSubscribedChannelGroups().forEach(function(t){var i=e._channelGroups[t].state;Object.keys(i).length&&(r[t]=i)}),this._heartbeatEndpoint({channels:t,channelGroups:i,state:r},function(t){t.error&&e._config.announceFailedHeartbeats&&e._listenerManager.announceStatus(t),t.error&&e._config.autoNetworkDetection&&e._isOnline&&(e._isOnline=!1,e.disconnect(),e._listenerManager.announceNetworkDown(),e.reconnect()),!t.error&&e._config.announceSuccessfulHeartbeats&&e._listenerManager.announceStatus(t)}.bind(this)))}},{key:"_startSubscribeLoop",value:function(){this._stopSubscribeLoop();var e=[],t=[];if(Object.keys(this._channels).forEach(function(t){return e.push(t)}),Object.keys(this._presenceChannels).forEach(function(t){return e.push(t+"-pnpres")}),Object.keys(this._channelGroups).forEach(function(e){return t.push(e)}),Object.keys(this._presenceChannelGroups).forEach(function(e){return t.push(e+"-pnpres")}),0!==e.length||0!==t.length){var i={channels:e,channelGroups:t,timetoken:this._currentTimetoken,filterExpression:this._config.filterExpression,region:this._region};this._subscribeCall=this._subscribeEndpoint(i,this._processSubscribeResponse.bind(this))}}},{key:"_processSubscribeResponse",value:function(e,t){var i=this;if(e.error)e.category===a.default.PNTimeoutCategory?this._startSubscribeLoop():e.category===a.default.PNNetworkIssuesCategory?(this.disconnect(),e.error&&this._config.autoNetworkDetection&&this._isOnline&&(this._isOnline=!1,this._listenerManager.announceNetworkDown()),this._reconnectionManager.onReconnection(function(){i._config.autoNetworkDetection&&!i._isOnline&&(i._isOnline=!0,i._listenerManager.announceNetworkUp()),i.reconnect(),i._subscriptionStatusAnnounced=!0;var t={category:a.default.PNReconnectedCategory,operation:e.operation,lastTimetoken:i._lastTimetoken,currentTimetoken:i._currentTimetoken};i._listenerManager.announceStatus(t)}),this._reconnectionManager.startPolling(),this._listenerManager.announceStatus(e)):e.category===a.default.PNBadRequestCategory?(this._stopHeartbeatTimer(),this._listenerManager.announceStatus(e)):this._listenerManager.announceStatus(e);else{if(this._storedTimetoken?(this._currentTimetoken=this._storedTimetoken,this._storedTimetoken=null):(this._lastTimetoken=this._currentTimetoken,this._currentTimetoken=t.metadata.timetoken),!this._subscriptionStatusAnnounced){var r={};r.category=a.default.PNConnectedCategory,r.operation=e.operation,r.affectedChannels=this._pendingChannelSubscriptions,r.subscribedChannels=this.getSubscribedChannels(),r.affectedChannelGroups=this._pendingChannelGroupSubscriptions,r.lastTimetoken=this._lastTimetoken,r.currentTimetoken=this._currentTimetoken,this._subscriptionStatusAnnounced=!0,this._listenerManager.announceStatus(r),this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[]}var n=t.messages||[],o=this._config,l=o.requestMessageCountThreshold,d=o.dedupeOnSubscribe;if(l&&n.length>=l){var c={};c.category=a.default.PNRequestMessageCountExceededCategory,c.operation=e.operation,this._listenerManager.announceStatus(c)}n.forEach(function(e){var t=e.channel,r=e.subscriptionMatch,n=e.publishMetaData;if(t===r&&(r=null),d){if(i._dedupingManager.isDuplicate(e))return;i._dedupingManager.addEntry(e)}if(s.default.endsWith(e.channel,"-pnpres")){var a={channel:null,subscription:null};a.actualChannel=null!=r?t:null,a.subscribedChannel=null!=r?r:t,t&&(a.channel=t.substring(0,t.lastIndexOf("-pnpres"))),r&&(a.subscription=r.substring(0,r.lastIndexOf("-pnpres"))),a.action=e.payload.action,a.state=e.payload.data,a.timetoken=n.publishTimetoken,a.occupancy=e.payload.occupancy,a.uuid=e.payload.uuid,a.timestamp=e.payload.timestamp,e.payload.join&&(a.join=e.payload.join),e.payload.leave&&(a.leave=e.payload.leave),e.payload.timeout&&(a.timeout=e.payload.timeout),i._listenerManager.announcePresence(a)}else{var o={channel:null,subscription:null};o.actualChannel=null!=r?t:null,o.subscribedChannel=null!=r?r:t,o.channel=t,o.subscription=r,o.timetoken=n.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),i._config.cipherKey?o.message=i._crypto.decrypt(e.payload):o.message=e.payload,i._listenerManager.announceMessage(o)}}),this._region=t.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}]),e}();t.default=l,e.exports=t.default}(Ft,Ft.exports)),Ft.exports}var li,di={exports:{}};var ci,ui,pi,hi,gi,fi={},vi={},yi={},mi={};function bi(){return gi||(gi=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),r=K(zt()),n=K(Kt()),s=K(oi()),a=K(jt()),o=K((li||(li=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var s=e.networking,l=e.config,d=null,c=null,u={};t.getOperation()===n.default.PNTimeOperation||t.getOperation()===n.default.PNChannelGroupsOperation?d=arguments.length<=2?void 0:arguments[2]:(u=arguments.length<=2?void 0:arguments[2],d=arguments.length<=3?void 0:arguments[3]),"undefined"==typeof Promise||d||(c=r.default.createPromise());var p=t.validateParams(e,u);if(p)return d?d(o(p)):c?(c.reject(new a("Validation failed, check status for details",o(p))),c.promise):void 0;var h=t.prepareParams(e,u),g=function(e,t,i){return e.usePost&&e.usePost(t,i)?e.postURL(t,i):e.getURL(t,i)}(t,e,u),f=void 0,v={url:g,operation:t.getOperation(),timeout:t.getRequestTimeout(e)};h.uuid=l.UUID,h.pnsdk=function(e){if(e.sdkName)return e.sdkName;var t="PubNub-JS-"+e.sdkFamily;return e.partnerId&&(t+="-"+e.partnerId),t+"/"+e.getVersion()}(l),l.useInstanceId&&(h.instanceid=l.instanceId),l.useRequestId&&(h.requestid=i.default.createUUID()),t.isAuthSupported()&&l.getAuthKey()&&(h.auth=l.getAuthKey()),l.secretKey&&function(e,t,i){var n=e.config,s=e.crypto;i.timestamp=Math.floor((new Date).getTime()/1e3);var a=n.subscribeKey+"\n"+n.publishKey+"\n"+t+"\n";a+=r.default.signPamFromParams(i);var o=s.HMACSHA256(a);o=(o=o.replace(/\+/g,"-")).replace(/\//g,"_"),i.signature=o}(e,g,h);var y=function(i,r){if(i.error)d?d(i):c&&c.reject(new a("PubNub call failed, check status for details",i));else{var n=t.handleResponse(e,r,u);d?d(i,n):c&&c.fulfill(n)}};if(t.usePost&&t.usePost(e,u)){var m=t.postPayload(e,u);f=s.POST(h,m,v,y)}else f=t.useDelete&&t.useDelete()?s.DELETE(h,v,y):s.GET(h,v,y);return t.getOperation()===n.default.PNSubscribeOperation?f:c?c.promise:void 0};var i=s(xt()),r=s(ai());s(zt());var n=s(Xt());function s(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return r.name=r.constructor.name,r.status=i,r.message=t,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(e,Error),e}();function o(e){return(t={message:e}).type="validationError",t.error=!0,t;var t}e.exports=t.default}(di,di.exports)),di.exports)),l=R(null),d=R(null),c=R(null),u=R(null),p=R(null),h=R(null),g=R(null),f=R(null),v=R(null),y=function(){if(ci)return fi;ci=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.getOperation=function(){return e.default.PNUnsubscribeOperation},fi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},fi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/presence/sub-key/"+r.subscribeKey+"/channel/"+t.default.encodeString(a)+"/leave"},fi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},fi.isAuthSupported=function(){return!0},fi.prepareParams=function(e,t){var i=t.channelGroups,r=void 0===i?[]:i,n={};return r.length>0&&(n["channel-group"]=r.join(",")),n},fi.handleResponse=function(){return{}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return fi}(),m=R(y),b=R(null),S=function(){if(ui)return vi;ui=1,Object.defineProperty(vi,"__esModule",{value:!0}),vi.getOperation=function(){return e.default.PNHeartbeatOperation},vi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},vi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/presence/sub-key/"+r.subscribeKey+"/channel/"+t.default.encodeString(a)+"/heartbeat"},vi.isAuthSupported=function(){return!0},vi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},vi.prepareParams=function(e,t){var i=t.channelGroups,r=void 0===i?[]:i,n=t.state,s=void 0===n?{}:n,a=e.config,o={};return r.length>0&&(o["channel-group"]=r.join(",")),o.state=JSON.stringify(s),o.heartbeat=a.getPresenceTimeout(),o},vi.handleResponse=function(){return{}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return vi}(),_=R(S),T=R(null),E=R(null),I=R(null),P=R(null),V=R(null),A=function(){if(pi)return yi;pi=1,Object.defineProperty(yi,"__esModule",{value:!0});var e="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};yi.getOperation=function(){return t.default.PNPublishOperation},yi.validateParams=function(e,t){var i=e.config,r=t.message;return t.channel?r?i.subscribeKey?void 0:"Missing Subscribe Key":"Missing Message":"Missing Channel"},yi.usePost=function(e,t){var i=t.sendByPost;return void 0!==i&&i},yi.getURL=function(e,t){var r=e.config,s=t.channel,a=n(e,t.message);return"/publish/"+r.publishKey+"/"+r.subscribeKey+"/0/"+i.default.encodeString(s)+"/0/"+i.default.encodeString(a)},yi.postURL=function(e,t){var r=e.config,n=t.channel;return"/publish/"+r.publishKey+"/"+r.subscribeKey+"/0/"+i.default.encodeString(n)+"/0"},yi.getRequestTimeout=function(e){return e.config.getTransactionTimeout()},yi.isAuthSupported=function(){return!0},yi.postPayload=function(e,t){return n(e,t.message)},yi.prepareParams=function(t,i){var r=i.meta,n=i.replicate,s=void 0===n||n,a=i.storeInHistory,o=i.ttl,l={};return null!=a&&(l.store=a?"1":"0"),o&&(l.ttl=o),!1===s&&(l.norep="true"),r&&"object"===(void 0===r?"undefined":e(r))&&(l.meta=JSON.stringify(r)),l},yi.handleResponse=function(e,t){return{timetoken:t[2]}};var t=r(Xt()),i=r(ai());function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){var i=e.crypto,r=e.config,n=JSON.stringify(t);return r.cipherKey&&(n=i.encrypt(n),n=JSON.stringify(n)),n}return yi}(),C=R(A),k=R(null),D=R(null),M=R(null),w=R(ei()),N=function(){if(hi)return mi;hi=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.getOperation=function(){return e.default.PNSubscribeOperation},mi.validateParams=function(e){if(!e.config.subscribeKey)return"Missing Subscribe Key"},mi.getURL=function(e,i){var r=e.config,n=i.channels,s=void 0===n?[]:n,a=s.length>0?s.join(","):",";return"/v2/subscribe/"+r.subscribeKey+"/"+t.default.encodeString(a)+"/0"},mi.getRequestTimeout=function(e){return e.config.getSubscribeTimeout()},mi.isAuthSupported=function(){return!0},mi.prepareParams=function(e,t){var i=e.config,r=t.channelGroups,n=void 0===r?[]:r,s=t.timetoken,a=t.filterExpression,o=t.region,l={heartbeat:i.getPresenceTimeout()};return n.length>0&&(l["channel-group"]=n.join(",")),a&&a.length>0&&(l["filter-expr"]=a),s&&(l.tt=s),o&&(l.tr=o),l},mi.handleResponse=function(e,t){var i=[];t.m.forEach(function(e){var t={publishTimetoken:e.p.t,region:e.p.r},r={shard:parseInt(e.a,10),subscriptionMatch:e.b,channel:e.c,payload:e.d,flags:e.f,issuingClientId:e.i,subscribeKey:e.k,originationTimetoken:e.o,userMetadata:e.u,publishMetaData:t};i.push(r)});var r={timetoken:t.t.t,region:t.t.r};return{messages:i,metadata:r}};var e=i(Xt()),t=i(ai());function i(e){return e&&e.__esModule?e:{default:e}}return mi}(),O=R(N),x=K(Xt()),z=K(Wt()),L=K(xt());function R(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}function K(e){return e&&e.__esModule?e:{default:e}}var U=function(){function e(t){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var y=t.db,S=t.networking,A=this._config=new r.default({setup:t,db:y}),N=new n.default({config:A});S.init(A);var x={config:A,networking:S,crypto:N},z=o.default.bind(this,x,w),L=o.default.bind(this,x,m),R=o.default.bind(this,x,_),K=o.default.bind(this,x,E),U=o.default.bind(this,x,O),B=this._listenerManager=new a.default,F=new s.default({timeEndpoint:z,leaveEndpoint:L,heartbeatEndpoint:R,setStateEndpoint:K,subscribeEndpoint:U,crypto:x.crypto,config:x.config,listenerManager:B});this.addListener=B.addListener.bind(B),this.removeListener=B.removeListener.bind(B),this.removeAllListeners=B.removeAllListeners.bind(B),this.channelGroups={listGroups:o.default.bind(this,x,u),listChannels:o.default.bind(this,x,p),addChannels:o.default.bind(this,x,l),removeChannels:o.default.bind(this,x,d),deleteGroup:o.default.bind(this,x,c)},this.push={addChannels:o.default.bind(this,x,h),removeChannels:o.default.bind(this,x,g),deleteDevice:o.default.bind(this,x,v),listChannels:o.default.bind(this,x,f)},this.hereNow=o.default.bind(this,x,I),this.whereNow=o.default.bind(this,x,b),this.getState=o.default.bind(this,x,T),this.setState=F.adaptStateChange.bind(F),this.grant=o.default.bind(this,x,V),this.audit=o.default.bind(this,x,P),this.publish=o.default.bind(this,x,C),this.fire=function(e,t){return e.replicate=!1,e.storeInHistory=!1,i.publish(e,t)},this.history=o.default.bind(this,x,k),this.deleteMessages=o.default.bind(this,x,D),this.fetchMessages=o.default.bind(this,x,M),this.time=z,this.subscribe=F.adaptSubscribeChange.bind(F),this.presence=F.adaptPresenceChange.bind(F),this.unsubscribe=F.adaptUnsubscribeChange.bind(F),this.disconnect=F.disconnect.bind(F),this.reconnect=F.reconnect.bind(F),this.destroy=function(e){F.unsubscribeAll(e),F.disconnect()},this.stop=this.destroy,this.unsubscribeAll=F.unsubscribeAll.bind(F),this.getSubscribedChannels=F.getSubscribedChannels.bind(F),this.getSubscribedChannelGroups=F.getSubscribedChannelGroups.bind(F),this.encrypt=N.encrypt.bind(N),this.decrypt=N.decrypt.bind(N),this.getAuthKey=x.config.getAuthKey.bind(x.config),this.setAuthKey=x.config.setAuthKey.bind(x.config),this.setCipherKey=x.config.setCipherKey.bind(x.config),this.getUUID=x.config.getUUID.bind(x.config),this.setUUID=x.config.setUUID.bind(x.config),this.getFilterExpression=x.config.getFilterExpression.bind(x.config),this.setFilterExpression=x.config.setFilterExpression.bind(x.config),this.setHeartbeatInterval=x.config.setHeartbeatInterval.bind(x.config),S.hasModule("proxy")&&(this.setProxy=function(e){x.config.setProxy(e),i.reconnect()})}return i(e,[{key:"getVersion",value:function(){return this._config.getVersion()}},{key:"networkDownDetected",value:function(){this._listenerManager.announceNetworkDown(),this._config.restore?this.disconnect():this.destroy(!0)}},{key:"networkUpDetected",value:function(){this._listenerManager.announceNetworkUp(),this.reconnect()}}],[{key:"generateUUID",value:function(){return L.default.createUUID()}}]),e}();U.OPERATIONS=x.default,U.CATEGORIES=z.default,t.default=U,e.exports=t.default}(Mt,Mt.exports)),Mt.exports}var Si,_i={exports:{}};var Ti,Ei,Ii,Pi={exports:{}},Vi={},Ai=(Ii||(Ii=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=o(bi()),r=o((Si||(Si=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}();n(zt());var r=n(Wt());function n(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(t){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._modules={},Object.keys(t).forEach(function(e){i._modules[e]=t[e].bind(i)})}return i(e,[{key:"init",value:function(e){this._config=e,this._maxSubDomain=20,this._currentSubDomain=Math.floor(Math.random()*this._maxSubDomain),this._providedFQDN=(this._config.secure?"https://":"http://")+this._config.origin,this._coreParams={},this.shiftStandardOrigin()}},{key:"nextOrigin",value:function(){return-1===this._providedFQDN.indexOf("pubsub.")?this._providedFQDN:(this._currentSubDomain=this._currentSubDomain+1,this._currentSubDomain>=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("pubsub","ps"+e));var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._standardOrigin=this.nextOrigin(e),this._standardOrigin}},{key:"getStandardOrigin",value:function(){return this._standardOrigin}},{key:"POST",value:function(e,t,i,r){return this._modules.post(e,t,i,r)}},{key:"GET",value:function(e,t,i){return this._modules.get(e,t,i)}},{key:"DELETE",value:function(e,t,i){return this._modules.del(e,t,i)}},{key:"_detectErrorCategory",value:function(e){if("ENOTFOUND"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}]),e}();t.default=s,e.exports=t.default}(_i,_i.exports)),_i.exports)),n=function(){return Ti||(Ti=1,e=Pi,t=Pi.exports,Object.defineProperty(t,"__esModule",{value:!0}),t.default={get:function(e){try{return localStorage.getItem(e)}catch(e){return null}},set:function(e,t){try{return localStorage.setItem(e,t)}catch(e){return null}}},e.exports=t.default),Pi.exports;var e,t}(),s=o(n),a=function(){if(Ei)return Vi;function e(e){var t=[];for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];null!=r&&t.push(encodeURIComponent(i)+"="+encodeURIComponent(r))}return t.join("&")}function t(e,t,i,r,n,s){var a=this,o=new XMLHttpRequest,l=t+(i?(t.indexOf("?")>=0?"&":"?")+i:""),d=!1,c=!1;function u(e,t){if(!c&&!d){c=!0;var i={};return i.error=null!==e,i.operation=n.operation,o.status&&(i.statusCode=o.status),e?(i.errorData=e,i.category=a._detectErrorCategory(e),s(i,null)):s(i,t)}}o.open(e,l,!0),o.timeout=n.timeout,o.onreadystatechange=function(){if(4===o.readyState){var e=o.status;if(e>=200&&e<300){var t;try{t=JSON.parse(o.responseText)}catch(t){return u({status:e,response:{}},null)}return t&&1===t.error&&t.status&&t.message&&t.service?u({status:t.status,response:{}},null):u(null,t)}return u(0===e?{status:0}:{status:e,response:{badRequest:400===e,forbidden:403===e}},null)}},o.ontimeout=function(){u({timeout:!0},null)},o.onerror=function(){u({status:0},null)};var p=null;null!=r&&(p="string"==typeof r?r:JSON.stringify(r),o.setRequestHeader("Content-Type","application/json"));try{o.send(p)}catch(e){u({status:0},null)}return{abort:function(){d=!0;try{o.abort()}catch(e){}}}}return Ei=1,Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.get=function(i,r,n){return t.call(this,"GET",this.getStandardOrigin()+r.url,e(i),null,r,n)},Vi.post=function(i,r,n,s){return t.call(this,"POST",this.getStandardOrigin()+n.url,e(i),r,n,s)},Vi.del=function(i,r,n){return t.call(this,"DELETE",this.getStandardOrigin()+r.url,e(i),null,r,n)},Vi}();function o(e){return e&&e.__esModule?e:{default:e}}function l(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var i=e.listenToBrowserNetworkEvents,n=void 0===i||i;e.db=s.default,e.sdkFamily="Web",e.networking=new r.default({del:a.del,get:a.get,post:a.post,sendBeacon:l});var o=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n&&(window.addEventListener("offline",function(){o.networkDownDetected()}),window.addEventListener("online",function(){o.networkUpDetected()})),o}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(i.default);t.default=d,e.exports=t.default}(Dt,Dt.exports)),Dt.exports),Ci=E(Ai);const ki=["PNAccessDeniedCategory","PNTimeoutCategory","PNNetworkIssuesCategory","PNBadRequestCategory","PNMalformedResponseCategory","PNDecryptionErrorCategory","PNTLSConnectionFailedCategory","PNTLSUntrustedCertificateCategory","PNUnexpectedDisconnectCategory","PNNetworkDownCategory","PNNetworkUpCategory"];class Di extends ht{constructor(e){super(e),this.pubnub=void 0,this.channelId=void 0,this._synchronousPublish=!1,this.generateChannel()}connect(e){VizbeeSDK.logger.debug("PubnubSync::appId - "+this.appConfig.appId+" , deviceId - "+this.appConfig.deviceId),void 0===this.pubnub&&(VizbeeSDK.logger.debug("PubnubSync::connect - initializing pubnub ..."),this.pubnub=new Ci({publishKey:this.appConfig.pub_key,subscribeKey:this.appConfig.sub_key,ssl:!0}),this.filterOwnMessages());let t=5;this.pubnub.addListener({status:i=>{"PNConnectedCategory"!==i.category&&"PNReconnectedCategory"!==i.category&&"PNNetworkUpCategory"!==i.category||(t=5),"PNConnectedCategory"===i.category?(this.dispatchReceive(new gt(ft.SYNC_CONNECT,{})),e(!0)):ki.indexOf(i.category)>=0&&(VizbeeSDK.logger.error("PubnubSync.Connect - PUBNUB.subscribe() error = ",i," with retries = ",t),t>0&&(t--,this.subscribePubnub()))},message:this.messageHandler.bind(this),presence:e=>{}}),this.subscribePubnub()}disconnect(){this.pubnub&&this.channelId&&(VizbeeSDK.logger.debug("PubnubSync::disconnect - invoking disconnect"),this.pubnub.unsubscribe({channels:[this.channelId]}),this.pubnub=void 0,super.disconnect())}send(e){if(this.pubnub&&this.channelId){if(this._synchronousPublish)return void this.sendSynchronously(e);this.pubnub.publish({message:e,channel:this.channelId,sendByPost:!1,storeInHistory:!1,meta:{uuid:this.pubnub.getUUID()}},(e,t)=>{e.error&&VizbeeSDK.logger.error("CommManager:CommManager - PUBNUB.publish() error")})}}enableSynchronousPublish(){this._synchronousPublish=!0}sendSynchronously(e){if(this.pubnub&&this.channelId)try{var t=this.appConfig.pub_key,i=this.appConfig.sub_key,r=this.pubnub.getUUID(),n="?uuid="+encodeURIComponent(r)+"&store=0&meta="+encodeURIComponent(JSON.stringify({uuid:r})),s="https://ps.pndsn.com/publish/"+t+"/"+i+"/0/"+this.channelId+"/0",a=JSON.stringify(e),o=s+"/"+encodeURIComponent(a)+n;if("function"==typeof fetch)return fetch(o,{method:"GET",keepalive:!0,mode:"no-cors"}).catch(function(){}),void VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via keepalive fetch");if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon&&navigator.sendBeacon(s+n,a))return void VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via sendBeacon");var l=new XMLHttpRequest;l.open("GET",o,!1),l.send(),VizbeeSDK.logger.debug("PubnubSync::sendSynchronously - sent via synchronous XHR")}catch(e){VizbeeSDK.logger.error("PubnubSync::sendSynchronously - error publishing on teardown",e)}}generateChannel(){this.appConfig&&(this.channelId=(""+kt(this.appConfig.appId+":"+this.appConfig.deviceId)).toLowerCase()),VizbeeSDK.logger.info("PubnubSync::generateChannel",this.channelId)}subscribePubnub(){VizbeeSDK.logger.debug("PubnubSync::subscribePubnub - invoking pubnub subscribe"),this.pubnub&&this.channelId&&(VizbeeSDK.logger.debug("PubnubSync::subscribePubnub - subscribing..."),this.pubnub.subscribe({channels:[this.channelId]}))}filterOwnMessages(){if(this.pubnub){let e="uuid != '";e=e.concat(this.pubnub.getUUID()).concat("'"),this.pubnub.setFilterExpression(e)}}messageHandler(e,t,i){VizbeeSDK.logger.verbose("PubnubSync::messageHandler",e);let r=e?e.message:{};St.verifyDeviceId(),this.dispatchReceive(new gt(ft.SYNC_MESSAGE,r))}}class Mi extends ht{constructor(e){super(e),this.messageBus=void 0}connect(e){VizbeeTV.tv.config.vizbeeCustomChannel&&(this.messageBus=VizbeeTV.tv.config.vizbeeCustomChannel,this.messageBus.onMessage=e=>{e&&e.data&&(VizbeeSDK.logger.debug("GoogleCastSync::connect",e.senderId,e.data),this.dispatchReceive(new gt(ft.SYNC_MESSAGE,JSON.parse(e.data))))},this.dispatchReceive(new gt(ft.SYNC_CONNECT,{})),e(!0))}disconnect(){this.messageBus=void 0}send(e){try{this.messageBus&&e&&(VizbeeSDK.logger.debug("GoogleCastSync::send",e),this.messageBus.broadcast(JSON.stringify(e)))}catch(e){VizbeeSDK.logger.error("GoogleCastSync::send - Error while sending message",e)}}}class wi extends ht{constructor(e){super(e),this.syncInstances=[]}connect(e){for(let t of this.syncInstances)t.connect(e)}disconnect(){for(let e of this.syncInstances)e.disconnect()}send(e){for(let t of this.syncInstances)t.send(e)}addSyncInstance(e){this.syncInstances.push(e),this.setReceiveListener(e)}setReceiveListener(e){e.onReceive=e=>{this.dispatchReceive.call(this,e)}}}class Ni extends ht{constructor(e,t){if(!(e instanceof ht))throw new TypeError("BaseSyncExtension::constructor() - classToExtend must be instance of BaseSync.");super(t),this.extendedClass=e,this.extendedClass.onReceive=e=>{this.onReceiveHandler.call(this,e)}}connect(e){this.extendedClass.connect(e)}disconnect(){this.extendedClass.disconnect()}send(e){VizbeeSDK.logger.verbose(this._getLogPrefix("send")+" - FORWARDING OUT send message",e),this.extendedClass.send(e)}get baseSync(){return this.extendedClass instanceof Ni?this.extendedClass.baseSync:this.extendedClass}onReceiveHandler(e){if(!e||!e.data)return void VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - NULL receive event",e);let t;e.type===ft.SYNC_MESSAGE?(t=this.handleSyncReceiveEvent(e),t?(VizbeeSDK.logger.verbose(this._getLogPrefix("onReceive")+" - FORWARDING IN sync receive event",t),this.dispatchReceive.call(this,t)):VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - DROPPING receive event",e)):(t=this.handleNonSyncReceiveEvent(e),t?(VizbeeSDK.logger.verbose(this._getLogPrefix("onReceive")+" - FORWARDING IN non-sync receive event",t),this.dispatchReceive.call(this,t)):VizbeeSDK.logger.warn(this._getLogPrefix("onReceive")+" - DROPPING non-sync receive event",e))}handleSyncReceiveEvent(e){return e}handleNonSyncReceiveEvent(e){return e}getClassName(){return this.constructor.name}_getLogPrefix(e){return(this.getClassName()+"::"+e+" ").slice(0,40)}}class Oi extends Ni{constructor(e,t){super(e,t),this.txIdMap={}}handleSyncReceiveEvent(e){if(this.isValidMessage(e.data))return e}isValidMessage(e){let t,i,r,n,s=!1;if(!e)return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - invalid message",e),s;if(!P.isObject(e.h))return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - invalid message head",e),s;if(t=e.h.id,i=e.h.tx,r=e.h.ss,!P.isString(t))return VizbeeSDK.logger.error("SanitizeHeaderRecvExtension:isValidMessage - invalid message id",t,e),s;if(!P.isNumber(i))return VizbeeSDK.logger.error("SanitizeHeaderRecvExtension:isValidMessage - invalid message tx",i,e),s;if(n=t,r&&(n=r+n),0===i)this.txIdMap[n]=i;else{if(this.txIdMap[n]>=i)return VizbeeSDK.logger.warn("SanitizeHeaderRecvExtension:isValidMessage - duplicate message",i,this.txIdMap[n]),s;this.txIdMap[n]=i}return!0}}class xi extends Ni{constructor(e,t){super(e,t)}handleSyncReceiveEvent(e){if(this.isValidMessage(e.data))return this.sanitize(e)}isValidMessage(e){let t=!1,i=e.b;if(!P.isObject(i))return t;if(!P.isObject(i.cmd))return t;if(!P.isString(i.cmd.name)||!P.isString(i.cmd.ns))return t;if("start_video"==i.cmd.name){let e=i.vinfo;if(!P.isObject(e))return t;if(!P.isString(e.id)&&!P.isString(e.url))return t}return t=!0,t}sanitize(e){let t=e.data,i=t.b.cmd;return i.name=i.name.toLowerCase(),i.ns=i.ns.toLowerCase(),i.type=i.type?i.type.toLowerCase():null,"exit"==i.name&&(i.param=i.param.toLowerCase()),t.b.cmd=i,e.data=t,e}}class zi extends Ni{constructor(e,t){super(e,t)}getActiveSenders(){throw new TypeError("BaseSyncWithPresence::getSenders() - Abstract method.")}getActiveSendersCount(){throw new TypeError("BaseSyncWithPresence::getActiveSendersCount() - Abstract method.")}}class Li extends zi{constructor(e,t){if(!(e instanceof zi))throw new TypeError("BaseSyncWithPresenceExtension::constructor() - classToExtend must be instance of BaseSyncWithPresence.");super(e,t)}getActiveSenders(){return this.extendedClass.getActiveSenders()}getActiveSendersCount(){return this.extendedClass.getActiveSendersCount()}}class Ri{static decodeVideoInfo(e){if(!e)return;if(!e.vinfo)return;let t={islive:!1,starttime:0,isContinuedVideo:!1};if(t.id=e.vinfo.id,t.videourl=e.vinfo.url,e.vinfo.islive&&(t.islive=e.vinfo.islive),e.vinfo.deeplink&&(t.deeplink=e.vinfo.deeplink),!P.isUndefined(e.cmd)){var i=0;P.isUndefined(e.cmd.param)||(i=parseInt(e.cmd.param,10),isNaN(i)&&(i=0),i<0&&(i=0)),t.starttime=i}if(e.vinfoext){if(e.vinfoext.cuepoints&&(t.cuepoints=e.vinfoext.cuepoints),e.vinfoext.title&&(t.title=e.vinfoext.title),e.vinfoext.subtitle&&(t.subtitle=e.vinfoext.subtitle),e.vinfoext.tracks){let i=P.get(e,["vinfoext","tracks","currentAudioTrack"]);i&&(t.preferredTracks={},t.preferredTracks.currentAudioTrack={label:i.displayName,lang:i.languageCode,id:i.screenTrackId})}e.vinfoext.imgurl&&(t.imgurl=e.vinfoext.imgurl),e.vinfoext.desc&&(t.desc=e.vinfoext.desc),e.vinfoext.customstreaminfo&&(t.customstreaminfo=e.vinfoext.customstreaminfo),e.vinfoext.custommetadata&&(t.custommetadata=e.vinfoext.custommetadata),e.vinfoext.drmtype&&(t.drmtype=e.vinfoext.drmtype),e.vinfoext.protocoltype&&(t.protocoltype=e.vinfoext.protocoltype),e.vinfoext.drmlicenseurl&&(t.drmlicenseurl=e.vinfoext.drmlicenseurl),e.vinfoext.drmcustomdata&&(t.drmcustomdata=e.vinfoext.drmcustomdata)}return t}static encodeVideoInfo(e){if(!e)return;let t={};return t.vinfo={id:e.id,islive:e.islive,url:e.videourl},t.vinfoext={videostarttime:e.starttime||0,imgurl:e.imgurl?e.imgurl:"",title:e.title?e.title:"",subtitle:e.subtitle?e.subtitle:"",desc:e.desc?e.desc:"",isContinuedVideo:null!=e.isContinuedVideo&&e.isContinuedVideo,customstreaminfo:e.customstreaminfo?e.customstreaminfo:{},custommetadata:e.custommetadata?e.custommetadata:{},drmtype:e.drmtype?e.drmtype:"NONE",drmlicenseurl:e.drmlicenseurl?e.drmlicenseurl:"",drmcustomdata:e.drmcustomdata?e.drmcustomdata:{},cuepoints:e.cuepoints?e.cuepoints:[]},t}static addInfoFromHeader(e,t){if(!e||!t)return e;let i=P.clone(t);return e.senderInfo=P.omit(i,["tx","ss"]),e}static encodeEventCmd(e){if(!e)return;let t={cmd:{ns:"video",type:"req",name:"event",param:""},einfo:{type:e.type,data:e.data}};return{type:ft.SYNC_MESSAGE,data:{h:{},b:t}}}static encodeStartVideoCmd(e){if(!e)return;e.starttime=e.starttime||0;let t={cmd:{ns:"video",type:"req",name:"start_video",param:e.starttime},internal:{videoInfo:e,startVideoSource:"queue_manager"}};return{type:ft.SYNC_MESSAGE,data:{h:{},b:t}}}static encodeVideoStatus(e){if(!e)return;let t={cmd:{name:"status",ns:"video",type:"upd"},vstatus:{du:0,id:e.id,po:-1,st:"BUFFERING",vol:100,cc:0,tr:{},er:{}}};return t=P.extend(t,Ri.encodeVideoInfo(e)),t}}class Ki extends Li{constructor(e,t){super(e,t)}handleSyncReceiveEvent(e){if("start_video"==e.data.b.cmd.name){let t=Ri.decodeVideoInfo(e.data.b);t&&(t=Ri.addInfoFromHeader(t,e.data.h)),e.data.b.internal={videoInfo:t,startVideoSource:"default",queueInfo:this._createQueueInfo(e.data)}}return e}_createQueueInfo(e){let t={id:"default",name:"default",description:"default",startIndex:0,items:[]},i=Ri.decodeVideoInfo(e.b);return i&&(i=Ri.addInfoFromHeader(i,e.h)),t.items.push(i),t}}class Ui extends zi{constructor(e,t){VizbeeSDK.logger.d("UpdatePresenceRecvExtension","constructor"),super(e,t),this.currentAppId=t.appId,this._sentFirstHelloCheck=!1,this._sentSecondHelloCheck=!1,this._senderMap={},this._presenceIntervalTimer=void 0,this._previousSenderMapCount=0,this._startPresenceTimer()}getActiveSenders(){return this._senderMap}getActiveSendersCount(){return Object.keys(this._senderMap||{}).length}disconnect(){VizbeeSDK.logger.d("UpdatePresenceRecvExtension","disconnect"),this._senderMap={},this._previousSenderMapCount=0,this._stopPresenceTimer(),super.disconnect()}handleSyncReceiveEvent(e){let t=e.data;return"exit"===t.b.cmd.name?this._senderMap=P.omit(this._senderMap,P.keys(this._senderMap).filter(e=>e===t.h.id)):(this._sentFirstHelloCheck=!1,this._sentSecondHelloCheck=!1,this._senderMap[t.h.id]=t.h,this._senderMap[t.h.id].appId=this.currentAppId,this._senderMap[t.h.id].lastMsgReceivedTimeInMs=Date.now(),this._startPresenceTimer()),e}_startPresenceTimer(){this._stopPresenceTimer(),this._presenceIntervalTimer=window.setInterval(()=>{this._updatePresence()},1e3)}_stopPresenceTimer(){window.clearInterval(this._presenceIntervalTimer),this._presenceIntervalTimer=void 0}_checkForSenders(){!this._sentFirstHelloCheck&&this._shouldSendHelloCheckMessage(15e3)?(this._sendHelloCheckMessage(),this._sentFirstHelloCheck=!0):!this._sentSecondHelloCheck&&this._shouldSendHelloCheckMessage(25e3)&&(this._sendHelloCheckMessage(),this._sentSecondHelloCheck=!0)}_shouldSendHelloCheckMessage(e){if(0==Object.keys(this._senderMap||{}).length)return!1;let t=Date.now(),i=P.keys(this._senderMap).filter(i=>this._senderMap[i]&&null!=this._senderMap[i].lastMsgReceivedTimeInMs&&t-this._senderMap[i].lastMsgReceivedTimeInMs>e);return Object.keys(i).length>0}_sendHelloCheckMessage(){this.dispatchReceive(new gt(ft.SYNC_MESSAGE,{b:{cmd:{ns:"video",name:"hello",type:"int"},hstatus:{id:this.appConfig.deviceId,type:"SCREEN",vip:"false"}}}))}_updatePresence(){this._checkForSenders();let e=Date.now();if(this._senderMap=P.omit(this._senderMap,P.keys(this._senderMap).filter(t=>this._senderMap[t]&&null!=this._senderMap[t].lastMsgReceivedTimeInMs&&e-this._senderMap[t].lastMsgReceivedTimeInMs>3e4)),0==Object.keys(this._senderMap||{}).length)return VizbeeSDK.logger.d("UpdatePresenceRecvExtension","_updatePresence","there are no senders now"),this._stopPresenceTimer(),this.dispatchReceive(new gt(ft.SYNC_PRESENCE,this._senderMap)),void(this._previousSenderMapCount=0);let t=Object.keys(this._senderMap).length;t!=this._previousSenderMapCount&&(VizbeeSDK.logger.d("UpdatePresenceRecvExtension","_updatePresence","there is a change in the senders connected"),this._previousSenderMapCount=t,this.dispatchReceive(new gt(ft.SYNC_PRESENCE,this._senderMap)))}}class Bi extends Li{constructor(e,t){super(e,t),this.tx=0,this.sessionId=this.createTimestamp()}send(e){super.send(this.createMessage(null,e))}createMessage(e,t){return(t=t||{}).vers=1,{h:e=P.extend(this.createHeader(),e),b:t}}createHeader(){return this.tx++,{tx:this.tx,id:this.appConfig.senderId||this.appConfig.deviceId,ss:this.sessionId,app:this.appConfig.appId,ssinfo:this.getSenderSessionInfo()}}createTimestamp(){let e=new Date;return e.getFullYear()+":"+("0"+(e.getMonth()+1)).slice(-2)+":"+("0"+e.getDate()).slice(-2)+":"+("0"+e.getHours()).slice(-2)+":"+("0"+e.getMinutes()).slice(-2)+":"+("0"+e.getSeconds()).slice(-2)+":"+("0"+e.getMilliseconds()).slice(-3)}getSenderSessionInfo(){return{SCREEN_IDFA:this.appConfig.screenIdfa,SCREEN_IDFV:this.appConfig.screenIdfv,SCREEN_DEVICE_TYPE:this.appConfig.screenDeviceType,SCREEN_DEVICE_ID:this.appConfig.screenDeviceId,SCREEN_DEVICE_FRIENDLYNAME:this.appConfig.screenFriendlyName}}}const Fi=["BUFFERING","PLAYING","PAUSED_BY_USER","INTERRUPTED","FINISHED","FAILED"];class Hi extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.shouldSupportLiveDVR=P.get(t,["features","shouldSupportLiveDVR"],!1),this.liveDVRMinBufferInMs=P.get(t,["features","liveDVRMinBufferInMs"],3e5)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){return Fi.includes(e.vstatus.st)&&e.vinfo.islive&&(e.vinfoext||(e.vinfoext={}),!0===e.vinfoext.isdvrsupported||(!this.shouldSupportLiveDVR||e.vstatus.du<this.liveDVRMinBufferInMs?(e.vinfoext.isdvrsupported=!1,e.vstatus.po=-1,e.vstatus.du=0):e.vinfoext.isdvrsupported=!0)),e}}class Gi{static setItem(e,t,i,r,n,s,a){if(e)if("undefined"!=typeof Storage)vizbee.logger.debug("StorageUtil::setItem - Storage supported!"),"session"==i?(vizbee.logger.debug("StorageUtil::setItem - storing in session!"),sessionStorage.setItem(e,t)):(vizbee.logger.debug("StorageUtil::setItem - storing in local!"),localStorage.setItem(e,t));else{if(vizbee.logger.debug("StorageUtil::setItem - Storage NOT supported!"),"session"==i)return;vizbee.logger.debug("StorageUtil::setItem - storing in cookies!"),M.docCookies.setItem(e,t,r,n,s,a)}}static getItem(e,t){if(e){if("undefined"!=typeof Storage)return vizbee.logger.debug("StorageUtil::getItem - Storage supported!"),"session"==t?(vizbee.logger.debug("StorageUtil::getItem - getting from session!"),sessionStorage.getItem(e)):(vizbee.logger.debug("StorageUtil::getItem - getting from local!"),localStorage.getItem(e)?sessionStorage.getItem(e):localStorage.getItem(e));if(vizbee.logger.debug("StorageUtil::getItem - Storage NOT supported!"),"session"!=t)return vizbee.logger.debug("StorageUtil::getItem - getting from cookies!"),M.docCookies.getItem(e)}}static removeItem(e,t,i,r){if(e)if("undefined"!=typeof Storage)"session"==t?sessionStorage.removeItem(e):localStorage.removeItem(e)||sessionStorage.removeItem(e);else{if("session"==t)return;M.docCookies.removeItem(e,i,r)}}}class Wi{constructor(e){this.senderConfig=e}track(e,t){if(!e||!t||!this.senderConfig.url)return;if(VizbeeSDK.logger.d(`${this.constructor.name}`,`track() - tracking event ${e}, ${JSON.stringify(t)}`),!this.shouldTrack(e))return;if(t=this.filterProperties(t),0==Object.keys(t).length)return;let i,r,n={event:e,properties:t},s=this._getBase64String(n),a=this._getURIEncodedString(s),o="GET";this._needPostRequest(a)?(i=this.senderConfig.url,o="POST",r=JSON.stringify({data:a})):(i=this.senderConfig.url+"?data="+a,o="GET",r=void 0),VizbeeSDK.logger.d(`${this.constructor.name}`,`track() - sending metrics request: URL ${i}, Method ${o}, Data ${r}`),M.xhr({url:i,method:o,data:r,timeout:1e4,retries:this.senderConfig.networkRetries}).then(e=>{e.error?VizbeeSDK.logger.e(`${this.constructor.name}`,"track - ERROR"):VizbeeSDK.logger.d(`${this.constructor.name}`,`track - SUCCESS: ${e}`)}).catch(e=>{VizbeeSDK.logger.d(`${this.constructor.name}`,`track - ERROR=${e}`)})}shouldTrack(e){return VizbeeSDK.logger.d(`${this.constructor.name}`,`shouldTrack - Filtering events with regex = ${this.senderConfig.eventFilter}`),!this.senderConfig.eventFilter||new RegExp(this.senderConfig.eventFilter,"i").test(e)}filterProperties(e){if(VizbeeSDK.logger.d(`${this.constructor.name}`,`filterProperties - Filtering properties with regex = ${this.senderConfig.attributeFilter}`),!this.senderConfig.attributeFilter)return e;e=e||{},e=JSON.parse(JSON.stringify(e));for(var t=new RegExp(this.senderConfig.attributeFilter,"i"),i=Object.keys(e),r=0;r<i.length;r++){var n=i[r];t.test(n)||delete e[n]}return e}_getBase64String(e){return btoa(unescape(encodeURIComponent(JSON.stringify(e))))}_getURIEncodedString(e){return window.encodeURIComponent(e)}_needPostRequest(e){return!!(e&&e.length>1e4)}}class ji extends Wi{constructor(e){let t={};e.mixpanel_url&&(t={eventFilter:e.mixpanel_filter,token:e.mixpanel_token,attributeFilter:e.attribute_filter,url:e.mixpanel_url,networkRetries:0}),super(t)}track(e,t){(t=t||{}).token=this.senderConfig.token,super.track(e,t)}}class qi extends Wi{constructor(e){let t={};e.vizbee_url&&(t={url:e.vizbee_url,attributeFilter:e.attribute_filter,eventFilter:e.vizbee_filter,networkRetries:0}),super(t)}}class Ji{constructor(e){this.senders=[],e&&e.vizbee_url&&this.senders.push(new qi(e)),e&&e.mixpanel_url&&e.mixpanel_token&&this.senders.push(new ji(e))}track(e,t){VizbeeSDK.logger.d(`${this.constructor.name}`,"track",e,t),P.each(this.senders,i=>{i.track(e,P.clone(t))})}}const Yi="UNKNOWN",$i="NOT_FOUND";var Qi=new class{constructor(){this.config={},this.commonProperties={},this.attributesProvidersList=[],this.isInitialized=!1,this.needToSetDistinctIdForVideoEvents=!0}init(e){if(e&&this.commonProperties)if(VizbeeSDK.logger.d("MetricsManager","init",e.appId,this.commonProperties.APP_ID),this.isInitialized&&this.commonProperties.APP_ID==e.appId)VizbeeSDK.logger.d("MetricsManager","init","already initialized");else{this.config=e,this.metricsRouter=new Ji(e.metricsParams),this.appSessionId=Math.floor(1e10*Math.random()).toString()+"_"+Date.now(),this.screenSdkId=Gi.getItem("SCREEN_SDK_ID"),this.screenSdkId?VizbeeSDK.logger.d("MetricsManager::init","SCREEN_SDK_ID -> AVAILABLE -> REUSING IT"):(VizbeeSDK.logger.d("MetricsManager::init","SCREEN_SDK_ID -> NOT_AVAILABLE"),this.screenSdkId=Math.floor(1e10*Math.random()).toString()+"_"+Date.now(),Gi.setItem("SCREEN_SDK_ID",this.screenSdkId,"local",31536e3,"/"));var t=this.prepareCommonProperties(e);this.setCommonProperties(t),e.customAttributesForMetrics&&this.setCustomProperties(e.customAttributesForMetrics),this.isInitialized=!0}else VizbeeSDK.logger.e("MetricsManager","init","called with empty config!")}refreshLaunchParamProperties(){if(VizbeeTV.tv.launchParamsDeferral){const e=VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()||!1;this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE=e,this.commonProperties.SCREEN_VZB_LAUNCH_PARAM=e?"y":$i}}prepareCommonProperties(e){var t,i,r,n={appId:e.appId,deviceId:e.deviceId,deviceType:VizbeeTV.tv.cloudPlatformName,distinctId:e.deviceId,externalIp:e.externalIp,ipv6Address:e.ipv6Address,sdkVersion:window.VZB?window.VZB.VERSION:"",appSessionId:this.appSessionId,screenSdkId:this.screenSdkId,timestamp:Date.now(),timezoneOffset:(t=-(new Date).getTimezoneOffset(),i=t>=0?"+":"-",r=Math.abs(t),"GMT"+i+("0"+Math.floor(r/60)).slice(-2)+":"+("0"+r%60).slice(-2))};return VizbeeTV.tv.deviceInfo&&(VizbeeTV.tv.deviceInfo.deviceId&&VizbeeTV.tv.deviceInfo.deviceId!=Yi&&(n.deviceId=VizbeeTV.tv.deviceInfo.deviceId,n.distinctId=VizbeeTV.tv.deviceInfo.deviceId),n.macAddress=VizbeeTV.tv.deviceInfo.macAddress,n.deviceMake=VizbeeTV.tv.deviceInfo.make,n.deviceModel=VizbeeTV.tv.deviceInfo.model,n.deviceSerialNumber=VizbeeTV.tv.deviceInfo.serialNumber,n.friendlyName=VizbeeTV.tv.deviceInfo.friendlyName,n.osVersion=P.get(VizbeeTV.tv.deviceInfo,["os","version"],Yi),n.osNativeVersion=P.get(VizbeeTV.tv.deviceInfo,["os","sdkVersion"],Yi)),VizbeeTV.tv.adId&&(n.adId=VizbeeTV.tv.adId),null!=VizbeeTV.tv.isAdTrackingDisabled&&(n.isAdTrackingDisabled=VizbeeTV.tv.isAdTrackingDisabled),VizbeeTV.tv.networkInfo&&(n.internalIp=VizbeeTV.tv.networkInfo.internalIP,n.bssid=VizbeeTV.tv.networkInfo.bssid,n.ssid=VizbeeTV.tv.networkInfo.ssid,n.isWifiConnected=VizbeeTV.tv.networkInfo.isWifiConnected,n.connectionType=VizbeeTV.tv.networkInfo.connectionType),VizbeeTV.tv.launchParamsDeferral&&(n.isLaunchedWithVizbee=VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()||!1),n}setCommonProperties(e){VizbeeSDK.logger.d("MetricsManager","setCommonProperties"),this.commonProperties.SCREEN_DEVICE_USERAGENT=Yi,this.commonProperties.SCREEN_IDFV=Yi,this.commonProperties.SCREEN_HOMESSO_USER_INFO={user_login:Yi,user_login_type:Yi,user_name:Yi,user_subscription_renewal_type:Yi,user_subscription_type:Yi,user_subscription_value:Yi},e.appId&&(this.commonProperties.APP_ID=e.appId),e.externalIp&&(this.commonProperties.EXTERNAL_IP_ADDRESS=e.externalIp),e.ipv6Address&&(this.commonProperties.IPV6_ADDRESS=e.ipv6Address),e.distinctId&&(this.commonProperties.distinct_id=e.distinctId),e.deviceId&&(this.commonProperties.SCREEN_DEVICE_ID=e.deviceId),e.appSessionId&&(this.commonProperties.SCREEN_APP_SESSION_ID=e.appSessionId),e.screenSdkId&&(this.commonProperties.SCREEN_SDK_ID=e.screenSdkId),e.internalIp&&(this.commonProperties.INTERNAL_IP_ADDRESS=e.internalIp,this.commonProperties.SCREEN_INTERNAL_IP=e.internalIp),"isWifiConnected"in e&&(this.commonProperties.WIFI_CONNECTED=e.isWifiConnected),e.connectionType&&(this.commonProperties.CONNECTION_TYPE=e.connectionType),e.bssid&&(this.commonProperties.WIFI_BSSID=e.bssid),e.ssid&&(this.commonProperties.WIFI_SSID=e.ssid),e.adId&&(this.commonProperties.SCREEN_IDFA=e.adId),null!=e.isAdTrackingDisabled&&(this.commonProperties.SCREEN_LIMIT_AD_TRACKING=e.isAdTrackingDisabled),e.macAddress&&(this.commonProperties.SCREEN_MAC_ADDRESS=e.macAddress),navigator&&navigator.userAgent&&(this.commonProperties.SCREEN_DEVICE_USERAGENT=navigator.userAgent),e.deviceType&&(this.commonProperties.SCREEN_DEVICE_TYPE=e.deviceType),e.deviceMake&&(this.commonProperties.SCREEN_DEVICE_MAKE=e.deviceMake),e.deviceModel&&(this.commonProperties.SCREEN_DEVICE_MODEL=e.deviceModel),e.deviceSerialNumber&&(this.commonProperties.SCREEN_SERIAL_NUMBER=e.deviceSerialNumber),e.friendlyName&&(this.commonProperties.SCREEN_FRIENDLY_NAME=e.friendlyName),e.osNativeVersion&&(this.commonProperties.SCREEN_NATIVE_OS_VERSION=e.osNativeVersion),e.osVersion&&(this.commonProperties.SCREEN_OS_VERSION=e.osVersion),null!=e.isLaunchedWithVizbee&&(this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE=e.isLaunchedWithVizbee),this.commonProperties.SCREEN_LAUNCHED_WITH_VIZBEE?this.commonProperties.SCREEN_VZB_LAUNCH_PARAM="y":this.commonProperties.SCREEN_VZB_LAUNCH_PARAM=$i,e.sdkVersion&&(this.commonProperties.SCREEN_SDK_VERSION=e.sdkVersion),e.timestamp&&(this.commonProperties.VZB_TIMESTAMP=e.timestamp),e.timezoneOffset&&(this.commonProperties.TIMEZONE=e.timezoneOffset),e.SCREEN_HOMESSO_USER_INFO&&(this.commonProperties.SCREEN_HOMESSO_USER_INFO=e.SCREEN_HOMESSO_USER_INFO)}setAttributesProviderProperties(e,t){if(0==this.attributesProvidersList.length)return void t(e);const i=this.attributesProvidersList.map(e=>e.provider.getAttributes());Promise.all(i).then(i=>{i.forEach(t=>{t&&(e=P.extend(e,t))}),t(e)}).catch(i=>{console.error("Error getting attributes:",i),t(e)})}setCustomProperties(e){VizbeeSDK.logger.d("MetricsManager","setCustomProperties"),P.each(e,(e,t)=>{this.commonProperties["CUSTOM_"+t]=e})}addProvider(e,t){VizbeeSDK.logger.d("MetricsManager","addProvider"),this.attributesProvidersList.push({provider:e,filterRegEx:t})}removeProvider(e){VizbeeSDK.logger.d("MetricsManager","removeProvider"),this.attributesProvidersList=P.reject(this.attributesProvidersList,t=>t.provider==e)}trackEvent(e,t){this.shouldTrack(e,t)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackEvent",e);let i=P.extend({},this.commonProperties,t);this.track(e,i)})}trackScreenLaunched(){this.shouldTrack("SCREEN_LAUNCHED",this.commonProperties)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenLaunched");let e=P.extend({},this.commonProperties,this.buildPlayerProperties());this.track("SCREEN_LAUNCHED",e)})}trackScreenTVViewLoad(e){this.shouldTrack("SCREEN_TV_VIEW_LOAD",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewLoad"),this.commonProperties.distinct_id=this.commonProperties.APP_ID+":"+this.commonProperties.SCREEN_DEVICE_TYPE+":"+M.uuidv4()+":"+Date.now(),this.needToSetDistinctIdForVideoEvents=!1;let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildNewScreenTVViewProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_LOAD",t)})}trackScreenTVViewStart(e){this.shouldTrack("SCREEN_TV_VIEW_START",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewStart"),this.needToSetDistinctIdForVideoEvents&&(this.commonProperties.distinct_id&&-1==this.commonProperties.distinct_id.indexOf(this.commonProperties.SCREEN_DEVICE_TYPE)&&(this.commonProperties.APP_ID,this.commonProperties.SCREEN_DEVICE_TYPE,M.uuidv4(),Date.now()),this.needToSetDistinctIdForVideoEvents=!0);let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewStartProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildScreenTVViewStartTimeQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_START",t)})}trackScreenTVViewPause(e){this.shouldTrack("SCREEN_TV_VIEW_PAUSE",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewPause");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_PAUSE",t)})}trackScreenTVViewResume(e){this.shouldTrack("SCREEN_TV_VIEW_RESUME",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewResume");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewResumeProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track("SCREEN_TV_VIEW_RESUME",t)})}trackScreenTVViewDuration(e){this.shouldTrack("SCREEN_TV_VIEW_DURATION",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewDuration");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));t.SCREEN_HOMESSO_USER_INFO=void 0,this.track("SCREEN_TV_VIEW_DURATION",t)})}trackScreenTVViewError(e){let t="SCREEN_TV_VIEW_ERROR";this.shouldTrack(t,e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVViewError");let i=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenTVViewErrorProperties(e),this.buildScreenTVViewDurationProperties(e),this.buildScreenTVViewQualityProperties(e),this.buildStreamInfoAndMetadataProperties(e));this.track(t,i)})}trackScreenAdView(e){this.shouldTrack("SCREEN_AD_VIEW",e)&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenAdView","tracking SCREEN_AD_VIEW");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this.buildScreenAdViewProperties(e));this.track("SCREEN_AD_VIEW",t)})}trackScreenRemoteConnected(e){e&&this.shouldTrack("SCREEN_REMOTE_CONNECTED")&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenRemoteConnected");let t=P.extend({},this.commonProperties,this.buildPlayerProperties(),this._buildSenderProperties(e));this.track("SCREEN_REMOTE_CONNECTED",t)})}trackScreenTVSignin(e){e&&this.shouldTrack("SCREEN_TV_SIGNIN")&&this._setUpdatedCommonProperties(()=>{VizbeeSDK.logger.d("MetricsManager","trackScreenTVSignin");let t=P.extend({},this.commonProperties,this.buildScreenTVSigninProperties(e));this.track("SCREEN_TV_SIGNIN",t)})}_buildSenderProperties(e){return e&&e.ssinfo?{CONNECTED_REMOTE:e.ssinfo}:{}}metricsConfig(){return this.config.metricsParams}isVideoEvent(e){return-1!=["SCREEN_TV_VIEW_LOAD","SCREEN_TV_VIEW_START","SCREEN_TV_VIEW_PAUSE","SCREEN_TV_VIEW_RESUME","SCREEN_TV_VIEW_DURATION","SCREEN_AD_VIEW"].indexOf(e)}isValidContinuityEvent(e){return-1!=["SCREEN_LAUNCHED","SCREEN_REMOTE_CONNECTED","SCREEN_TV_SIGNIN","SCREEN_TV_VIEW_LOAD","SCREEN_TV_VIEW_START","SCREEN_TV_VIEW_PAUSE","SCREEN_TV_VIEW_RESUME","SCREEN_TV_VIEW_DURATION","SCREEN_TV_VIEW_ERROR","SCREEN_AD_VIEW"].indexOf(e)}isValidHomeSSOEvent(e){return-1!=["SCREEN_HOMESSO_SIGNIN_RECEIVED","SCREEN_HOMESSO_SIGNIN_STATUS"].indexOf(e)}shouldTrack(e,t){if(0==Object.keys(this.config).length)return void VizbeeSDK.logger.e("MetricsManager","shouldTrack","called with empty config!");let i=!0;return this.isValidContinuityEvent(e)?this.isVideoEvent(e)&&this.metricsConfig()&&this.metricsConfig().shouldSendViewEventsOnlyOnCast&&t&&!t.isVideoLaunchedFromPhone&&(i=!1):this.isValidHomeSSOEvent(e)||(i=!1),i}track(e,t){this.metricsRouter.track(e,t)}buildPlayerProperties(){let e={PLAYER_NAME:"UNKNOWN"};return VizbeeTV.tv.player&&(e.PLAYER_NAME=VizbeeTV.tv.player.getName()),e}buildVideoProperties(e){return{VIDEO_ID:e.videoId,VIDEO_TITLE:e.videoTitle,VIDEO_START_TIME:e.videoStartTime,VIDEO_DURATION_MS:Math.round(e.videoDuration),IS_LIVE:e.isLive,IS_CONTINUED_VIEW:e.isContinuedView,IS_VIDEO_LAUNCHED_FROM_PHONE:e.isVideoLaunchedFromPhone}}buildNewScreenTVViewProperties(e){return this.buildVideoProperties(e)}buildScreenTVViewStartProperties(e){return this.buildVideoProperties(e)}buildScreenTVViewResumeProperties(e){return P.extend({VIDEO_PAUSED_TIME_MS:Math.round(e.videoPausedTimeInMs)},this.buildScreenTVViewDurationProperties(e))}buildScreenTVViewDurationProperties(e){return P.extend({VIDEO_POSITION_MS:Math.round(e.videoPosition),VIDEO_POSITION_MIN:e.videoPostitionMin,VIDEO_ELAPSED_TIME_MS:Math.round(e.videoElapsedTime),VIDEO_ELAPSED_TIME_MIN:e.videoElapsedTimeMin},this.buildVideoProperties(e))}buildStreamInfoAndMetadataProperties(e){let t={};try{if(e.customStreamInfo&&e.customMetadata){let i={customStreamInfo:e.customStreamInfo,customMetadata:e.customMetadata};t=P.extend({},M.flatten(i))}}catch(e){}return t}buildScreenTVViewQualityProperties(e){(!e.startTime||e.startTime<0)&&(e.startTime=0);let t=e.startTime/1e3,i=e.videoBufferLevel?e.videoBufferLevel.current:0,r=e.audioBufferLevel?e.audioBufferLevel.current:0,n=e.audioBufferLevel?e.audioBufferLevel.didDetectSeparateAudio:"UNKNOWN",s=2*Math.ceil(t/2),a=2*Math.ceil(i/2),o=2*Math.ceil(r/2);return P.extend({START_TIME_SEC:t||0,VIDEO_BUFFER_SEC:i||0,AUDIO_BUFFER_SEC:r||0,AUDIO_STREAM_DETECTED:n,START_TIME_2SEC_BIN:s||0,VIDEO_BUFFER_2SEC_BIN:a||0,AUDIO_BUFFER_2SEC_BIN:o||0},this.buildVideoProperties(e))}buildScreenTVViewStartTimeQualityProperties(e){return e&&P.get(this.config,["features","sendStartTimeQualityInfo"])?{PRE_ROLL_AD_POD_START_TIME_MS:e.adPodStartedTimeInMs?e.adPodStartedTimeInMs:0,PRE_ROLL_AD_POD_END_TIME_MS:e.adPodEndedTimeInMs?e.adPodEndedTimeInMs:0,VIDEO_LOAD_RECEIVED_BY_APP_TIME_MS:e.loadReceivedByAppTimeInMs?e.loadReceivedByAppTimeInMs:0,VIDEO_LOAD_RECEIVED_BY_PLAYER_TIME_MS:e.loadReceivedByPlayerTimeInMs?e.loadReceivedByPlayerTimeInMs:0,VIDEO_METADATA_LOADED_TIME_MS:e.metadataLoadedTimeInMs?e.metadataLoadedTimeInMs:0,VIDEO_PLAYER_READY_TIME_MS:e.playerReadyToPlayTimeInMs?e.playerReadyToPlayTimeInMs:0,VIDEO_PLAYBACK_STARTED_TIME_MS:e.playbackStartedTimeInMs?e.playbackStartedTimeInMs:0}:{}}buildScreenTVViewErrorProperties(e){return P.extend({VIDEO_POSITION_MS:Math.round(e.videoPosition),FAILURE_VALUE:e.failureValue,FAILURE_CODE:e.failureCode},this.buildVideoProperties(e))}buildScreenAdViewProperties(e){return{SCREEN_AD_ID:e.adId,AD_DURATION:e.adDuration,VIDEO_ID:e.videoId,VIDEO_TITLE:e.videoTitle,VIDEO_DURATION_MS:Math.round(e.videoDuration),VIDEO_POSITION_MS:Math.round(e.videoPosition),IS_LIVE:e.isLive,IS_VIDEO_LAUNCHED_FROM_PHONE:e.isVideoLaunchedFromPhone}}buildScreenTVSigninProperties(e){return{USER_ID:e.userId,USER_LOGIN:e.userLogin,USER_LOGIN_TYPE:e.userLoginType}}_setUpdatedCommonProperties(e){let t={};this.commonProperties.adId&&this.commonProperties.adId!=Yi||(t.adId=VizbeeTV.tv.adId||Yi),this.commonProperties.isAdTrackingDisabled&&this.commonProperties.isAdTrackingDisabled!=Yi||(t.isAdTrackingDisabled=VizbeeTV.tv.isAdTrackingDisabled||Yi),VizbeeTV.tv.deviceInfo&&(VizbeeTV.tv.deviceInfo.deviceId&&VizbeeTV.tv.deviceInfo.deviceId!=Yi&&(t.deviceId=VizbeeTV.tv.deviceInfo.deviceId),VizbeeTV.tv.deviceInfo.model&&VizbeeTV.tv.deviceInfo.model!=Yi&&(t.deviceModel=VizbeeTV.tv.deviceInfo.model)),this.setAttributesProviderProperties(t,t=>{this.setCommonProperties(t),e()})}};const Zi="receiver_with_applets";class Xi extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.currentVideoId=void 0,this.didLogStartVideo=!1,this.lastLoggedVideoPostition2XMin=-1,this.elapsedLastPlayingTimestamp=void 0,this.elapsedPlayingTime=0,this.targetAppType=this.appConfig&&this.appConfig.features&&this.appConfig.features.targetAppType,this.senderMap={}}connect(e){Qi.init(this.appConfig);const t=VizbeeTV.tv.launchParamsDeferral;t&&"function"==typeof t.waitUntilReady?t.waitUntilReady().then(()=>{Qi.refreshLaunchParamProperties(),Qi.trackScreenLaunched()}):Qi.trackScreenLaunched(),super.connect(e)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){if(this.currentVideoId!=e.vstatus.id&&(this.currentVideoId=e.vstatus.id,this.didLogStartVideo=!1,this.lastLoggedVideoPostition2XMin=-1,this.elapsedLastPlayingTimestamp=Date.now(),this.elapsedPlayingTime=0,VizbeeSDK.logger.d("MetricsExtension","interceptVideoStatus","logging new video"),Qi.trackScreenTVViewLoad({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du||-1,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee})),"PLAYING"==e.vstatus.st&&(e.vinfo.islive||!e.vinfo.islive&&e.vstatus.po>0)){if(!this.didLogStartVideo){VizbeeSDK.logger.d("MetricsExtension","interceptVideoStatus","logging start video");var t=e.vinfoext.qos||{};Qi.trackScreenTVViewStart({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:t.starttime||0,audioBufferLevel:t.audiobufferlevel||{},videoBufferLevel:t.videobufferlevel||{},adPodStartedTimeInMs:t.adPodStartedTimeInMs||0,adPodEndedTimeInMs:t.adPodEndedTimeInMs||0,loadReceivedByAppTimeInMs:t.loadReceivedByAppTimeInMs||0,loadReceivedByPlayerTimeInMs:t.loadReceivedByPlayerTimeInMs||0,metadataLoadedTimeInMs:t.metadataLoadedTimeInMs||0,playerReadyToPlayTimeInMs:t.playerReadyToPlayTimeInMs||0,playbackStartedTimeInMs:t.playbackStartedTimeInMs||0}),this.didLogStartVideo=!0}this.elapsedPlayingTime=this.elapsedPlayingTime+(Date.now()-this.elapsedLastPlayingTimestamp),this.elapsedLastPlayingTimestamp=Date.now();let i=2*Math.floor(e.vstatus.po/12e4);i>this.lastLoggedVideoPostition2XMin&&(this.lastLoggedVideoPostition2XMin=i,Qi.trackScreenTVViewDuration({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:this.lastLoggedVideoPostition2XMin,videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}))}return"FAILED"==e.vstatus.st&&Qi.trackScreenTVViewError({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,isLive:e.vinfo.islive,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:this.lastLoggedVideoPostition2XMin,videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,failureValue:e.vstatus.er.reason,failureCode:e.vstatus.er.code,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}),["INTERRUPTED","FINISHED","FAILED"].indexOf(e.vstatus.st)>-1&&(this.currentVideoId=void 0),e}handleSyncReceiveEvent(e){let t=e.data;if(t&&t.b&&t.b.cmd&&"video"===t.b.cmd.ns&&"event"===t.b.cmd.name&&t.b.einfo&&"tv.vizbee.homesign.signin"==t.b.einfo.type){let e=t.b.einfo.data&&t.b.einfo.data.authInfo;e&&Qi.trackScreenTVSignin(e)}return e}handleNonSyncReceiveEvent(e){if(e&&e.type==ft.SYNC_PRESENCE){let t=e.data;if(t&&this.senderMap){let e=Object.keys(this.senderMap),i=Object.keys(t);i.length>e.length?i.forEach(e=>{this.senderMap[e]||(!t[e]||"vzb0000000"===t[e].appId&&this.targetAppType===Zi||(VizbeeSDK.logger.d("MetricsExtension","handleNonSyncReceiveEvent","new sender connected, id = "+e),Qi.trackScreenRemoteConnected(t[e])),this.senderMap[e]=t[e])}):i.length<e.length&&e.forEach(e=>{-1==i.indexOf(e)&&(VizbeeSDK.logger.d("MetricsExtension","handleNonSyncReceiveEvent","sender disconnected, id = "+e),delete this.senderMap[e])})}}return e}}class er extends Li{constructor(e,t){super(e,t),this.appConfig=t,this.currentVideoId=void 0,this.elapsedLastPlayingTimestamp=void 0,this.elapsedPlayingTime=0,this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1}connect(e){Qi.init(this.appConfig),super.connect(e)}send(e){if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),super.send(t)}interceptVideoStatus(e){return this.currentVideoId!=e.vstatus.id&&(this.currentVideoId=e.vstatus.id,this.elapsedLastPlayingTimestamp=Date.now(),this.elapsedPlayingTime=0,this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1),"PLAYING"==e.vstatus.st&&(e.vinfo.islive||!e.vinfo.islive&&e.vstatus.po>0)&&(this.elapsedPlayingTime=this.elapsedPlayingTime+(Date.now()-this.elapsedLastPlayingTimestamp),this.elapsedLastPlayingTimestamp=Date.now(),this.didLogPauseVideo&&(VizbeeSDK.logger.debug("FilterPauseResumeEventsExtension::interceptVideoStatus - logging resume video"),Qi.trackScreenTVViewResume({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:2*Math.floor(e.vstatus.po/12e4),videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),videoPausedTimeInMs:Date.now()-this.videoPausedTimestamp,isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel})),this.videoPausedTimestamp=-1,this.didLogPauseVideo=!1),"PAUSED_BY_USER"==e.vstatus.st&&(-1==this.videoPausedTimestamp&&(this.videoPausedTimestamp=Date.now()),!this.didLogPauseVideo&&Date.now()-this.videoPausedTimestamp>=15e3&&(VizbeeSDK.logger.debug("FilterPauseResumeEventsExtension::interceptVideoStatus - logging pause video"),Qi.trackScreenTVViewPause({videoId:e.vstatus.id,videoTitle:e.vinfoext.title||e.vinfo.url,videoStartTime:e.vinfoext.videostarttime,videoDuration:e.vstatus.du,videoPosition:e.vstatus.po,videoPostitionMin:2*Math.floor(e.vstatus.po/12e4),videoElapsedTime:this.elapsedPlayingTime,videoElapsedTimeMin:2*Math.floor(this.elapsedPlayingTime/12e4),isLive:e.vinfo.islive,customStreamInfo:e.vinfoext.customstreaminfo,customMetadata:e.vinfoext.custommetadata,isContinuedView:!(!e.qstatus||!e.qstatus.prev),isVideoLaunchedFromPhone:e.vinfoext.wasVideoStartedByVizbee,startTime:e.vinfoext.qos.starttime,audioBufferLevel:e.vinfoext.qos.audiobufferlevel,videoBufferLevel:e.vinfoext.qos.videobufferlevel}),this.didLogPauseVideo=!0)),["INTERRUPTED","FINISHED","FAILED"].indexOf(e.vstatus.st)>-1&&(this.currentVideoId=void 0),e}}var tr=E(dt());class ir extends Li{constructor(e,t){if(super(e,t),this.enable=!0,t&&t.features&&t.features.SubtitlesExtension){let e=t.features.SubtitlesExtension;null!=e.enable&&(this.enable=e.enable)}}_isEnabled(){return this.enable}handleSyncReceiveEvent(e){let t=e.data;if(VizbeeSDK.logger.verbose(`SubtitlesExtension::handleSyncReceiveEvent - received message data = ${JSON.stringify(t)}`),!(t&&t.b&&t.b.cmd))return e;let i=t.b.cmd.name;if(!(i&&["enabletrack","disabletrack"].indexOf(i.toLowerCase())>-1))return e;if(this._isEnabled()){let e=Number(t.b.cmd.param);if(!isNaN(e)){let i=[e];"enabletrack"===t.b.cmd.name?tr.enableTracks(i):tr.disableTracks(i)}}}send(e){if(!e||!e.cmd)return void super.send(e);let t=e,i="status"==e.cmd.name,r="hello"==e.cmd.name&&"rsp"==e.cmd.type&&e.vstatus;(i||r)&&(t=this._interceptVideoStatus(e)),super.send(t)}_interceptVideoStatus(e){return this._addTrackStatus(e)}_addTrackStatus(e){if(!e||!e.vstatus)return e;if(e.vstatus.tr||(e.vstatus.tr={}),!this._isEnabled())return e;let t=this._getTextTrackStatus();return e.vstatus.tr.availableTextTracks=t.availableTextTracks,e.vstatus.tr.currentTextTrack=t.currentTextTrack,e}_getTextTrackStatus(){let e={},t=tr.getTracks(i),r=tr.getEnabledTracks(i);if(t&&Array.isArray(t)&&t.length>0&&(t.forEach(t=>{let i=t.toJSON();i&&(e.availableTextTracks||(e={availableTextTracks:[],currentTextTrack:{}}),e.availableTextTracks.push({screenTrackId:i.id,languageCode:i.lang}))}),r&&Array.isArray(r)&&r.length>0)){let t=r[0].toJSON();t&&(e.currentTextTrack={screenTrackId:t.id,languageCode:t.lang})}return e}}class rr extends Li{constructor(e,t){if(super(e,t),this.enable=!0,t&&t.features&&t.features.AudioTracksExtension){let e=t.features.AudioTracksExtension;null!=e.enable&&(this.enable=e.enable)}}_isEnabled(){return this.enable}handleSyncReceiveEvent(e){if(!this._isEnabled())return e;let t=e.data;if(VizbeeSDK.logger.verbose(`AudioTracksExtension::handleSyncReceiveEvent - received message data = ${JSON.stringify(t)}`),!(t&&t.b&&t.b.cmd))return e;let i=t.b.cmd.name;if(!i||"string"!=typeof i||"changeaudiotrack"!==i.toLowerCase())return e;let r=Number(t.b.cmd.param);isNaN(r)?VizbeeSDK.logger.debug(`AudioTracksExtension::handleSyncReceiveEvent - received changeAudioTrack command with invalid trackId = ${r}`):(VizbeeSDK.logger.debug(`AudioTracksExtension::handleSyncReceiveEvent - received changeAudioTrack command with trackId = ${r}`),tr.changeAudioTrack(r))}send(e){if(!e||!e.cmd)return void super.send(e);let t=e,i="status"==e.cmd.name,r="hello"==e.cmd.name&&"rsp"==e.cmd.type&&e.vstatus;(i||r)&&(t=this._interceptVideoStatus(e)),VizbeeSDK.logger.verbose("AudioTracksExtension::send - forwarding out message",t),super.send(t)}_interceptVideoStatus(e){return this._addAudioTrackStatus(e)}_addAudioTrackStatus(e){if(!e||!e.vstatus)return e;if(e.vstatus.tr||(e.vstatus.tr={}),!this._isEnabled())return e;let t=this._getAudioTrackStatus();return e.vstatus.tr.availableAudioTracks=t.availableAudioTracks,e.vstatus.tr.currentAudioTrack=t.currentAudioTrack,e}_getAudioTrackStatus(){let e={},t=tr.getAudioTracks(r),i=tr.getActiveAudioTrack(r);return t&&Array.isArray(t)&&t.length>0&&(t.forEach(t=>{let i=t.toJSON();i&&(e.availableAudioTracks||(e={availableAudioTracks:[],currentAudioTrack:{}}),e.availableAudioTracks.push({screenTrackId:i.id,languageCode:i.lang,displayName:i.label}))}),i&&null!=i.id&&(e.currentAudioTrack={screenTrackId:i.id,languageCode:i.lang,displayName:i.label})),e}}class nr{static getVideoInfo(e){var t=e.data||{},i={};VizbeeSDK.logger.info("ChromecastToSyncConverter::getVideoInfo",JSON.stringify(t)),i.starttime=t.currentTime||0;var r=t.media;if(r){i.islive="LIVE"==r.streamType,i.videourl=r.contentUrl||r.contentId||"",i.contentType=r.contentType||"",i.tracks=r.tracks||[];var n=r.customData||{};i.id=n.guid||i.videourl,i.cuepoints=n.cuepoints||[],i.vzbSenderOS=n.vzbSenderOS,i.vzbVersion=n.vzbVersion,i.senderInfo={st:n.vzbSenderOS,version:n.vzbVersion},i.customstreaminfo=n.customStreamInfo||{},i.custommetadata=n.customMetadata||{},i.drminfo=n.drmInfo||{};var s=r.metadata;s&&(i.title=s.title||"",i.subtitle=s.subtitle||"",i.imgurl="",s.images&&s.images.length>0&&(i.imgurl=s.images[0].url))}return VizbeeSDK.logger.info("ChromecastToSyncConverter::getVideoInfo",e,i),i}}const sr=[Oi,xi,Ui,Ki,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("ExitOnLastMessageRecvExtension::constructor()"),super(e,t)}handleSyncReceiveEvent(e){let t=e.data;if(VizbeeSDK.logger.verbose(`ExitOnLastMessageRecvExtension::onReceiveHandler() ${this.appConfig.appId}`,t),VizbeeSDK.logger.verbose("ExitOnLastMessageRecvExtension::onReceiveHandler getActiveSendersCount - cmd ",this.getActiveSendersCount(),t.b?t.b.cmd.name:""),!t.b||"exit"!==t.b.cmd.name)return e;"user_invoked_disconnect"===t.b.cmd.param&&0==this.getActiveSendersCount()&&this.appConfig.features&&this.appConfig.features.shouldExitOnLastSender&&(VizbeeSDK.logger.debug("ExitOnLastMessageRecvExtension::onReceiveHandler getActiveSendersCount is zero - going to exit the receiver app"),VizbeeTV.tv.exit())}},Bi,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("FilterMessageSendExtension::constructor()"),super(e,t),this.shouldFilterAllMessagesOnLastSenderExit=t&&t.features&&t.features.shouldFilterAllMessagesOnLastSenderExit}send(e){if(!e||!e.cmd)return void super.send(e);let t=this.getActiveSendersCount();if(!(this.shouldFilterAllMessagesOnLastSenderExit&&t<=0))return"status"==e.cmd.name?e.vstatus&&-1!=["FINISHED","INTERRUPTED","FAILED"].indexOf(e.vstatus.st)?(VizbeeSDK.logger.debug(`FilterMessageSendExtension::send message.vstatus.st: ${e.vstatus.st}`),void super.send(e)):void(0!==t?super.send(e):VizbeeSDK.logger.verbose("FilterMessageSendExtension::send senders not available: MESSAGE NOT SENT",this.getActiveSendersCount(),e)):void super.send(e);VizbeeSDK.logger.verbose("FilterMessageSendExtension::send filtering all messages as senders are not available and shouldFilterAllMessagesOnLastSenderExit is set")}},Hi,er,Xi,class extends Li{constructor(e,t){VizbeeSDK.logger.debug("DisconnectSendersInBackgroundExtension::constructor()",e,t.appId),super(e,t),this._enable=!1,this._senderAliveTimeoutWithFGFlagInMs=6e4,this._senderAliveTimeoutWithoutFGFlagInMs=72e4,this._senderAliveCheckTimer=void 0,this._senderAliveTimerWithFGFlag=void 0,this._senderAlivetTimerWithoutFGFlag=void 0,this._androidSendersInBackgroundMap={},this._androidSendersWithoutFGFlagMap={},this._getExtensionConfigData(t)}_getExtensionConfigData(e){if(e&&e.features&&e.features.DisconnectSendersInBackgroundExtension){let t=e.features.DisconnectSendersInBackgroundExtension;1==t.enable&&(this._enable=!0,null!=t.senderAliveTimeoutWithFGFlagInMs&&(this._senderAliveTimeoutWithFGFlagInMs=t.senderAliveTimeoutWithFGFlagInMs),null!=t.senderAliveTimeoutWithoutFGFlagInMs&&(this._senderAliveTimeoutWithoutFGFlagInMs=t.senderAliveTimeoutWithoutFGFlagInMs))}}disconnect(){VizbeeSDK.logger.debug("DisconnectSendersInBackgroundExtension::disconnect()"),this._stopAllTimers(),this._resetToDefault(),super.disconnect()}handleSyncReceiveEvent(e){if(!this._enable)return e;let t=e.data;if(t&&t.h){let e=t.h.ty&&t.h.ty.toLowerCase(),i=t.h.st&&t.h.st.toLowerCase();e&&"remote"==e&&i&&"android"==i&&(t.h.ssinfo&&null!=t.h.ssinfo.IS_IN_FOREGROUND?0==t.h.ssinfo.IS_IN_FOREGROUND?this._androidSendersInBackgroundMap[t.h.id]||(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::handleSyncReceiveEvent - adding new sender to the map"),this._androidSendersInBackgroundMap[t.h.id]=Date.now()):this._androidSendersInBackgroundMap={}:this._androidSendersWithoutFGFlagMap[t.h.id]||(this._androidSendersWithoutFGFlagMap[t.h.id]=Date.now(),VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::handleSyncReceiveEvent - adding new sender to the map")))}return this._startSenderAliveCheckTimer(),e}_startSenderAliveCheckTimer(){this._stopSenderAliveCheckTimer(),this._senderAliveCheckTimer=window.setInterval(()=>{this._checkSenderStatusAndSendOlleh()},1e3)}_checkSenderStatusAndSendOlleh(){this._handleSendersInBackground(),this._handleSendersWithoutFGFlag()}_handleSendersInBackground(){let e=Date.now();P.keys(this._androidSendersInBackgroundMap).filter(t=>e-this._androidSendersInBackgroundMap[t]>this._senderAliveTimeoutWithFGFlagInMs).length>0&&(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::_handleSendersInBackground - sending olleh as there are no senders in foreground"),this._sendOllehMessage(),this._resetToDefault())}_handleSendersWithoutFGFlag(){let e=Date.now(),t=P.keys(this._androidSendersWithoutFGFlagMap),i=P.keys(this._androidSendersWithoutFGFlagMap).filter(t=>e-this._androidSendersWithoutFGFlagMap[t]>this._senderAliveTimeoutWithoutFGFlagInMs);i.length>0&&t.length==i.length&&(VizbeeSDK.logger.info("DisconnectSendersInBackgroundExtension::_handleSendersWithoutFGFlag - sending olleh as there are no senders in foreground"),this._sendOllehMessage(),this._resetToDefault())}_sendOllehMessage(){this.dispatchReceive(new gt(ft.SYNC_MESSAGE,{b:{cmd:{ns:"video",name:"olleh",type:"int"},hstatus:{id:this.appConfig.deviceId,type:"SCREEN",vip:"false"}}}))}_resetToDefault(){this._stopAllTimers(),this._androidSendersInBackgroundMap={},this._androidSendersWithoutFGFlagMap={}}_stopAllTimers(){this._stopSenderAliveCheckTimer(),this._stopDisconnetionTimerWithIsInFGFlag(),this._stopDisconnetionTimerWithoutIsInFGFlag()}_stopSenderAliveCheckTimer(){this._senderAliveCheckTimer&&(window.clearInterval(this._senderAliveCheckTimer),this._senderAliveCheckTimer=void 0)}_stopDisconnetionTimerWithIsInFGFlag(){this._senderAliveTimerWithFGFlag&&(window.clearTimeout(this._senderAliveTimerWithFGFlag),this._senderAliveTimerWithFGFlag=void 0)}_stopDisconnetionTimerWithoutIsInFGFlag(){this._senderAliveWithoutFGFlagTimer&&(window.clearTimeout(this._senderAliveWithoutFGFlagTimer),this._senderAliveWithoutFGFlagTimer=void 0)}},ir,rr],ar=[Oi,xi,Ui,Ki,Bi,Hi,er,Xi,ir,rr,class extends Li{constructor(e,t){if(super(e,t),this.queueManager=void 0,this.enable=!1,t&&t.features&&t.features.QueueManagerExtension){let e=t.features.QueueManagerExtension;e.enable&&(this.enable=e.enable)}}isEnabled(){return!!this.enable}getQueueManager(){if(!this.queueManager){const e=cast.framework.CastReceiverContext.getInstance();this.queueManager=e.getPlayerManager().getQueueManager()}return this.queueManager}send(e){if(!this.isEnabled())return void super.send(e);if(!e||!e.cmd)return void super.send(e);let t=e;"status"==e.cmd.name&&(t=this.interceptVideoStatus(e)),t&&super.send(t)}interceptVideoStatus(e){let t=e;if(t=this._addQStatus(e),"FINISHED"!=t.vstatus.st||!t.qstatus||!t.qstatus.next)return t}_addQStatus(e){let t={},i=!1,r=[];if(this.getQueueManager()&&(r=this.getQueueManager().getItems()),0==r.length)return e;let n=this.getQueueManager().getCurrentItem(),s=P.find(r,e=>e.orderId==n.orderId-1);if(s){i=!0;let e=nr.getVideoInfo({data:s});t.prev=Ri.encodeVideoInfo(e)}let a=P.find(r,e=>e.orderId==n.orderId+1);if(a){i=!0;let e=nr.getVideoInfo({data:a});t.next=Ri.encodeVideoInfo(e)}return i&&(e.qstatus=t),e}}];let or;class lr{createSync(e){let t=P.get(e,["syncInfo","syncMethod"],"pubnub").toLowerCase();return"googlecustom"==t?(or=this.getGoogleCustomSyncInstanceWitExtensions(e),or):"googledual"==t?(or=this.getGoogleDualSyncInstanceWitExtensions(e),or):(or=this.getDefaultSyncInstanceWitExtensions(e),or)}static getSync(){return or}getGoogleCustomSyncInstanceWitExtensions(e){return this.addExtensions(e,this.getGoogleCastSync(e),ar)}getGoogleDualSyncInstanceWitExtensions(e){let t=this.addExtensions(e,new Di(e),sr),i=this.addExtensions(e,this.getGoogleCastSync(e),ar),r=new wi(e);return r.addSyncInstance(t),r.addSyncInstance(i),r}getDefaultSyncInstanceWitExtensions(e){return this.addExtensions(e,new Di(e),sr)}addExtensions(e,t,i){for(let r=0;r<i.length;r++)t=new(0,i[r])(t,e);return t}getGoogleCastSync(e){return cast.framework?new null(e):new Mi(e)}}let dr=function(e){return e[e.NOT_CONNECTED=1]="NOT_CONNECTED",e[e.CONNECTING=2]="CONNECTING",e[e.CONNECTED=3]="CONNECTED",e}({});var cr,ur,pr,hr,gr,fr,vr,yr,mr,br,Sr=I(),_r=ct(),Tr=function(){if(et)return Xe;et=1,I();var e={},t={};function i(){VizbeeSDK.logger.debug("VGAStateManager:reset() previous video and ad objects = ",e,t),e.id="",e.state="UNKNOWN",e.position=-1,e.duration=-1,t.id="",t.state="UNKNOWN",t.position=-1,t.duration=-1}return i(),Xe={type:"VGAStateManager",app:{state:"app"},video:e,ad:t,reset:i,addListener:function(e){},removeListener:function(){}}}(),Er=we(),Ir=ut(),Pr=dt(),Vr=pt(),Ar=750;let Cr;class kr{static getInstance(){return null==Cr&&(Cr=new kr),Cr}getQueueManager(){return null==this.queueManager&&(this.queueManager=new null(null.getInstance())),VizbeeSDK.logger.debug("ContinuityContext::getQueueManager - returning queue manager",this.queueManager),this.queueManager}}var Dr,Mr,wr,Nr=I(),Or=function(){if(Ie)return Ee;Ie=1;var e,t,i=Pe().xhr,r=I(),n={appId:null,config:null,pub_key:"pub-c-1e4f216f-168e-4fdc-8a2b-a29ffe05cb5b",sub_key:"sub-c-6da25f1b-58d7-4f17-bd10-21a30198a794"};return Ee={appConfig:n,getConfig:function(s,a){n.appId=s.appId,n.platform=s.platform,n.platformModel=s.platformModel,n.hostProxy=s.hostProxy,function(){var r="config.claspws.tv";n.hostProxy&&(r=n.hostProxy),e=n.platform,t=n.platformModel;var s="//"+r+"/api/v2/";s+="apps/"+n.appId+"/screen/"+e,t&&(s+="."+t);let a=!1;if(window&&window.navigator&&window.navigator.language){var o=window.navigator.language.split("-");o.length>1&&(s+="?country="+o[1],a=!0)}return s+=(a?"&":"?")+"seed="+Math.round(1e3*Math.random()),VizbeeSDK.logger.debug("Config:getAPIConfig - didn't find any saved config from local storage. Calling config server ..."),s="https:"+s,VizbeeSDK.logger.debug("Config:getAPIConfig - URL = "+s),i({url:s,retries:3,timeout:3e4,headers:{Accept:"application/json"}}).then(function(e){if(e&&e.error&&100==e.error.code)return VizbeeSDK.logger.error("Config:getAPIConfig - received error code and message = ",e.error.code,e.error.message),VizbeeSDK.logger.error("Config:getAPIConfig - screen device may not be allowed or setup. Screen device platform = ",n.platform),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject(e.error);if(e&&e.data&&e.data.items&&e.data.items[0]){if(e.data.items[0].channelKeys.pub_key&&e.data.items[0].channelKeys.sub_key){var t=e.data.items[0];return t.externalIp=e.externalIpAddress,VizbeeSDK.logger.debug("Config:getAPIConfig - valid config returned by API",t),VizbeeSDK.logger.debug("Config:getAPIConfig - SDK init SUCCESS!"),t}return VizbeeSDK.logger.error("Config:getAPIConfig - got config response but no channel pub keys or sub keys!"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject("No pub sub keys for given appId")}return VizbeeSDK.logger.error("Config:getAPIConfig - invalid response (but no error!) returned by server"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject("Invalid response")}).catch(function(e){return VizbeeSDK.logger.error("Config:getAPIConfig - XHR request to get config failed"),VizbeeSDK.logger.error("Config:getAPIConfig - SDK init FAILED!"),Promise.reject(e)})}().then(function(e){VizbeeSDK.logger.debug("Config:getConfig - got apiConfig",e),r.extend(n,e),e.channelKeys.pub_key&&e.channelKeys.sub_key&&(n.pub_key=e.channelKeys.pub_key,n.sub_key=e.channelKeys.sub_key),"function"==typeof a&&(VizbeeSDK.logger.debug("Config:getConfig - calling callback with extended config =",n),a(n))}).catch(function(e){var t="SDK CONFIG FETCH FAILED";null!=e&&(t+=" - "+e.message);var i=new Error(t);VizbeeSDK.logger.critical("Config::getConfig - SDK CONFIG FETCH FAILED",i),VizbeeSDK.logger.error("Config::getConfig - NOTE - could be a failure in the callback passed to getConfig!")})}},Ee}(),xr=De,zr=function(e,t){var i,r=e,n=void 0,s=void 0,a=!1,o=!1,l=!1,d=!1;let c=r&&r.features&&r.features.syncSendIntervalInMs;isNaN(c)||(Ar=c);var u=[],p=[],h={};return t?(a=!0,i=Tr):(a=!1,i=_r,Pr.setAppStateManager(_r),Vr.addListener(function(e){VizbeeSDK.logger.debug("synccontroller",e),"sync_proxy_video_cmds"==e.type&&("x"===e.cmd.name||"event"===e.cmd.name?(delete e.type,n.send(e)):v(e))})),{connect:function(e){VizbeeSDK.logger.debug("SyncController::connect - dumping appConfig = ",r);var t=new lr;(n=t.createSync(r)).onReceive=function(t){if(t)switch(t.type){case ft.SYNC_CONNECT:!function(e){o=!0,a&&(VizbeeSDK.logger.debug("SyncController::syncConnectHandler - setting isAppAdapterAvailable to TRUE (isVGA=true)"),l=!0),g(),e(!0)}(e);break;case ft.SYNC_MESSAGE:var i=t.data.b,r=t.data.h;if(a&&i.cmd&&-1==["launch_applet","hello"].indexOf(i.cmd.name))return;s=r,"video"===(n=i).cmd.ns&&v(n,s),"x"===n.cmd.ns&&m((d=n).b.cmd.ns,y(d));break;case ft.SYNC_PRESENCE:a||function(e){VizbeeSDK.logger.debug("SyncController::presenceHandler() - connected users count",e);var t=Sr.extend({},h);h=Sr.extend({},e),VizbeeSDK.logger.debug("SyncController::syncPresenceHandler - transition","from:",Object.keys(t),"to:",Object.keys(h)),function(e,t){var i=Object.keys(e||{}),r=Object.keys(t||{});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - previousIds: ",i," newIds: ",r);var n=r.filter(function(e){return-1===i.indexOf(e)});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - joinedIds: ",n);var s=i.filter(function(e){return-1===r.indexOf(e)});VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - leftIds: ",s),n.forEach(function(e){var i=t[e];if(i){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user joined: ",e);var r={event:"JOIN",member:i};p.forEach(function(e){try{e(r)}catch(e){VizbeeSDK.logger.error("SyncController::notifyPresenceListeners - Error calling listener",e)}})}}),s.forEach(function(t){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user left: ",t);var i=e[t];if(i){VizbeeSDK.logger.debug("SyncController::notifyPresenceListeners - user left: ",t);var r={event:"LEAVE",member:i};p.forEach(function(e){try{e(r)}catch(e){VizbeeSDK.logger.error("SyncController::notifyPresenceListeners - Error calling listener",e)}})}})}(t,h),Er.updatePresence(e)}(t.data)}var n,s,d},n.connect(e),i.addListener(S),Er.isAppSet()&&(VizbeeSDK.logger.debug("SyncController::connect appIsSet"),l=!0,g()),u.forEach(e=>{e(dr.CONNECTED)}),s=window.setInterval(_,Ar)},disconnect:function(){VizbeeSDK.logger.debug("SyncController::disconnect() called"),clearInterval(s),i.removeListener(S),u.forEach(e=>{e(dr.NOT_CONNECTED)}),f(),n.disconnect(),o=!1},isConnected:function(){return o},addSessionStateListener:function(e){u.push(e)},sessionState:function(){return o?dr.CONNECTED:dr.NOT_CONNECTED},subscribeToPresence:function(e){"function"==typeof e&&(p.push(e),VizbeeSDK.logger.debug("SyncController::subscribeToPresence - listener added"))},unsubscribeFromPresence:function(e){const t=p.indexOf(e);t>-1&&(p.splice(t,1),VizbeeSDK.logger.debug("SyncController::unsubscribeFromPresence - listener removed"))},getActiveSenders:function(){return n&&"function"==typeof n.getActiveSenders?n.getActiveSenders():{}},enableSynchronousPublish:function(){try{var e=n&&n.baseSync;e&&"function"==typeof e.enableSynchronousPublish&&e.enableSynchronousPublish()}catch(e){VizbeeSDK.logger.error("SyncController::enableSynchronousPublish - error",e)}}};function g(){if(o&&l){a&&!d&&(d=!0,Ir.onSubscribedToSync()),VizbeeSDK.logger.debug("SyncController::sendJoin - sending initial JOIN HELLO UPD message");var e={cmd:{ns:"video",name:"hello",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}};n.send(e)}else VizbeeSDK.logger.debug("SyncController::sendJoin - NOT sending JOIN HELLO yet",o,l)}function f(){if(o&&l){VizbeeSDK.logger.debug("SyncController::sendOlleh - sending OLLEH UPD message");var e={cmd:{ns:"video",name:"olleh",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}};n.send(e)}else VizbeeSDK.logger.debug("SyncController::sendOlleh - NOT sending Olleh",o,l)}function v(e,t={}){var s,a,o,l;if(!("int"!==e.cmd.type&&e.hstatus&&"SCREEN"==e.hstatus.type||"req"!==e.cmd.type&&"int"!==e.cmd.type))switch(e.cmd.name){case"launch_applet":if(Sr.isUndefined(e.cmd.param))return;VizbeeSDK.logger.debug("SyncController::launch_applet - called",e.cmd.param),void 0!==window.VGA&&window.VGA.launch(e.cmd.param);break;case"hello":s={cmd:{ns:"video",name:"hello",type:"rsp"},hstatus:{id:r.deviceId,type:"SCREEN"}};try{"app"!==i.app.state?((l=T()).vstatus&&(s.vstatus=l.vstatus),l.vinfo&&(s.vinfo=l.vinfo),l.vinfoext&&(s.vinfoext=l.vinfoext),s.hstatus.vip="true"):s.hstatus.vip="false","int"==e.cmd.type&&(s.cmd.type="req"),n.send(s)}catch(e){VizbeeSDK.logger.error("SyncController::videoMessgaeHandler -- hello command. error ",e)}break;case"will_start_video":if(VizbeeSDK.logger.debug("SyncController::videoMessageHandler::will_start_video called",e),!(c=e.internal.videoInfo))return;var d=e.internal.videoStartsIn;d=d||0,Pr.willStart(c,d);break;case"start_video":VizbeeSDK.logger.debug("SyncController::videoMessageHandler::start_video called",e);var c=e.internal.videoInfo;let p=e.internal.startVideoSource?e.internal.startVideoSource:"default";if(!c)return;"app"!==i.app.state?(VizbeeSDK.logger.debug("SyncController::videoMessageHandler()::start_video -- CALLING VIDEOADAPTER.STOP()"),Pr.stop("stop_reason_before_next_video"),setTimeout(function(){VizbeeSDK.logger.debug("SyncController::videoMessageHandler()::start_video -- CALLING START AFTER STOP"),b(c,p)},3e3)):b(c,p);break;case"pause":if("video"!==i.app.state)return void VizbeeSDK.logger.warn("pause requested when not in 'video' state",i.app.state);Pr.pause();break;case"play":if("video"!==i.app.state)return void VizbeeSDK.logger.warn("play requested when not in 'video' state",i.app.state);Pr.play();break;case"stop":if("app"==i.app.state)return void VizbeeSDK.logger.warn("stop requested when in 'app' state",i.app.state);VizbeeSDK.logger.info("syccontroller:: stop ",e.cmd.param);var u=e.cmd.param||"stop_reason_unknown";Pr.stop(u);break;case"exit":s={cmd:{ns:"video",name:"olleh",type:"upd"},hstatus:{id:r.deviceId,type:"SCREEN",vip:"false"}},n.send(s),Pr.exit();break;case"olleh":"int"==e.cmd.type&&f();break;case"status":_();break;case"seek":if(i.ad.playing)return VizbeeSDK.logger.debug("1",i.ad),void VizbeeSDK.logger.debug(i.video);if(Sr.isUndefined(e.cmd.param))return void VizbeeSDK.logger.debug("2",e);if(a=parseInt(e.cmd.param,10),isNaN(a))return void VizbeeSDK.logger.debug("3",a);if(i.video&&i.video.duration&&(o=i.video.duration,VizbeeSDK.logger.debug("4",a,o),a>o))return;if(a<0)return void VizbeeSDK.logger.debug("5",a);Pr.seek(a);break;case"vol_up":"function"==typeof Pr.volumeUp&&Pr.volumeUp();break;case"vol_down":"function"==typeof Pr.volumeDown&&Pr.volumeDown();break;case"mute":"function"==typeof Pr.mute&&Pr.mute(!0);break;case"unmute":"function"==typeof Pr.mute&&Pr.mute(!1);break;case"set_tracks":"function"==typeof Pr.setTracks&&Pr.setTracks(e.cmd.param||[]);break;case"event":"function"==typeof Pr.onEvent&&e.einfo&&e.einfo.data&&(Pr.onEvent(e.einfo),"tv.vizbee.homesso.signin"===e.einfo.type&&function(e,t){m(e.type,y({h:t,b:{payload:e.data}}))}(e.einfo,t))}}function y(e){const t=e.h.ssinfo,i={deviceId:t.REMOTE_DEVICE_ID,deviceType:t.REMOTE_DEVICE_TYPE,friendlyName:t.REMOTE_FRIENDLY_NAME,networkSessionId:t.REMOTE_NETWORK_SESSION_ID};return{payload:e.b.payload,senderInfo:i}}function m(e,t){if(!window.vizbee||!window.vizbee.continuity||!window.vizbee.continuity.xmessages)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: xmessages not found");if(!window.vizbee.continuity.xmessages.VizbeeBicastSessionManager)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: session manager not found");const i=new window.vizbee.continuity.xmessages.VizbeeBicastSessionManager;if(!i)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: unable to create session manager instance");const r=i.getSession();if(!r)return void VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: session not found");const n=r.getMessagingClient();n?n.onReceive(e,t.payload,t.senderInfo):VizbeeSDK.logger.error("SyncController::sendMessageToMessagingClient - Failed to initialize Vizbee session: messaging client not found")}function b(e,t){VizbeeSDK.logger.debug("SyncController::doStartVideo -- called StateManager.reset()",i),i.reset(),VizbeeSDK.logger.debug("SyncController::doStartVideo -- calling setSyncVideoInfo",i,i.getSyncVideoInfo()),i.setSyncVideoInfo(e),i.syncStartVideoSource=t,VizbeeSDK.logger.debug("SyncController::doStartVideo -- calling VideoAdapter.start() with videoInfo",e),Pr.start(e)}function S(e){"appIsSet"===e.type?(VizbeeSDK.logger.debug("SyncController::stateHandler appIsSet"),l=!0,g()):_()}function _(){if("app"!==i.app.state)if("UNKNOWN"!==i.video.state)if("PAUSED_BY_AD"!==i.video.state||"UNKNOWN"!==i.ad.state){var e=T();n&&n.send(e)}else VizbeeSDK.logger.debug("SyncController:sendUpdate - unknown video/ad state, not sending. app/video/ad.state: ",i.app.state,i.video.state,i.ad.state);else VizbeeSDK.logger.verbose("SyncController::sendUpdate - UNKNOWN video state, not sending");else"AppStateManager"==i.type&&VizbeeSDK.logger.verbose("SyncController::sendUpdate - in app state, not sending update",i)}function T(){var e,t=i.video,r=i.ad,n=i.getSyncVideoInfo(),s=i.getCurrentVideoInfo(),a={cmd:{name:"status",ns:"video",type:"upd"}};t&&(e=t.volume,t.muted&&(e=0),a.vinfo={id:t.id,url:""},n.id||(n=s),a.vinfo.islive=!1,a.vinfoext={title:"",subtitle:"",imgurl:"",desc:"",videostarttime:0,custommetadata:{},customstreaminfo:{},qos:{}},VizbeeSDK.logger.verbose("SyncController::createStatusMessage:: - ",n,s),s&&s.id&&n&&n.id&&n.id==s.id?(a.vinfo.url=n.videourl,a.vinfo.islive=n.islive,a.vinfoext={title:n.title||"",subtitle:n.subtitle||"",imgurl:n.imgurl||"",desc:n.desc||"",videostarttime:n.starttime||0,custommetadata:n.customMetadata||n.custommetadata,customstreaminfo:n.customStreamInfo||n.customstreaminfo,qos:E(t)}):s&&s.id&&(a.vinfo.url=s.videourl,a.vinfo.islive=s.islive,a.vinfoext={title:s.title||"",subtitle:s.subtitle||"",imgurl:s.imgurl||"",desc:s.desc||"",videostarttime:s.starttime||0,custommetadata:s.customMetadata||s.custommetadata,customstreaminfo:s.customStreamInfo||s.customstreaminfo,qos:E(t)}),a.vinfoext.wasVideoStartedByVizbee=i.wasVideoStartedByVizbee(),a.vstatus={du:parseInt(t.duration,10)||-1,id:t.id,po:parseInt(t.position,10)||-1,st:t.state,vol:parseInt(e),cc:t.cc,tr:t.tr,er:t.error||{}},"Infinity"!=t.duration&&"0"!=t.duration||(a.vstatus.du=0)),r&&t&&"PAUSED_BY_AD"==t.state&&(a.adstatus={du:parseInt(r.duration,10)||-1,id:r.id,po:parseInt(r.position,10)||-1,st:r.state});var o=Er.getVideoInfo();return o&&(o.id&&(a.vinfo=a.vinfo||{},a.vinfo.id=o.id,a.vstatus=a.vstatus||{},a.vstatus.id=o.id),void 0!==o.videourl&&(a.vinfo=a.vinfo||{},a.vinfo.url=o.videourl),void 0!==o.islive&&(a.vinfo=a.vinfo||{},a.vinfo.islive=o.islive),void 0!==o.title&&(a.vinfoext=a.vinfoext||{},a.vinfoext.title=o.title),void 0!==o.subtitle&&(a.vinfoext=a.vinfoext||{},a.vinfoext.subtitle=o.subtitle),void 0!==o.imgurl&&(a.vinfoext=a.vinfoext||{},a.vinfoext.imgurl=o.imgurl),void 0!==o.isdvrsupported&&(a.vinfoext=a.vinfoext||{},a.vinfoext.isdvrsupported=o.isdvrsupported),void 0!==o.state&&(a.vstatus=a.vstatus||{},a.vstatus.st=o.state),void 0!==o.position&&(a.vstatus=a.vstatus||{},a.vstatus.po=parseInt(o.position,10)),void 0!==o.duration&&(a.vstatus=a.vstatus||{},a.vstatus.du=parseInt(o.duration,10))),a}function E(e){if(!e)return{};let t=e.qos||{};return{starttime:e.startTime||0,audiobufferlevel:e.audioBufferLevel,videobufferlevel:e.videoBufferLevel,adPodStartedTimeInMs:t.adPodStartedTimeInMs||0,adPodEndedTimeInMs:t.adPodEndedTimeInMs||0,loadReceivedByAppTimeInMs:t.loadReceivedByAppTimeInMs||0,loadReceivedByPlayerTimeInMs:t.loadReceivedByPlayerTimeInMs||0,metadataLoadedTimeInMs:t.metadataLoadedTimeInMs||0,playerReadyToPlayTimeInMs:t.playerReadyToPlayTimeInMs||0,playbackStartedTimeInMs:t.playbackStartedTimeInMs||0}}},Lr=ct(),Rr=we(),Kr=ut(),Ur=dt(),Br=lt(),Fr=function(){if(ur)return cr;ur=1;var e,t,i=I(),r=new(0,Me().EventEmitter),n={preparing:!1,playing:!1,alladscomplete:!1},s=-1,a=-1,o=!1;function l(e){var r={type:"ad",position:-1,duration:-1,preparing:n.preparing,playing:n.playing,alladscomplete:n.alladscomplete};return n.playing&&(a>0?(r.position=s,r.duration=a,VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::Status using app ad timing — po:",s,"du:",a)):t&&(r.position=1e3*t.currentTime(),r.duration=1e3*t.getDuration(),VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::Status using videoEl — po:",r.position,"du:",r.duration))),i.extend(r,e)}function d(e){var s,a,o=!i.contains(["timeupdate"],e.type);(n.preparing||n.playing)&&(s=new l,"timeupdate"!==e.type&&VizbeeSDK.logger.debug("AdAdapter::handleAdEvent() - not a timeupdate event",e.type),"preparing"===e.type&&(a="LOADING",s.id="UNKNOWN"),"play"===e.type&&(a="LOADING"),"playing"===e.type&&(a="PLAYING",t&&t.basePlayer&&t.basePlayer.videoInfo&&t.basePlayer.videoInfo.src&&(s.id=t.basePlayer.videoInfo.src)),"error"===e.type&&(a="INTERRUPTED",n.playing=!1),"ended"===e.type&&(a="FINISHED",n.playing=!1),s.playing=n.playing,a&&(s.state=a),r.emit("ad",s,o))}function c(e){var t=e.type||"UNKNOWN";VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::adsManagerHandleStateChange state:",t,"data:",e.data),-1!=["ad-pod-start","ad-pod-end","ad-start","ad-playing"].indexOf(t)&&(n.preparing=!1,n.playing=!1,"ad-pod-start"===t?(o=!1,n.preparing=!0,d({type:"preparing"})):"ad-start"===t?(o=!1,d({type:"play"})):"ad-playing"===t?(n.playing=!0,e.data&&(void 0!==e.data.duration&&e.data.duration>0&&(a=e.data.duration),void 0!==e.data.position&&e.data.position>=0&&(s=e.data.position),VizbeeSDK.logger.debug("[VZB-DEBUG] AdAdapter::ad-playing stored timing — po:",s,"du:",a))):("ad-pod-end"===t&&(n.playing=!1,n.alladscomplete=!0,s=-1,a=-1),r.emit("ad",new l({position:-1,duration:-1,state:"UNKNOWN",preparing:n.preparing,playing:n.playing}),!1)))}function u(i){VizbeeSDK.logger.debug("VIZBEE: AdAdapter.setAdVideo()",i),i&&((t=i).onError=function(e){n.playing&&(d({type:"error"}),o=!1)},t.onEnded=function(){n.playing&&(d({type:"ended"}),o=!1)},t.onTimeUpdate=function(e){n.playing&&(o?d({type:"timeupdate"}):(o=!0,d({type:"playing"})))},e||p(t))}function p(t){VizbeeSDK.logger.debug("VIZBEE: AdAdapter.setAdsManager()",t),(e=t).onEvent=c,u(e)}return cr={setAdVideo:u,setAdsManager:p,reset:function(){n.preparing=!1,n.playing=!1,n.alladscomplete=!1,s=-1,a=-1,r.emit("ad",new l({position:-1,duration:-1,state:"UNKNOWN"}),!1)},addListener:function(e){r.addListener("ad",e)},removeListener:function(e){r.removeListener("ad",e)}}}(),Hr=function(){if(hr)return pr;hr=1;var e,t,i=I(),r=new(0,Me().EventEmitter),n={playing:!1,alladscomplete:!1};function s(e){var r={type:"ad",position:-1,duration:-1,playing:n.playing,alladscomplete:n.alladscomplete};return t&&(r.position=1e3*t.currentTime,r.duration=1e3*t.duration),i.extend(r,e)}function a(e){var a,o,l=!i.contains(["timeupdate","progress","suspend"],e.type);n.playing&&(a=new s,"timeupdate"!==e.type&&VizbeeSDK.logger.debug("handleAdEvent",e.type,t.currentTime),"loadedmetadata"===e.type&&(o="LOADING"),"play"===e.type&&(o="LOADING",a.id=t.src),"playing"===e.type&&(o="PLAYING"),"error"===e.type&&(o="FAILED"),"ended"===e.type&&(o="FINISHED"),t.ended&&(o="FINISHED"),o&&(a.state=o),r.emit("ad",a,l))}function o(e){n.playing=e.type===google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,n.alladscomplete=e.type===google.ima.AdEvent.Type.ALL_ADS_COMPLETED,VizbeeSDK.logger.debug("ADADAPTER:adsManagerHandler",e.type,"playing",n.playing,"(currentTime "+t.currentTime+")"),r.emit("ad",new s({position:-1,duration:-1,state:"UNKNOWN"}),!1)}return pr={setAdVideo:function(e){!function(e,t){["error","play","playing","ended","timeupdate","loadedmetadata"].forEach(function(i){e.addEventListener(i,a,!1),t&&t.removeEventListener(i,a,!1)})}(e,t),t=e},setAdsManager:function(t){!function(e,t){google&&google.ima&&[google.ima.AdErrorEvent.Type.AD_ERROR,google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,google.ima.AdEvent.Type.ALL_ADS_COMPLETED].forEach(function(i){e&&e.addEventListener(i,o),t&&t.removeEventListener(i,o)})}(t,e),e=t,VizbeeSDK.logger.debug("adsManager cue points,",e.getCuePoints())},reset:function(){n.playing=!1,n.alladscomplete=!1,r.emit("ad",new s({position:-1,duration:-1,state:"UNKNOWN"}),!1)},addListener:function(e){r.addListener("ad",e)},removeListener:function(e){r.removeListener("ad",e)}},pr}(),Gr=function(){if(yr)return vr;yr=1,I();var e=function(){if(fr)return gr;fr=1;var e=Me().EventEmitter;const t="ad";var i=new e,r={type:t,state:"UNKNOWN",id:"UNKNOWN",position:-1,duration:-1,playing:!1,adPodStarted:!1,adPodsPlayedDuration:0,totalAdPodsDuration:0};return gr={adStatus:r,reset:function(){r.state="UNKNOWN",r.id="UNKNOWN",r.position=-1,r.duration=-1,r.playing=!1,r.adPodStarted=!1},resetTotalAdPodsDuration:function(){r.adPodsPlayedDuration=0,r.totalAdPodsDuration=0},addListener:function(e){i.addListener(t,e)},removeListener:function(e){i.removeListener(t,e)},notify:function(e){i.emit(t,r,e)}}}();const t=["loadedmetadata","play","playing","timeupdate","error","ended"];var i,r;function n(t){if(e.adStatus.adPodStarted){var n="LOADING";"loadedmetadata"==t.type||"play"==t.type?n="LOADING":"playing"==t.type?(e.adStatus.id=i.src,n="PLAYING"):"timeupdate"==t.type?n="PLAYING":"error"==t.type?n="FAILED":("ended"==t.type||i.ended)&&(n="FINISHED");var s=!1;n!=e.adStatus.state&&(s=!0,e.adStatus.state=n),e.adStatus.playing&&e.adStatus.duration>0&&r>=0?e.adStatus.position=1e3*i.currentTime-r:e.adStatus.position=-1,e.notify(s)}}function s(){e.reset(),r=-1}function a(){s(),e.notify()}return vr={setAdVideo:function(e){!function(e){e&&t.forEach(function(t){e.removeEventListener(t,n,!1)})}(i),function(e){e&&t.forEach(function(t){e.addEventListener(t,n,!1)})}(i=e)},setAdPodStart:function(t,i,r){s(),e.adStatus.adPodStarted=!0},setAdPodEnd:function(){a()},setTotalAdPodsDuration:function(t){e.adStatus.totalAdPodsDuration=t||0,e.notify(!1)},setAdStart:function(t,i){e.adStatus.playing=!0,r=t,e.adStatus.duration=i,e.adStatus.adPodsPlayedDuration+=i},setAdEnd:function(){e.adStatus.state="FINISHED",e.notify(!0),e.adStatus.playing=!1,r=-1,e.adStatus.duration=-1},getAdStatus:function(){return e.adStatus},reset:a,resetTotalAdPodsDuration:function(){e.resetTotalAdPodsDuration()},addListener:function(t){e.addListener(t)},removeListener:function(t){e.removeListener(t)}}}(),Wr=pt(),jr=(br||(br=1,mr={getDeviceID:function(e,t,i){if(VizbeeTV&&VizbeeTV.tv)VizbeeTV.tv.uniqueDeviceID(function(i){switch(VizbeeSDK.logger.debug("Device::getDeviceID - DeviceIDAlgorithm = "+VizbeeTV.tv.deviceIDAlgorithm),VizbeeTV.tv.deviceIDAlgorithm){case"VTV_SESSION_ID":case"VTV_DEFAULT":case"VTV_URL_PARAMS":i=e.platform+":"+i;break;case"VTV_INTERNAL_IP":i=e.platform+":"+e.externalIp.toLowerCase()+":"+i}VizbeeSDK.logger.debug("Device::getDeviceID - deviceID = "+i),t(i)},function(e){VizbeeSDK.logger.error("PROD","C:001 failed to fetch deviceId, halting SDK initialization",e),i&&i(e)},e);else{var r="VizbeeTV framework not initialized yet, halting SDK initialization";VizbeeSDK.logger.error("PROD","C:002",r),i&&i(r)}}}),mr),qr=void 0,Jr=void 0,Yr=!1,$r=[],Qr="vzb0000000";function Zr(){if(wr&&wr.features&&wr.features.shouldSyncDisconnectOnBackground){if(Yr)return;qr?qr.isConnected()||(VizbeeSDK.logger.i("SDK","onForeground","connecting VGA"),Yr=!0,tn(Qr,function(){Yr=!1,Jr&&!Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","onForeground","connecting APPLET after VGA ",Mr.id),Yr=!0,tn(Mr.id,function(){Yr=!1}))})):Jr&&!Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","onForeground","connecting APPLET ",Mr.id),Yr=!0,tn(Mr.id,function(){Yr=!1}))}}function Xr(){return VizbeeSDK.logger.i("SDK","onBackground"),wr&&wr.features&&wr.features.shouldExitOnBackground?(VizbeeSDK.logger.i("SDK","onBackground","exiting the app"),void VizbeeTV.tv.exit()):wr&&wr.features&&wr.features.shouldSyncDisconnectOnBackground?(VizbeeSDK.logger.i("SDK","onBackground","disconnecting from sync"),qr&&qr.isConnected()&&(VizbeeSDK.logger.i("SDK","_disconnectFromSync","disconnecting VGA"),qr.disconnect()),Jr&&Jr.isConnected()&&(VizbeeSDK.logger.i("SDK","_disconnectFromSync","disconnecting APPLET"),Jr.disconnect()),void(Yr=!1)):void on()}function en(e){VizbeeSDK.logger.i("SDK","onEnd","sending olleh"),e&&e.isTeardown&&(qr&&qr.enableSynchronousPublish(),Jr&&Jr.enableSynchronousPublish()),on()}function tn(e,t){Or.getConfig({appId:e||Mr.id,deviceId:"",platform:VizbeeTV.tv.cloudPlatformName,platformModel:VizbeeTV.tv.platformModel,hostProxy:Mr.configServiceProxyHost},function(e){wr=e,VizbeeSDK.logger.d("SDK","getConfig","got config=",wr),wr.customAttributesForMetrics=Mr.customAttributesForMetrics,wr.features&&wr.features.enableIpv6Lookup?xr.getIpv6Address(function(e){VizbeeSDK.logger.d("SDK","getIpv6Address","got response=",e),wr.ipv6Address=e,rn(wr,t)}):(VizbeeSDK.logger.d("SDK","getIpv6Address","skipped - enableIpv6Lookup not set in screen config"),rn(wr,t))})}function rn(e,t){jr.getDeviceID(e,function(i){if(VizbeeSDK.logger.d("SDK","onConfigReady","using deviceid="+i),!function(e){if(!e||"string"!=typeof e)return!1;var t=e.split(":"),i=t[t.length-1];if(!i)return!1;var r=i.toLowerCase();return"unknown_device_id"!==r&&"0.0.0.0"!==r&&"127.0.0.1"!==r&&"localhost"!==r&&"undefined"!==r&&"null"!==r}(i))return VizbeeSDK.logger.e("SDK","onConfigReady","PROD - SDK init aborted: deviceId is a default/sentinel value; sync will not be established",i),Yr=!1,void(t&&t(void 0));e.deviceId=i,function(e,t){(function(e){if(e&&e.debug&&e.debug.clients&&e.debug.clients.length>0&&e.debug.server)for(var t=0;t<e.debug.clients.length;t++){var i=e.debug.clients[t];if(i.ip&&i.ip==e.externalIp){var r=e.appId+":"+e.platform+":"+e.externalIp,n=i.aka||r;n="["+n+"]",Se.enableRemoteLogging(e.debug.server,n),window.VizbeeSDK&&window.VizbeeSDK.logger.setLevel(window.VizbeeSDK.logger.LEVEL.DEBUG),window.VizbeeTV&&window.VizbeeTV.logger.setLevel(window.VizbeeTV.logger.LEVEL.DEBUG),window.VGA&&window.VGA.logger.setLevel(window.VGA.logger.LEVEL.DEBUG)}}})(e),e.appId==Qr||e.features&&e.features.targetAppType==Zi?(Qr=e.appId,qr||(qr=new zr(e,!0)),qr.connect(function(e){e?VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connected VGA"):VizbeeSDK.logger.e("SDK","onConfigAndDeviceIDReady","failed to connect VGA")})):(Jr||(VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","creating appletSyncController"),Jr=new zr(e,!1),Nr.each($r,e=>{e()})),VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connecting appletSyncController"),Jr.connect(function(e){e?VizbeeSDK.logger.d("SDK","onConfigAndDeviceIDReady","connected APPLET"):VizbeeSDK.logger.e("SDK","onConfigAndDeviceIDReady","failed to connect APPLET")})),t&&t(e)}(e,t)},function(e){VizbeeSDK.logger.e("SDK","onConfigReady","PROD - SDK init aborted: deviceId fetch failed; sync will not be established",e),Yr=!1,t&&t(void 0)})}function nn(e){VizbeeSDK.logger.d("SDK","setApp"),Rr.setApp(e)}function sn(e){VizbeeSDK.logger.d("SDK","setVideo","video=",e),Ur.setVideo(e)}function an(e){Dr={vzb_ad_ima:Hr,vzb_ad_ssai:Gr,vzb_ad_ssai_avplay:null,vzb_ad_default:Fr}[e.toLowerCase()],Ur.setAdAdapter(Dr)}function on(){Wr.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"olleh",type:"int"}})}var ln={ContinuityContext:kr,QueueBase:null,QueueManager:null,QueueDelegate:null,QueueDelegateFactory:null},dn={VERSION:"7.8.41",wasVideoStartedByVizbee:function(){return Lr&&Lr.wasVideoStartedByVizbee()},init:function(e){VizbeeSDK.logger.i("SDK","init"),VizbeeTV.tv.appLifeCycleManager&&(VizbeeTV.tv.appLifeCycleManager.addHandler("onForeground",Zr),VizbeeTV.tv.appLifeCycleManager.addHandler("onBackground",Xr),VizbeeTV.tv.appLifeCycleManager.addHandler("onEnd",en)),Mr=e,VizbeeSDK.logger.i("SDK","onStart"),Mr&&Mr.id&&(function(e){var t;VizbeeSDK.logger.d("SDK","handleInitOptions"),e.video&&sn(e.video),e.app&&nn(e.app),e.videoAdapter&&(t=e.videoAdapter,VizbeeSDK.logger.d("SDK","setHostVideoAdapter","video=",t),Br.setVideoAdapter(t)),e.adType&&an(e.adType),e.VGA&&e.isVGA&&Kr.setVGA(e.VGA)}(Mr),Ur.init(),tn())},setApp:nn,setVideo:sn,setVideoGuid:function(e,t){Ur.setId(e,t)},setVideoInfo:function(e){VizbeeSDK.logger.d("SDK","setVideoInfo","videoInfo=",e),Ur.setVideoInfo(e)},setVideoStop:function(){Ur.setVideoStop()},setAdsVideo:function(e){VizbeeSDK.logger.d("SDK","setAdsVideo","video=",e),Dr?Dr.setAdVideo(e):VizbeeSDK.logger.d("SDK","setAdsVideo","AdAdapter not configured; skipping")},getAdsAdapter:function(){return Dr},setAdType:an,sendXMessage:function(e,t,i){if(!Jr)return void VizbeeSDK.logger.e("XMessages",this.constructor.name,"sendXMessage","appletSyncController not initialized");if(Nr.get(wr,["features","useXMessagesFormat"])){let i={type:"sync_proxy_video_cmds",cmd:{type:"req",ns:t,name:"x",param:""},payload:e};return VizbeeSDK.logger.d("XMessages",this.constructor.name,"sendXMessage",`sending message: ${JSON.stringify(i)} in new format to sync controller`),void Wr.send(i)}let r={type:"sync_proxy_video_cmds",cmd:{type:"req",ns:"video",name:"event",param:""},einfo:{type:t,data:e}};VizbeeSDK.logger.d("XMessages",this.constructor.name,"sendXMessage",`sending message: ${JSON.stringify(r)} in old format to sync controller`),Wr.send(r)},syncProxy:Wr,addSyncReadyListener:function(e){$r.push(e)},removeSyncReadyListener:function(e){$r=Nr.without($r,e)},getSyncController:function(){return Jr},getMetricsManager:function(){return Qi},wrapVideoCallbacks:Ur.wrapCallbacks,addVideoEventListener:Ur.addEventListener,removeVideoEventListener:Ur.removeEventListener,reset:function(){VizbeeSDK.logger.d("SDK","reset");try{Jr&&(Jr.disconnect(),Jr=void 0)}catch(e){VizbeeSDK.logger.e("SDK","reset","error disconnecting appletSyncController.",e)}try{Lr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AppStateManager",e)}try{Rr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AppAdapter",e)}try{Dr&&Dr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting AdAdapter",e)}try{Ur.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset"," error resetting VideoAdapter",e)}try{Br.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting HostVideoAdapter",e)}try{Wr.reset()}catch(e){VizbeeSDK.logger.e("SDK","reset","error resetting SyncProxy",e)}try{VizbeeTV.tv.appLifeCycleManager&&(VizbeeTV.tv.appLifeCycleManager.removeHandler("onForeground",Zr),VizbeeTV.tv.appLifeCycleManager.removeHandler("onBackground",Xr),VizbeeTV.tv.appLifeCycleManager.removeHandler("onEnd",en))}catch(e){VizbeeSDK.logger.e("SDK","reset","error removing app lifecycle handlers",e)}},framework:ln};window.VizbeeSDK||(window.VizbeeSDK={},VizbeeSDK.logger||(VizbeeSDK.logger=new Se,VizbeeSDK.logger.setPrefix("[Vizbee]")));var cn=window.VZB;cn=dn,window.VZB=cn;class un{constructor(){this.platformType="",this.platformConfig={},this.appAdapter=void 0,this.vgaAdapter=void 0,this.videoAdapter=void 0,this.adAdapter=void 0,this.vzbOptions={}}setOptions(e){e||(e={}),this.vzbOptions=e}getOptions(){return this.vzbOptions}initAppOnPlatform(e,t,i,r){this.appAdapter=t.appAdapter||t,this.vgaAdapter=t.vgaAdapter,this.videoAdapter=t.videoAdapter,this.adAdapter=t.adAdapter,this.platformType=i,this.platformConfig=r,this.platformConfig.appId=e,null==this.platformConfig.standalone&&(this.platformConfig.standalone=!0),VizbeeTV.init(this.platformType,this.platformConfig);var n=this.appAdapter.startVideo||function(){},s=this;this.appAdapter.startVideo=function(e,t){t=t||0,s.platformConfig.standalone||s.setVideoGuid(e.id,e.isLive||e.islive),n(e,t)};var a={id:e,app:this.appAdapter,videoAdapter:this.videoAdapter,adAdapter:this.adAdapter,customAttributesForMetrics:{}};this.vgaAdapter?(a.isVGA=!0,a.VGA=this.vgaAdapter):a.video=VizbeeTV.tv.player,a.customAttributesForMetrics=Object.assign(a.customAttributesForMetrics,this.platformConfig.customAttributesForMetrics,this.vzbOptions.customAttributesForMetrics),this.vzbOptions.configServiceProxyHost&&(a.configServiceProxyHost=this.vzbOptions.configServiceProxyHost),VZB.init(a)}setAdAdapterType(e){VZB.setAdType(e)}getAdsAdapter(){return VZB.getAdsAdapter()}setAdsVideo(e){VZB.setAdsVideo(e)}setVideoElement(e){if(!e)return"undefined"!=typeof VizbeeSDK&&VizbeeSDK.logger&&VizbeeSDK.logger.warn("BaseAPIWrapper::setVideoElement - INVALID newVideoElement"),!1;if(!this.platformConfig)return"undefined"!=typeof VizbeeSDK&&VizbeeSDK.logger&&VizbeeSDK.logger.warn("BaseAPIWrapper::setVideoElement - SDK not initialized"),!1;if(this.platformConfig.videoElement===e)return!0;this.platformConfig.videoElement=e;var t=Object.assign({},this.platformConfig,{standalone:!0});return"undefined"!=typeof VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player&&"function"==typeof VizbeeTV.tv.player.reconstruct&&VizbeeTV.tv.player.reconstruct(t),this.setAdsVideo(e),!0}setVideoGuid(e,t){VZB.setVideoGuid(e,t)}setVideoInfo(e){VZB.setVideoInfo(e),this.setVideoGuid(e.id||e.videourl,e.islive)}setVideoStop(){VZB.setVideoStop()}}class pn{setup(e,t){this.chromecastAPI=e,this.mediaManager=t}}class hn extends pn{setup(e,t){super.setup(e,t),this.setupAppProcessors(),this.setupProcessors()}setupAppProcessors(){this.appProcessOnLoad=this.mediaManager.onLoad.bind(this.mediaManager),this.appProcessOnMetadataLoaded=this.mediaManager.onMetadataLoaded.bind(this.mediaManager),this.appProcessOnPause=this.mediaManager.onPause.bind(this.mediaManager),this.appProcessOnEditTracksInfo=this.mediaManager.onEditTracksInfo.bind(this.mediaManager)}setupProcessors(){this.setupOnLoadProcessor(),this.setupOnMetadataLoadedProcessor(),this.setupOnPauseProcessor(),this.setupOnEditTracksInfo()}setupOnLoadProcessor(){var e=this;e.mediaManager.onLoad=t=>{var i=e.chromecastAPI.platformConfig.captionsType;i&&"cea608"==i.toLowerCase()&&(t.data.media.tracks=[{trackId:99,type:"TEXT",trackContentType:"text/608",name:"English",language:"en-US",subtype:"SUBTITLES"}]);var r=nr.getVideoInfo(t);r.vzbSenderOS&&r.vzbVersion&&(e.chromecastAPI.setVideoInfo(r),e.chromecastAPI.appAdapter&&e.chromecastAPI.appAdapter.adaptMediaInfo&&(t=e.chromecastAPI.appAdapter.adaptMediaInfo(t))),e.appProcessOnLoad(t)}}setupOnMetadataLoadedProcessor(){let e=this;e.mediaManager.onMetadataLoaded=t=>{var i=e.mediaManager.getMediaInformation(),r=i.customData;r&&r.vzbSenderOS&&r.vzbVersion&&e.chromecastAPI.setVideoGuid(i.customData.guid,"live"==i.streamType.toLowerCase()),e.appProcessOnMetadataLoaded(t)}}setupOnPauseProcessor(){var e=this;e.mediaManager.onPause=t=>{VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"pause",type:"req"}}),e.appProcessOnPause(t)}}setupOnEditTracksInfo(){var e=this;e.mediaManager.onEditTracksInfo=t=>{var r=t.data.activeTrackIds,n=e.chromecastAPI.platformConfig.captionsType,s=e.chromecastAPI.platformConfig.playerType&&e.chromecastAPI.platformConfig.playerType.toLowerCase();if(r.length>0)n&&"cea608"==n.toLowerCase()&&99==r[0]?s&&"bitmovin"===s?(VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - playerType=bitmovin player, handing off to app"),e.appProcessOnEditTracksInfo(t)):e.chromecastAPI.platformConfig.videoElement.textTracks[0].mode="showing":e.appProcessOnEditTracksInfo(t);else{VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - No Active Track IDs");var a=VizbeeTV.tv.player.getEnabledTracks(i);if(a&&a.length>0){var o=a[0].toJSON();if(n&&"cea608"==n.toLowerCase()&&99==o.idNum)return void(s&&"bitmovin"===s?(VizbeeSDK.logger.debug("DefaultProcessor::onEditTracksInfo - playerType=bitmovin player, handing off to app"),e.appProcessOnEditTracksInfo(t)):e.chromecastAPI.platformConfig.videoElement.textTracks[0].mode="hidden")}e.appProcessOnEditTracksInfo(t)}}}}class gn extends pn{setup(e,t){super.setup(e,t);var i=this;i.mediaManager.onLoad=(i.mediaManager.onLoad.bind(i.mediaManager),function(e){var t=nr.getVideoInfo(e);t.islive||(t.starttime=1e3*t.starttime);var i={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"start_video",type:"req",param:t.starttime},vinfo:{id:t.id,url:t.videourl,islive:t.islive,deeplink:t.deeplink},vinfoext:{}};t.cuepoints&&(i.vinfoext.cuepoints=t.cuepoints),t.title&&(i.vinfoext.title=t.title),t.imgurl&&(i.vinfoext.imgurl=t.imgurl),t.desc&&(i.vinfoext.desc=t.desc),t.tracks&&(i.vinfoext.tracks=t.tracks),t.customstreaminfo&&(i.vinfoext.customstreaminfo=t.customstreaminfo),t.custommetadata&&(i.vinfoext.custommetadata=t.custommetadata),t.drminfo&&(i.vinfoext.drmcustomdata=t.drminfo.drmCustomData),t.drminfo&&(i.vinfoext.drmtype=t.drminfo.drmType),t.drminfo&&(i.vinfoext.drmlicenseurl=t.drminfo.drmLicenseURL),i.internal=t,VZB.syncProxy.send(i)}),i.mediaManager.onPlay=(i.mediaManager.onPlay.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"play",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onPause=(i.mediaManager.onPause.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"pause",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onSeek=(i.mediaManager.onSeek.bind(i.mediaManager),function(e){var t=nr.getVideoInfo(e),r={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"seek",type:"req",param:Math.round(1e3*t.starttime)}};VZB.syncProxy.send(r),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onStop=(i.mediaManager.onStop.bind(i.mediaManager),function(e){VZB.syncProxy.send({type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"stop",type:"req"}}),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}),i.mediaManager.onEditTracksInfo=function(e){var t={type:"sync_proxy_video_cmds",cmd:{ns:"video",name:"set_tracks",type:"req",param:e.data.activeTrackIds}};VZB.syncProxy.send(t),i.mediaManager.sendStatus(e.senderId,e.data.requestId,!0)}}}class fn extends hn{setupAppMediaManagerProcessor(e){this.appMediaManagerProcessor=e}setupAppProcessors(){this.appProcessOnLoad=this.appMediaManagerProcessor.onLoad.bind(this.appMediaManagerProcessor),this.appProcessOnPause=this.appMediaManagerProcessor.onPause.bind(this.appMediaManagerProcessor),this.appProcessOnPlay=this.appMediaManagerProcessor.onPlay.bind(this.appMediaManagerProcessor),this.appProcessOnSeek=this.appMediaManagerProcessor.onSeek.bind(this.appMediaManagerProcessor),this.appMediaManagerProcessor.onEditTracksInfo?this.appProcessOnEditTracksInfo=this.appMediaManagerProcessor.onEditTracksInfo.bind(this.appMediaManagerProcessor):this.appProcessOnEditTracksInfo=this.mediaManager.onEditTracksInfo.bind(this.mediaManager),this.appProcessOnStop=this.appMediaManagerProcessor.onStop.bind(this.appMediaManagerProcessor)}setupProcessors(){super.setupProcessors(),this.setupOnPlayProcessor(),this.setupOnSeekProcessor(),this.setupOnStopProcessor()}setupOnPlayProcessor(){var e=this;e.mediaManager.onPlay=t=>{let i=e.appProcessOnPlay(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}setupOnSeekProcessor(){var e=this;e.mediaManager.onSeek=t=>{let i=e.appProcessOnSeek(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}setupOnStopProcessor(){var e=this;e.mediaManager.onStop=t=>{let i=e.appProcessOnStop(t);e.mediaManager.sendStatus(t.senderId,t.data.requestId,!!i)}}}class vn{static createProcessor(e){return!e||e&&"default"==e.toLowerCase()?cast.framework?new null:new hn:e&&"custom"==e.toLowerCase()?new fn:e&&"sync"==e.toLowerCase()?new gn:void 0}}function yn(){this._positionMs=-1,this._durationMs=-1,this.onLoading=function(){},this.onPlaying=function(){},this.onPaused=function(){},this.onBuffering=function(){},this.onError=function(){},this.onInterrupted=function(){},this.onEnded=function(){},this.onTimeUpdate=function(){}}function mn(){this._eventListeners=[],this.onError=function(){},this.onEnded=function(){},this.onTimeUpdate=function(){};var e=this;Object.defineProperty(this,"onEvent",{configurable:!0,get:function(){},set:function(t){"function"==typeof t&&e._eventListeners.push(t)}})}function bn(e){e=e||{},this._getStatus=e.getStatus,this._setVideoSource=e.setVideoSource,this._setVideoGuid=e.setVideoGuid,this._installAdSource=e.installAdSource,this._intervalMs="number"==typeof e.intervalMs&&e.intervalMs>0?e.intervalMs:1e3,this._logger=e.logger||{debug:function(){},warn:function(){}},this._player=new yn,this._timer=void 0,this._installed=!1,this._lastGuid=void 0,this._lastEventType=void 0,this._adPlayer=new mn,this._adInstalled=!1,this._adActive=!1;var t=this;this._tick=function(){t._onTick()}}yn.prototype._setPositionMs=function(e){this._positionMs="number"==typeof e&&e>=0?e:-1},yn.prototype._setDurationMs=function(e){this._durationMs="number"==typeof e&&e>=0?e:-1},yn.prototype.currentTime=function(){return this._positionMs>=0?this._positionMs/1e3:0},yn.prototype.getDuration=function(){return this._durationMs>=0?this._durationMs/1e3:0},yn.prototype.getStartTime=function(){return 0},yn.prototype.getBufferLevel=function(){return 0},yn.prototype.getAudioBufferLevel=function(){return 0},yn.prototype.getStreamQualityInfo=function(){},yn.prototype.seek=function(){},yn.prototype.setTracks=function(){},yn.prototype.getTracks=function(){return[]},yn.prototype.getEnabledTracks=function(){return[]},yn.prototype.enableTracks=function(){},yn.prototype.disableTracks=function(){},yn.prototype.changeAudioTrack=function(){},mn.prototype.dispatchOnEvent=function(e){for(var t=this._eventListeners.length-1;t>-1;t--)if(this._eventListeners[t](e))return},mn.prototype.currentTime=function(){return 0},mn.prototype.getDuration=function(){return 0},mn.prototype.getStartTime=function(){return 0},mn.prototype.getBufferLevel=function(){return 0},mn.prototype.getAudioBufferLevel=function(){return 0},mn.prototype.getStreamQualityInfo=function(){},bn.prototype.start=function(){this._timer||(this._installed||"function"!=typeof this._setVideoSource||(this._setVideoSource(this._player),this._installed=!0),this._logger.debug("ChromecastStatusPoller::start",this._intervalMs),this._timer=setInterval(this._tick,this._intervalMs),this._tick())},bn.prototype.stop=function(){this._timer&&(clearInterval(this._timer),this._timer=void 0),this._lastGuid=void 0,this._lastEventType=void 0,this._adActive=!1,this._logger.debug("ChromecastStatusPoller::stop")},bn.prototype._onTick=function(){var e;try{e=this._getStatus&&this._getStatus()}catch(e){return void this._logger.warn("ChromecastStatusPoller::_onTick - getter threw",e)}e&&(this._handleAdChannel(e)||this._handleVideoChannel(e))},bn.prototype._handleAdChannel=function(e){return e.isPlayingAd?(this._adInstalled||"function"!=typeof this._installAdSource||(this._installAdSource(this._adPlayer),this._adInstalled=!0),this._adActive||(this._adPlayer.dispatchOnEvent({type:"ad-pod-start",data:{}}),this._adPlayer.dispatchOnEvent({type:"ad-start",data:{}}),this._adActive=!0),this._adPlayer.dispatchOnEvent({type:"ad-playing",data:{position:e.adPosition,duration:e.adDuration}}),this._adPlayer.onTimeUpdate(),!0):(this._adActive&&(this._adPlayer.dispatchOnEvent({type:"ad-pod-end",data:{}}),this._adActive=!1),!1)},bn.prototype._handleVideoChannel=function(e){var t=this._mapStateToEventType(e.state),i=e.id,r=!!i&&i!==this._lastGuid,n=this._isActiveEventType(t),s=this._isActiveEventType(this._lastEventType);i&&(r||n&&!s)&&("function"==typeof this._setVideoGuid&&this._setVideoGuid(i,!!e.islive),this._lastEventType=void 0),r&&(this._lastGuid=i),this._player._setPositionMs(e.position),this._player._setDurationMs(e.duration),t&&(t!==this._lastEventType?(this._fire(t),this._lastEventType=t):"playing"===t&&this._player.onTimeUpdate(this._player.currentTime()))},bn.prototype._fire=function(e){switch(e){case"loading":this._player.onLoading();break;case"playing":this._player.onPlaying();break;case"paused":this._player.onPaused();break;case"ended":this._player.onEnded();break;case"interrupted":this._player.onInterrupted();break;case"error":this._player.onError({reason:"error"})}},bn.prototype._isActiveEventType=function(e){return"playing"===e||"loading"===e||"paused"===e},bn.prototype._mapStateToEventType=function(e){if(e)switch(String(e).toUpperCase()){case"LOADING":case"BUFFERING":return"loading";case"STARTED":case"PLAYING":return"playing";case"PAUSED":case"PAUSED_BY_USER":return"paused";case"ENDED":case"FINISHED":return"ended";case"INTERRUPTED":return"interrupted";case"ERROR":case"FAILED":return"error";default:return}};const Sn={chromecast:class extends un{initAppOnPlatform(e,t,i,r,n){let s=cast.receiver.CastReceiverManager.getInstance();if(s.isSystemReady())VizbeeSDK.logger.error("Vizbee should be initialized before calling CastReceiverManager.start()");else try{VizbeeSDK.logger.debug("Vizbee: creating vizbee custom channel");let e=s.getCastMessageBus("urn:x-cast:tv.vizbee.sync");r.vizbeeCustomChannel=e}catch(e){VizbeeSDK.logger.error("Vizbee should be initialized before calling CastReceiverManager.start()")}if(super.initAppOnPlatform(e,t,i,r),r.mediaManager){r.mediaManagerProcessorType||(r.mediaManagerProcessorType="default");let e=vn.createProcessor(r.mediaManagerProcessorType);if("custom"==r.mediaManagerProcessorType.toLowerCase()){if(!n)return void VizbeeSDK.logger.info("Vizbee: Incorrect API usage - customProcessorForMediaManager is required when mediaManagerProcessorType is custom");e.setupAppMediaManagerProcessor(n)}e.setup(this,r.mediaManager)}else VizbeeSDK.logger.info("Vizbee: Incorrect API usage - mediaManager is a required property in initAppOnPlatform method.");this._maybeStartStatusPoller()}_maybeStartStatusPoller(){if(!this.statusPoller){var e=!(!this.platformConfig||!this.platformConfig.videoElement),t=!(!this.appAdapter||"function"!=typeof this.appAdapter.getVideoInfo);if(!e&&t){var i=this;this.statusPoller=new bn({intervalMs:this.vzbOptions&&this.vzbOptions.statusPollIntervalMs,logger:VizbeeSDK.logger,getStatus:function(){return i.appAdapter.getVideoInfo()},setVideoSource:function(e){"undefined"!=typeof VZB&&VZB.setVideo&&VZB.setVideo(e)},setVideoGuid:function(e,t){"undefined"!=typeof VZB&&VZB.setVideoGuid&&VZB.setVideoGuid(e,t)},installAdSource:function(e){"undefined"!=typeof VZB&&VZB.setAdsVideo&&VZB.setAdsVideo(e)}}),this.statusPoller.start()}}}setAdAdapterType(e){VZB.setAdType(e),this.setAdsVideo(this.platformConfig.videoElement)}}};class _n extends un{get VERSION(){return window.VZB?window.VZB.VERSION:""}init(e,t,i,r){let n=ye.getPlatformType();n&&this.initAppOnPlatform(e,t,n,i,t.mediaManagerAdapter,r)}initAppOnPlatform(e,t,i,r,n,s){i=i.toLowerCase(),Sn[i]&&!t.vgaAdapter?(this._apiWrapper=new Sn[i],this._apiWrapper.setOptions(s),this._apiWrapper.initAppOnPlatform(e,t,i,r,n)):(this._apiWrapper=new un,this._apiWrapper.setOptions(s),this._apiWrapper.initAppOnPlatform(e,t,i,r))}setVideoGuid(e,t){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoGuid(e,t),!0}setVideoInfo(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoInfo(e),!0}setVideoStop(){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoStop(),!0}getAdsManager(){if(this._isAPIWrapperInitialized())return this._apiWrapper.getAdsManager()}setAdsVideo(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setAdsVideo(e),!0}setVideoElement(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setVideoElement(e)}setAdAdapterType(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.setAdAdapterType(e),!0}wrapAVPlayerListener(e){if(this._isAPIWrapperInitialized())return this._apiWrapper.wrapAVPlayerListener(e)}_isAPIWrapperInitialized(){return null!=this._apiWrapper}}let Tn,En;class In{constructor(){this.virtualAPIWrapper=cs,this.vzbOptions={}}static getInstance(){return null==Tn&&(Tn=new In),Tn}startWithOptions(e,t){this.vzbOptions=t||{},this.start(e)}start(e){this.isValidAppId(e)&&this.virtualAPIWrapper.init(e,{},{},this.vzbOptions)}isValidAppId(e){if("string"!=typeof e)return!1;let t=new RegExp("^vzb[0-9]+$"),i=new RegExp("^vzb(-[A-Za-z]+)+-[0-9]+$");return t.test(e)||i.test(e)}}class Pn{constructor(){this._configServiceProxyHost=void 0,this._customAttributesForMetrics=void 0}get configServiceProxyHost(){return this._configServiceProxyHost}set configServiceProxyHost(e){this._configServiceProxyHost=e}get customAttributesForMetrics(){return this._customAttributesForMetrics}set customAttributesForMetrics(e){this._customAttributesForMetrics=e}}class Vn{get ContinuityContext(){return In}get ContinuityOptions(){return Pn}}class An{constructor(){this.deeplinkHandler=void 0,this.vizbeeEventHandler=void 0,this.vizbeeSigninEventHandler=void 0}setSignInHandler(e){"function"==typeof e?this.vizbeeSigninEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setSignInHandler - NO SIGNIN Handler implemented by HostApp")}setDeeplinkHandler(e){"function"==typeof e?this.deeplinkHandler=e:vizbee.logger.warn(this.constructor.name+"::setDeeplinkHandler - NO DEEPLINK Handler implemented by HostApp")}setVizbeeEventHandler(e){"function"==typeof e?this.vizbeeEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setVizbeeEventHandler - NO Event Handler implemented by HostApp")}setVizbeeSigninEventHandler(e){"function"==typeof e?this.vizbeeSigninEventHandler=e:vizbee.logger.warn(this.constructor.name+"::setVizbeeSigninEventHandler - NO Event Handler implemented by HostApp")}}class Cn{static get AD_POD_WAITING(){return"awaiting-ad-pod"}static get AD_POD_START(){return"ad-pod-start"}static get AD_PREPARING(){return"ad-preparing"}static get AD_START(){return"ad-start"}static get AD_PLAYING(){return"ad-playing"}static get AD_PAUSED(){return"ad-paused"}static get AD_END(){return"ad-end"}static get AD_POD_END(){return"ad-pod-end"}static get AD_ERROR(){return"ad-error"}}class kn{constructor(e,t){this._eventType=e,this._eventData=t}set eventType(e){this._eventType=e}get eventType(){return this._eventType}set eventData(e){this._eventData=e}get eventData(){return this._eventData}}class Dn{constructor(e,t){this.type=e,this.data=t}}class Mn{constructor(e,t){this.adType=e,this.playerElement=t,this.vtvPlayerEvent=new Dn}updateAdStatus(e){this._isValidAdStatus(e)?this._handleAdStatus(e):vizbee.logger.verbose("AdAdapter::updateAdStatus - invalid ad status")}_isValidAdStatus(e){return e instanceof kn?-1!=[Cn.AD_POD_WAITING,Cn.AD_PREPARING,Cn.AD_POD_START,Cn.AD_POD_END,Cn.AD_START,Cn.AD_PLAYING,Cn.AD_PAUSED,Cn.AD_END,Cn.AD_ERROR].indexOf(e.eventType)||(vizbee.logger.warn(`AdAdapter::_isValidAdStatus - adStatus event type is invalid: ${e.eventType}`),!1):(vizbee.logger.warn("AdAdapter::_isValidAdStatus - adStatus is not an instance of vizbee.continuity.messages.AdStatus"),!1)}_handleAdStatus(e){e?(vizbee.logger.verbose(`AdAdapter::_handleAdStatus - eventType: ${e.eventType}`),this.vtvPlayerEvent.type=e.eventType,this.vtvPlayerEvent.data=e.eventData||{},VizbeeTV.tv.player.dispatchOnEvent(this.vtvPlayerEvent)):vizbee.logger.warn("AdAdapter::_handleAdStatus - invalid ad status")}}class wn{constructor(e,t){this.playerType=e,this.playerElement=t,this.playHandler=void 0,this.pauseHandler=void 0,this.seekHandler=void 0,this.stopHandler=void 0,this.videoInfoGetter=void 0,this.tracksGetHandler=void 0,this.enabledTracksGetHandler=void 0,this.enableTracksHandler=void 0,this.disableTracksHandler=void 0,this.vizbeeEventHandler=void 0}setPlayerType(e){e&&(this.playerType=e)}setPlayerElement(e){e&&(this.playerElement=e)}updateVideoInfo(e){window.vizbee&&vizbee.continuity.ContinuityContext.getInstance().setVideoInfo(e)}setVideoInfoGetter(e){"function"==typeof e&&(this.videoInfoGetter=e)}getVideoInfo(){if(this.videoInfoGetter)return this.videoInfoGetter()}setPlayHandler(e){"function"==typeof e&&(this.playHandler=e)}setPauseHandler(e){"function"==typeof e&&(this.pauseHandler=e)}setSeekHandler(e){"function"==typeof e&&(this.seekHandler=e)}setStopHandler(e){"function"==typeof e&&(this.stopHandler=e)}getTracksHandler(e){"function"==typeof e&&(this.tracksGetHandler=e)}getEnabledTracksHandler(e){"function"==typeof e&&(this.enabledTracksGetHandler=e)}setAvailableTracksGetter(e){"function"==typeof e&&(this.tracksGetHandler=e)}setEnabledTracksGetter(e){"function"==typeof e&&(this.enabledTracksGetHandler=e)}setEnableTracksHandler(e){"function"==typeof e&&(this.enableTracksHandler=e)}setDisableTracksHandler(e){"function"==typeof e&&(this.disableTracksHandler=e)}setVizbeeEventHandler(e){"function"==typeof e&&(this.vizbeeEventHandler=e)}}class Nn{static get UNKNOWN(){return"unknown"}static get HTML(){return"html"}static get AVPLAYER(){return"avplayer"}static get BITMOVIN(){return"bitmovin"}static get VIDEOJS(){return"videojs"}static get THEO(){return"theo"}static get SHAKA(){return"shaka"}}class On{static get UNKNOWN(){return"unknown"}static get SSAI(){return"ssai"}static get CSAI(){return"csai"}}class xn{constructor(){this._guid="",this._isLive=!1,this._startTime=0,this._videoUrl="",this._deeplink="",this._imgUrl="",this._title="",this._subtitle="",this._desc="",this._tracks=[],this._cuepoints=[],this._customStreamInfo=void 0,this._customMetadata=void 0}toJson(){let e={};return e.id=this._guid,e.islive=this._isLive,e.starttime=this._startTime,e.videourl=this._videoUrl,e.deeplink=this._deeplink,e.imgurl=this._imgUrl,e.title=this._title,e.subtitle=this._subtitle,e.desc=this._desc,e.tracks=this._tracks,e.cuepoints=this._cuepoints,e.customstreaminfo=this._customStreamInfo,e.custommetadata=this._customMetadata,e}fromJson(e){e?(this._guid=e.id,this._isLive=e.islive,this._startTime=e.starttime,this._videoUrl=e.videourl,this._deeplink=void 0!==e.deeplink&&null!==e.deeplink?e.deeplink:"",this._imgUrl=e.imgurl,this._title=e.title,this._subtitle=e.subtitle,this._desc=e.desc,this._tracks=e.tracks,this._cuepoints=e.cuepoints,this._customStreamInfo=e.customstreaminfo,this._customMetadata=e.custommetadata):vizbee.logger.debug(this.constructor.name+"::toJson - invalid syncVideoInfo")}set isLive(e){this._isLive=e}get isLive(){return this._isLive}set guid(e){this._guid=e}get guid(){return this._guid}set videoUrl(e){this._videoUrl=e}get videoUrl(){return this._videoUrl}set deeplink(e){this._deeplink=e}get deeplink(){return this._deeplink}set imgUrl(e){this._imgUrl=e}get imgUrl(){return this._imgUrl}set title(e){this._title=e}get title(){return this._title}set subtitle(e){this._subtitle=e}get subtitle(){return this._subtitle}set desc(e){this._desc=e}get desc(){return this._desc}set startTime(e){this._startTime=e}get startTime(){return this._startTime}set tracks(e){this._tracks=e}get tracks(){return this._tracks}set cuepoints(e){this._cuepoints=e}get cuepoints(){return this._cuepoints}set customStreamInfo(e){this._customStreamInfo=e}get customStreamInfo(){return this._customStreamInfo}set customMetadata(e){this._customMetadata=e}get customMetadata(){return this._customMetadata}}class zn{static get IDLE(){return"idle"}static get PREPARING(){return"preparing"}static get LOADING(){return"loading"}static get STARTED(){return"started"}static get PLAYING(){return"playing"}static get PAUSED(){return"paused"}static get BUFFERING(){return"buffering"}static get INTERRUPTED(){return"interrupted"}static get ENDED(){return"ended"}static get ERROR(){return"error"}}class Ln{constructor(){this._guid="",this._state=zn.IDLE,this._currentPosition=-1,this._duration=-1,this._isLive=!1,this._isDvrSupported=!1,this._title="",this._subtitle="",this._videoUrl="",this._imgUrl=""}set guid(e){this._guid=e}get guid(){return this._guid}set state(e){this._state=e}get state(){return this._state}set currentPosition(e){this._currentPosition=e}get currentPosition(){return this._currentPosition}set duration(e){this._duration=e}get duration(){return this._duration}set isLive(e){this._isLive=e}get isLive(){return this._isLive}set isDvrSupported(e){this._isDvrSupported=e}get isDvrSupported(){return this._isDvrSupported}set title(e){this._title=e}get title(){return this._title}set subtitle(e){this._subtitle=e}get subtitle(){return this._subtitle}set videoUrl(e){this._videoUrl=e}get videoUrl(){return this._videoUrl}set imgUrl(e){this._imgUrl=e}get imgUrl(){return this._imgUrl}}class Rn{constructor(){this._type="",this._data=void 0}set type(e){this._type=e}get type(){return this._type}set data(e){this._data=e}get data(){return this._data}}class Kn extends In{constructor(){super(),this.appAdapter=new An,this.playerAdapter=void 0,this.adAdapter=void 0,this.adType=void 0}static getInstance(){return null==En&&(En=new Kn,vizbee.logger.d(this.constructor.name,"getInstance","created")),En}getAppAdapter(){return this.appAdapter}setAppAdapter(e){e instanceof An&&(this.appAdapter=e)}getPlayerAdapter(){return this.playerAdapter}setPlayerAdapter(e){if(!this._isPlatformPlayerInitialized())return vizbee.logger.w("DefaultContinuityContext::setPlayerAdapter - Vizbee platform player not initialized"),!1;if(!this._isValidPlayerAdapter(e))return vizbee.logger.w("DefaultContinuityContext::setPlayerAdapter - playerAdapter should be valid and of type vizbee.continuity.adapters.PlayerAdapter"),!1;this.playerAdapter=e;let t=this._buildPlatformConfig(e);return VizbeeTV.tv.player.reconstruct(t),this._setAdAdapter(),!0}removePlayerAdapter(e){return this._isPlatformPlayerInitialized()?(this.stopVideo(),this.playerAdapter=void 0,!0):(vizbee.logger.w(this.constructor.name,"resetPlayerAdapter","Vizbee platform player not initialized"),!1)}setPlayerAdapterWithVideoInfo(e,t){return!!this.setPlayerAdapter(e)&&this.setVideoInfo(t)}setVideoInfo(e){return!!this._isValidVideoInfo(e)&&this.virtualAPIWrapper.setVideoInfo(e.toJson())}getVideoInfo(){if(this.playerAdapter&&this.playerAdapter.getVideoInfo){let e=this.playerAdapter.getVideoInfo();if(e instanceof Ln)return e}}getAdAdapter(e){return this.adAdapter}setAdAdapter(e){return e instanceof Mn?this._isValidAdType(e.adType)?(this.adAdapter=e,this.setAdType(On.CSAI),void this._setAdAdapter()):(vizbee.logger.w("DefaultContinuityContext::setAdAdapter - adAdapter.adType is INVALID"),!1):(vizbee.logger.w("DefaultContinuityContext::setAdAdapter - AdAdapter should be of type vizbee.continuity.adapters.AdAdapter"),!1)}removeAdAdapter(e){this.adAdapter=void 0}setAdType(e){this._isValidAdType(e)&&(this.adType=e,this._setAdAdapter())}start(e){if(!this.isValidAppId(e))return;let t={};t.appAdapter={startVideo:e=>{if(this.appAdapter&&this.appAdapter.deeplinkHandler){let t=new xn;t.fromJson(e),this.appAdapter.deeplinkHandler(t)}else vizbee.logger.w(this.constructor.name,"startVideo","NO DEEPLINK HANDLER")},onEvent:e=>{if(this.appAdapter&&this.appAdapter.vizbeeSigninEventHandler&&e&&"tv.vizbee.homesign.signin"===e.type){let t=new Rn;t.type=e.type,t.data=e.data,this.appAdapter.vizbeeSigninEventHandler(t)}if(this.appAdapter&&this.appAdapter.vizbeeEventHandler&&e){let t=new Rn;t.type=e.type,t.data=e.data,this.appAdapter.vizbeeEventHandler(t)}if(this.playerAdapter&&this.playerAdapter.vizbeeEventHandler&&e){let t=new Rn;t.type=e.type,t.data=e.data,this.playerAdapter.vizbeeEventHandler(t)}},playVideo:()=>!(!this.playerAdapter||!this.playerAdapter.playHandler||(this.playerAdapter.playHandler(),0)),pauseVideo:()=>!(!this.playerAdapter||!this.playerAdapter.pauseHandler||(this.playerAdapter.pauseHandler(),0)),seekVideo:e=>!(!this.playerAdapter||!this.playerAdapter.seekHandler||(this.playerAdapter.seekHandler(e),0)),stopVideo:e=>!(!this.playerAdapter||!this.playerAdapter.stopHandler||(this.playerAdapter.stopHandler(e),0)),getTracks:()=>!(!this.playerAdapter||!this.playerAdapter.tracksGetHandler)&&this.playerAdapter.tracksGetHandler(),getEnabledTracks:()=>!(!this.playerAdapter||!this.playerAdapter.enabledTracksGetHandler)&&this.playerAdapter.enabledTracksGetHandler(),enableTracks:e=>!(!this.playerAdapter||!this.playerAdapter.enableTracksHandler||(this.playerAdapter.enableTracksHandler(e),0)),disableTracks:e=>!(!this.playerAdapter||!this.playerAdapter.disableTracksHandler||(this.playerAdapter.disableTracksHandler(e),0)),getVideoInfo:()=>this._buildSyncVideoInfo()},this.virtualAPIWrapper.init(e,t,{},this.vzbOptions)}stopVideo(){vizbee.logger.d(this.constructor.name,"stopVideo"),this.virtualAPIWrapper&&this.virtualAPIWrapper.setVideoStop&&(vizbee.logger.d(this.constructor.name,"stopVideo","calling setVideoStop"),this.virtualAPIWrapper.setVideoStop())}_buildPlatformConfig(e){let t={standalone:!0,videoElement:e.playerElement,vtvPlayerListConfig:[{type:"native"}]};return e.playerType==Nn.BITMOVIN&&(t.vtvPlayerListConfig=[{type:"bitmovin"}]),e.playerType==Nn.VIDEOJS&&(t.vtvPlayerListConfig=[{type:"videojs"}]),e.playerType==Nn.THEO&&(t.vtvPlayerListConfig=[{type:"theo"}]),e.playerType==Nn.SHAKA&&(t.vtvPlayerListConfig=[{type:"shaka"}]),t}_isValidVideoInfo(e){return e instanceof xn||(vizbee.logger.w(this.constructor.name,"_isValidVideoInfo","videoInfo should be of type vizbee.continuity.messages.VideoInfo"),!1)}_isValidPlayerAdapter(e){return e instanceof wn?!(e&&!e.playerElement&&(vizbee.logger.d(this.constructor.name,"_isValidPlayerAdapter","playerAdapter should contain playerElement"),1)):(vizbee.logger.d(this.constructor.name,"_isValidPlayerAdapter","playerAdapter should be of type vizbee.continuity.adapters.PlayerAdapter"),!1)}_isPlatformInitialized(){return VizbeeTV&&VizbeeTV.tv}_isPlatformPlayerInitialized(){return this._isPlatformInitialized()&&VizbeeTV.tv.player}_isValidAdType(e){return e?e==On.SSAI||e==On.CSAI||(vizbee.logger.w(`DefaultContinuityContext::_isValidAdType - adType is invalid: ${e}`),!1):(vizbee.logger.w("DefaultContinuityContext::_isValidAdType - adType is undefined"),!1)}_mapPlayerStateToSyncState(e){return{idle:"UNKNOWN",preparing:"UNKNOWN",loading:"BUFFERING",started:"PLAYING",playing:"PLAYING",paused:"PAUSED_BY_USER",buffering:"BUFFERING",interrupted:"INTERRUPTED",ended:"FINISHED",error:"FAILED"}[e]||e}_getAdAdapterType(e){if(e&&e.playerType)return this.adType==On.CSAI?"vzb_ad_default":this.adType==On.SSAI?e.playerType==Nn.AVPLAYER?"vzb_ad_ssai_avplay":"vzb_ad_default":void 0;vizbee.logger.w(this.constructor.name,"_getAdAdapterType","INVALID playerAdapter")}_buildSyncVideoInfo(){if(!this.playerAdapter||!this.playerAdapter.getVideoInfo)return;let e=this.playerAdapter.getVideoInfo();if(!(e instanceof Ln))return;let t={};return e.guid&&(t.id=e.guid),e.videoUrl&&(t.videourl=e.videoUrl),!1!==e.isLive&&(t.islive=e.isLive),!1!==e.isDvrSupported&&(t.isdvrsupported=e.isDvrSupported),e.title&&(t.title=e.title),e.subtitle&&(t.subtitle=e.subtitle),e.imgUrl&&(t.imgurl=e.imgUrl),e.currentPosition>=0&&(t.position=e.currentPosition),e.duration>=0&&(t.duration=e.duration),t}_setAdAdapter(){let e=this._getAdAdapterType(this.playerAdapter);e&&this.virtualAPIWrapper&&VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player&&(this.virtualAPIWrapper.setAdAdapterType(e),this.virtualAPIWrapper.setAdsVideo(VizbeeTV.tv.player))}}class Un{constructor(){this.playHandler=void 0,this.pauseHandler=void 0,this.seekHandler=void 0,this.stopHandler=void 0,this.videoInfoGetter=void 0,this.enableTracksHandler=void 0,this.disableTracksHandler=void 0,this.availableTracksGetter=void 0,this.enabledTracksGetter=void 0,this.vizbeeEventHandler=void 0}updateVideoInfo(e){window.vizbee&&vizbee.continuity.ContinuityContext.getInstance().setVideoInfo(e)}setVideoInfoGetter(e){"function"==typeof e&&(this.videoInfoGetter=e)}getVideoInfo(){if(this.videoInfoGetter)return this.videoInfoGetter()}updateVideoStatus(e){}setPlayHandler(e){"function"==typeof e&&(this.playHandler=e)}setPauseHandler(e){"function"==typeof e&&(this.pauseHandler=e)}setSeekHandler(e){"function"==typeof e&&(this.seekHandler=e)}setStopHandler(e){"function"==typeof e&&(this.stopHandler=e)}setAvailableTracksGetter(e){"function"==typeof e&&(this.availableTracksGetter=e)}setEnabledTracksGetter(e){"function"==typeof e&&(this.enabledTracksGetter=e)}setEnableTracksHandler(e){"function"==typeof e&&(this.enableTracksHandler=e)}setDisableTracksHandler(e){"function"==typeof e&&(this.disableTracksHandler=e)}setVizbeeEventHandler(e){"function"==typeof e&&(this.vizbeeEventHandler=e)}}class Bn extends ${constructor(e){if(!(e instanceof $))throw new TypeError("BasePlayerExtension::constructor() - playerToExtend must be instance of BasePlayerExtensible.");super(e.platform),this.extendedPlayer=e,this.parentExtension=null,this.isExtendedPlayerBasePlayer()||(this.extendedPlayer.parentExtension=this),this.registerEvents(this.extendedPlayer,this),VizbeeTV.logger.debug(this.constructor.name+"::constructed")}registerEvents(e,t){e&&t?(e.onLoading=e=>{this.onLoadingHandler.call(t,e)},e.onStarted=e=>{this.onStartedHandler.call(t,e)},e.onPlaying=e=>{this.onPlayingHandler.call(t,e)},e.onPaused=e=>{this.onPausedHandler.call(t,e)},e.onBuffering=e=>{this.onBufferingHandler.call(t,e)},e.onBufferingComplete=e=>{this.onBufferingCompleteHandler.call(t,e)},e.onTimeUpdate=e=>{this.onTimeUpdateHandler.call(t,e)},e.onInterrupted=e=>{this.onInterruptedHandler.call(t,e)},e.onEnded=e=>{this.onEndedHandler.call(t,e)},e.onError=e=>{this.onErrorHandler.call(t,e)},e.onEvent=e=>{this.onEventHandler.call(t,e)}):VizbeeTV.logger.error(this.constructor.name+"::registerEvents - MISSING playerToExtend/currentPlayer")}reconstruct(e){this.extendedPlayer.reconstruct(e)}beforeStart(e){super.start(e)}start(e){this.beforeStart(e),this.extendedPlayer.start(e)}play(){this.extendedPlayer.play()}pause(){this.extendedPlayer.pause()}togglePlayPause(){VizbeeTV.logger.debug("BasePlayerExtension::togglePlayPause() -- called"),this.extendedPlayer.togglePlayPause()}stop(e){this.extendedPlayer.stop(e)}seek(e){this.extendedPlayer.seek(e)}currentTime(){return this.extendedPlayer.currentTime()}getDuration(){return this.extendedPlayer.getDuration()}getStartTime(){return this.extendedPlayer.getStartTime()}getBufferLevel(){return this.extendedPlayer.getBufferLevel()}getAudioBufferLevel(){return this.extendedPlayer.getAudioBufferLevel()}getCurrentState(){return this.extendedPlayer.getCurrentState()}getCurrentVersion(){return this.extendedPlayer.getCurrentVersion()}getTracks(e){return this.extendedPlayer.getTracks(e)}getEnabledTracks(e){return this.extendedPlayer.getEnabledTracks(e)}setTracks(e){return this.extendedPlayer.setTracks(e)}enableTracks(e){this.extendedPlayer.enableTracks(e)}disableTracks(e){this.extendedPlayer.disableTracks(e)}changeAudioTrack(e){this.extendedPlayer.changeAudioTrack(e)}doAction(e){return this.extendedPlayer.doAction(e)}getName(){return this.extendedPlayer.getName()}destroy(){this.resetListeners(),this.extendedPlayer.destroy()}getStreamQualityInfo(){return this.extendedPlayer?this.extendedPlayer.getStreamQualityInfo():{}}setStreamQualityInfo(e){this.extendedPlayer&&this.extendedPlayer.setStreamQualityInfo(e)}resetStreamQualityInfo(){this.extendedPlayer&&this.extendedPlayer.resetStreamQualityInfo()}get basePlayer(){return this.isExtendedPlayerBasePlayer()?this.extendedPlayer.currentPlayer:this.extendedPlayer instanceof Bn?this.extendedPlayer.basePlayer:void 0}isExtendedPlayerBasePlayer(){return this.extendedPlayer instanceof $&&!(this.extendedPlayer instanceof Bn)}get parentPlayer(){return this.parentExtension}onLoadingHandler(e){this.dispatchOnLoading.call(this,e)}onStartedHandler(e){this.dispatchOnStarted.call(this,e)}onPlayingHandler(e){this.dispatchOnPlaying.call(this,e)}onPausedHandler(e){this.dispatchOnPaused.call(this,e)}onBufferingHandler(e){this.dispatchOnBuffering.call(this,e)}onBufferingCompleteHandler(e){this.dispatchOnBufferingComplete.call(this,e)}onTimeUpdateHandler(e){this.dispatchOnTimeUpdate.call(this,e)}onInterruptedHandler(e){this.dispatchOnInterrupted.call(this,e)}onEndedHandler(e){this.dispatchOnEnded.call(this,e)}onErrorHandler(e){this.dispatchOnError.call(this,e)}onEventHandler(e){this.dispatchOnEvent.call(this,e)}}class Fn extends wn{constructor(){super(Nn.AVPLAYER,webapis.avplay)}setPlayerType(e){}setPlayerElement(e){}wrapListener(e){let t=this._getVTVAVPlayer();return null==t?(vizbee.logger.warn(this.constructor.name+"::wrapListener - can't get AVPlayer"),e):t.wrapAVPlayerListener(e)}getListener(){let e=this._getVTVAVPlayer();if(null!=e)return e.getListener();vizbee.logger.warn(this.constructor.name+"::getListener - can't get AVPlayer")}_getVTVAVPlayer(){if(!this.playerElement)return;let e,t;if(VizbeeTV&&VizbeeTV.tv&&VizbeeTV.tv.player)return e=VizbeeTV.tv.player,Object.getPrototypeOf(e.constructor).name===Bn.name?t=e.basePlayer:Object.getPrototypeOf(e.constructor).name===$.name&&(t=e.currentPlayer),t&&"avplayer"==t.getName().toLowerCase()?t:void vizbee.logger.warn(this.constructor.name+"::_getVTVAVPlayer - can't get AVPlayer");vizbee.logger.warn(this.constructor.name+"::_getVTVAVPlayer - can't get platform player")}}class Hn{static get STOP_REASON_UNKNOWN(){return"stop_reason_unknown"}static get STOP_BY_USER(){return"stop_by_user"}static get STOP_IMPLICIT(){return"stop_implicit"}static get STOP_REASON_BEFORE_NEXT_VIDEO(){return"stop_reason_before_next_video"}}class Gn{constructor(){}wasAppLaunchedByVizbee(){return!!VizbeeTV.tv.launchParamsDeferral&&VizbeeTV.tv.launchParamsDeferral.isLaunchedbyVizbee()}wasVideoStartedByVizbee(){return VZB.wasVideoStartedByVizbee()}addProvider(e,t){const i=VZB.getMetricsManager();i&&i.addProvider(e,t)}removeProvider(e){const t=VZB.getMetricsManager();t&&t.removeProvider(e)}logMetrics(e,t){const i=VZB.getMetricsManager();i&&i.trackEvent(e,t)}setCustomAttributes(e){const t=VZB.getMetricsManager();t&&t.setCustomProperties(e)}}class Wn{constructor(){this._type="",this._id=-1}toJSON(){return{type:this._type,id:this._id}}fromJSON(e){e&&e.type&&!isNaN(e.id)?(this._type=e.type,this._id=e.id):VizbeeSDK.logger.verbose("Track::fromJSON - invalid trackInfo")}set type(e){this._type=e}get type(){return this._type}set id(e){this._id=e}get id(){return this._id}}class jn extends Wn{constructor(){super(),this.type=i,this.subtype="",this._lang=""}toJSON(){let e=super.toJSON();return e.lang=this._lang,e.subtype=this._subtype,e}fromJSON(e){e?(e.type=e.type||this.type,super.fromJSON(e),this._lang=e.lang,this._subtype=e.subtype):VizbeeSDK.logger.verbose("SubtitleTrack::fromJSON - invalid trackInfo")}set lang(e){this._lang=e}get lang(){return this._lang}set subtype(e){this._subtype=e}get subtype(){return this._subtype}}class qn{constructor(){this.state={message:"This is vizbee snackbar!",theme:{color:"#FFFFFF",bgColor:"#7F98DE"},layout:{position:""},border:{color:"#FFFFFF"},font:{uri:"",family:"",size:24,weight:""},icon:{uri:"https://static.claspws.tv/screen/icons/common/user_icon_white.png"}},this.uiContainer=document.getElementsByTagName("body")[0],this.uiContainer&&(this._setupCSS(),this.render(this.uiContainer),this.isCurrentAnimationShowingUI=void 0)}render(e){this.nodes||e&&(this.nodes={},this.nodes.popupMessageWithIconOverlay=document.createElement("div"),this.nodes.popupMessageWithIconOverlay.id="vizbeeSnackbarOverlay",this.nodes.popupMessageWithIconOverlay.className="opaqueBackground hidden",this.nodes.popupMessageWithIconContainer=document.createElement("div"),this.nodes.popupMessageWithIconContainer.id="popupTimedoutMessageWithIconUIContainer",this.nodes.popupMessageWithIconContainer.className="popupTimedoutMessageWithIconUIContainer",this.nodes.popupMessageWithIconContainer.style.color=this.state.theme.color,this.nodes.popupTimedoutIconEle=document.createElement("div"),this.nodes.popupTimedoutIconEle.id="popupTimedoutIconEle",this.nodes.popupTimedoutIconEle.className="popupTimedoutIconEle",this.nodes.popupTimedoutMessageEle=document.createElement("div"),this.nodes.popupTimedoutMessageEle.id="popupTimedoutMessageEle",this.nodes.popupTimedoutMessageEle.className="popupMessageEle",this.nodes.popupMessageWithIconContainer.appendChild(this.nodes.popupTimedoutIconEle),this.nodes.popupMessageWithIconContainer.appendChild(this.nodes.popupTimedoutMessageEle),this.nodes.popupMessageWithIconOverlay.appendChild(this.nodes.popupMessageWithIconContainer),e.appendChild(this.nodes.popupMessageWithIconOverlay),this._updateUI())}setOptions(e){e&&(this.state.message=e.message||this.state.message,this.state.theme.color=e.theme.color||this.state.theme.color,this.state.theme.bgColor=e.theme.bgColor||this.state.theme.bgColor,this.state.layout.position=e.layout.position||this.state.layout.position,this.state.border.color=e.border.color||this.state.border.color,this.state.font.uri=e.font.uri||this.state.font.uri,this.state.font.family=e.font.family||this.state.font.family,this.state.font.size=this.screenRatio*(e.font.size||this.state.font.size),this.state.font.weight=e.font.weight||this.state.font.weight,this.state.icon.uri=e.icon.uri||this.state.icon.uri,this._updateUI(),this.show())}show(){this.nodes&&this.nodes.popupMessageWithIconOverlay&&(this._showUIWithAnimation(),M.removeClass("hidden",this.nodes.popupMessageWithIconOverlay))}hide(){this.nodes&&this.nodes.popupMessageWithIconOverlay&&this.nodes.popupMessageWithIconContainer&&(M.addClass("hidden",this.nodes.popupMessageWithIconOverlay),this.uiContainer&&this.uiContainer.contains(this.nodes.popupMessageWithIconOverlay)&&this.nodes.popupMessageWithIconOverlay.parentNode.removeChild(this.nodes.popupMessageWithIconOverlay))}_updateUI(){if(!this.nodes)return;let e=this.nodes.popupMessageWithIconContainer;if(e){e.style.color=this.state.theme.color,e.style.backgroundColor=this.state.theme.bgColor,null!=this.state.border.color&&(e.style.borderColor=this.state.border.color);const t=this.state.layout.position;if(t){delete e.style.top,delete e.style.right,delete e.style.bottom,delete e.style.left,e.style.position=t;const i=30*this.screenRatio+"px";t.indexOf("top")>-1?(e.style.top=i,t.indexOf("left")>-1?e.style.left=i:e.style.right=i):(e.style.bottom=i,t.indexOf("left")>-1?e.style.left=i:e.style.right=i)}}let t=this.nodes.popupTimedoutMessageEle;t&&(null!=this.state.font.uri&&(t.style.fontFamily=this.state.font.family),null!=this.state.font.size&&(t.style.fontSize=this.state.font.size+"px"),null!=this.state.font.weight&&(t.style.fontWeight=this.state.font.weight),null!=this.state.font.color&&(t.style.color=this.state.font.color),t.innerHTML=this.state.message);let i=this.nodes.popupTimedoutIconEle;i&&(this.state.icon.uri?(i.style.minWidth=36*this.screenRatio+"px",i.style.minHeight=36*this.screenRatio+"px",i.style.backgroundImage="url('"+this.state.icon.uri+"')",t&&(t.style.paddingLeft=12*this.screenRatio+"px")):(i.style.minWidth="0px",i.style.width="0px",t&&(t.style.paddingLeft="0px")))}_showUIWithAnimation(){this.isCurrentAnimationShowingUI=!0,P.get(this.state,["layout","position"],"").indexOf("top")>-1?this._showSlidingFromTopToBottom():this._showSlidingFromBottomToTop()}_isAnimationSupported(e){return e&&"function"==typeof e.animate}_showSlidingFromBottomToTop(){if(!this.nodes||!this.nodes.popupMessageWithIconContainer)return;if(!this._isAnimationSupported(this.nodes.popupMessageWithIconContainer))return void VizbeeTV.logger.i("PopupMessageWithIconView","_showSlidingFromBottomToTop","animation NOT supported!");const e=this.nodes.popupMessageWithIconContainer.offsetHeight+50,t=[{transform:"translateY("+e+"px)"},{transform:"translateY("+e/2+"px)"},{transform:"translateY(0px)"}];this.nodes.popupMessageWithIconContainer.animate(t,{duration:300,iterations:1})}_showSlidingFromTopToBottom(){if(!this.nodes||!this.nodes.popupMessageWithIconContainer)return;if(!this._isAnimationSupported(this.nodes.popupMessageWithIconContainer))return void VizbeeTV.logger.i("PopupMessageWithIconView","_showSlidingFromTopToBottom","animation NOT supported!");const e=this.nodes.popupMessageWithIconContainer.offsetHeight+50,t=[{transform:"translateY(-"+e+"px)"},{transform:"translateY(-"+e/2+"px)"},{transform:"translateY(0px)"}];this.nodes.popupMessageWithIconContainer.animate(t,{duration:300,iterations:1})}_setupCSS(){this.screenRatio=this._getScreenRatio();let e=this._processCSS(this.screenRatio,"\n #vizbeeSnackbarOverlay {\n position: absolute;\n top: 0px;\n left: 0px;\n width: $1280px;\n height: $720px;\n background: transparent !important;\n z-index: 9999;\n }\n\n #popupTimedoutMessageWithIconUIContainer {\n position: absolute;\n display: inline-flex;\n align-items: center;\n max-width: $420px;\n max-height: $80px;\n background: white;\n border-color: #FFFFFF;\n border: solid;\n border-width: $1px;\n border-radius: $45px;\n padding: $10px $24px;\n text-align: left !important;\n }\n\n #popupTimedoutIconEle {\n width: $36px;\n height: $36px;\n min-width: $36px;\n min-height: $36px;\n background-size: contain;\n background-repeat: no-repeat;\n }\n\n #popupTimedoutMessageEle {\n padding-left: $12px;\n }\n");this._appendToHEAD("vizbeeSnackbarCSS",e)}_processCSS(e,t){if(t)return t.replace(/\$[0-9]+/gi,function(t){let i=t.split("$");return Math.ceil(e*i[1])})}_getScreenRatio(){return document.body.clientWidth/1280}_appendToHEAD(e,t){if(this._isEmpty(e))return;if(this._isEmpty(t))return;let i=document.getElementById(e);if(null!==i&&i instanceof HTMLStyleElement)return;let r=document.createElement("style");r.type="text/css",r.id=e,r.styleSheet?r.styleSheet.cssText=t:r.appendChild(document.createTextNode(t)),document.getElementsByTagName("head")[0].appendChild(r)}_isEmpty(e){return void 0===e||0==e.length||null==e}}class Jn{constructor(e){this.uiConfig=e,this.popupMessageWithIconView=void 0}show(e=8){this.hide(),this.uiConfig&&"function"==typeof this.uiConfig.toJSON?(this.popupMessageWithIconView=new qn,this.popupMessageWithIconView.setOptions(this.uiConfig.toJSON()),-1!==e&&setTimeout(()=>{this.popupMessageWithIconView.hide()},1e3*e)):VizbeeTV.logger.e("PopupMessageWithIconView","show","Invalid uiConfig")}hide(){this.popupMessageWithIconView&&this.popupMessageWithIconView.hide();let e=document.getElementById("vizbeeSnackbarOverlay");e&&(VizbeeTV.logger.i("PopupMessageWithIconView","hide","Removing vizbeeSnackbarEle"),e.parentNode.removeChild(e))}}const Yn={TOP_LEFT:"top-left",TOP_RIGHT:"top-right",BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right"};class $n{constructor(){this._message="This is a vizbee snackbar message",this._theme={color:"#FFFFFF",bgColor:"#7F98DE"},this._layout={position:Yn.BOTTOM_RIGHT},this._border={color:"#FFFFFF"},this._font={uri:"",family:"",size:24,weight:""},this._icon={uri:"https://s3.amazonaws.com/vga-videos/images/vsa/loading.gif"}}get message(){return this._message}set message(e){this._message=e}get theme(){return this._theme}set theme(e){this._theme=e}get layout(){return this._layout}set layout(e){this._layout=e}get border(){return this._border}set border(e){this._border=e}get font(){return this._font}set font(e){this._font=e}get icon(){return this._icon}set icon(e){this._icon=e}fromJSON(e){e&&(this._message=e.message,e.theme&&(this._theme.color=e.theme.color||this._theme.color,this._theme.bgColor=e.theme.bgColor||this._theme.bgColor),e.layout&&(this._layout=e.layout||this._layout),e.border&&(this._border=e.border||this._border),e.font&&(this._font.uri=e.font.uri||this._font.uri,this._font.family=e.font.family||this._font.family,this._font.size=e.font.size||this._font.size,this._font.weight=e.font.weight||this._font.weight),e.icon&&e.icon.uri&&(this._icon.uri=e.icon.uri||this._icon.uri))}toJSON(){return{message:this._message,theme:this._theme,layout:this._layout,border:this._border,font:this._font,icon:this._icon}}}function Qn(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class Zn{constructor(){Qn(this,"namespaceAndReceiverMap",new Map)}async send(e,t){return VizbeeSDK.logger.debug(this.constructor.name,"send",`namespace: ${t}, payload: ${JSON.stringify(e)}`),new Promise((i,r)=>{window.VZB.sendXMessage(e,t,{onSuccess:e=>{i()},onFailure:e=>{r(e)}})})}addReceiver(e,t){VizbeeSDK.logger.debug(this.constructor.name,"addReceiver",`with namespace: ${e}`),this.namespaceAndReceiverMap.set(e,t)}removeReceiver(e,t){VizbeeSDK.logger.debug(this.constructor.name,"removeReceiver",`with namespace: ${e}`),this.namespaceAndReceiverMap.delete(e)}onReceive(e,t,i){VizbeeSDK.logger.debug(this.constructor.name,"onReceive",`namespace: ${e}, payload: ${JSON.stringify(t)}, device: ${i}`);const r=this.namespaceAndReceiverMap.get(e);r&&r(t,e,i)}}let Xn=function(e){return e.ANDROID_MOBILE="Android",e.IOS="iOS",e.UNKNOWN="Unknown",e}({}),es=function(e){return e.ANDROID_MOBILE="ANDROID_MOBILE",e.IOS="IOS",e.UNKNOWN="UNKNOWN",e}({});function ts(e){switch(e){case Xn.ANDROID_MOBILE:return es.ANDROID_MOBILE;case Xn.IOS:return es.IOS;case Xn.UNKNOWN:default:return es.UNKNOWN}}let is=function(e){return e.JOIN="JOIN",e.LEAVE="LEAVE",e}({}),rs=function(e){return e.JOIN="JOIN",e.LEAVE="LEAVE",e}({});class ns{constructor(){Qn(this,"presenceCallbacks",[]),Qn(this,"syncController",null),this.init()}init(){var e,t,i;this.syncController=null===(e=window.VZB)||void 0===e||null===(t=e.getSyncController)||void 0===t?void 0:t.call(e),this.syncController?this.listenForSyncControllerSessionState():(null===(i=window.VizbeeSDK)||void 0===i||null===(i=i.logger)||void 0===i||i.warn("VizbeeBicastMemberPresenceClientImpl","init","syncController is not available"),this.listenForSyncControllerAvailability())}listenForSyncControllerAvailability(){var e,t;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerAvailability","waiting for syncController to be available"),null===(t=window.VZB)||void 0===t||t.addSyncReadyListener(()=>{var e,t,i;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerAvailability","syncController is now available"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.listenForSyncControllerSessionState()})}listenForSyncControllerSessionState(){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState","subscribing to presence events"),this.syncController.subscribeToPresence(e=>{if(VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState",`presence event received: ${JSON.stringify(e)}`),null!==e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","listenForSyncControllerSessionState",`processing presence event: ${JSON.stringify(e)}`);const t=this.toVizbeeDevice(e.member),i={event:e.event===rs.JOIN?is.JOIN:is.LEAVE,device:t};this.presenceCallbacks.forEach(e=>e(i))}})}subscribe(e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","subscribe",e),this.presenceCallbacks.push(e)}unsubscribe(e){VizbeeSDK.logger.debug("VizbeeBicastMemberPresenceClientImpl","unsubscribe","");const t=this.presenceCallbacks.indexOf(e);t>-1&&this.presenceCallbacks.splice(t,1)}getMembers(){var e,t;const i=(null===(e=this.syncController)||void 0===e||null===(t=e.getActiveSenders)||void 0===t?void 0:t.call(e))||{};return Object.values(i).map(e=>this.toVizbeeDevice(e))}toVizbeeDevice(e){var t,i,r,n,s,a,o,l,d,c,u;return{deviceId:null!==(t=null==e||null===(i=e.ssinfo)||void 0===i?void 0:i.REMOTE_DEVICE_ID)&&void 0!==t?t:"UNKNOWN",friendlyName:null!==(r=null==e||null===(n=e.ssinfo)||void 0===n?void 0:n.REMOTE_FRIENDLY_NAME)&&void 0!==r?r:"UNKNOWN",modelName:null!==(s=null==e||null===(a=e.ssinfo)||void 0===a?void 0:a.modelName)&&void 0!==s?s:"UNKNOWN",modelNumber:null!==(o=null==e||null===(l=e.ssinfo)||void 0===l?void 0:l.modelNumber)&&void 0!==o?o:"UNKNOWN",manufacturer:null!==(d=null==e||null===(c=e.ssinfo)||void 0===c?void 0:c.manufacturer)&&void 0!==d?d:"UNKNOWN",deviceType:ts(null==e||null===(u=e.ssinfo)||void 0===u?void 0:u.REMOTE_DEVICE_TYPE)}}}Qn(ns,"LOG_TAG","VizbeeBicastMemberPresenceClientImpl");class ss{constructor(){Qn(this,"_messagingClient",null),Qn(this,"_presenceClient",null)}getMessagingClient(){return this._messagingClient||(this._messagingClient=new Zn),this._messagingClient}getPresenceClient(){return this._presenceClient||(this._presenceClient=new ns),this._presenceClient}}class as{constructor(){if(Qn(this,"session",null),Qn(this,"sessionState",dr.NOT_CONNECTED),Qn(this,"sessionStateListeners",[]),Qn(this,"syncController",null),Qn(this,"onSessionStateChanged",e=>{var t,i;switch(this.sessionState=e,e){case dr.CONNECTED:null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.info("VizbeeBicastSessionManager","onSessionStateChanged","CONNECTED"),this.session=new ss,this.sessionStateListeners.forEach(e=>e.onSessionStateChanged(dr.CONNECTED));break;case dr.NOT_CONNECTED:null===(i=window.VizbeeSDK)||void 0===i||null===(i=i.logger)||void 0===i||i.info("VizbeeBicastSessionManager","onSessionStateChanged","NOT_CONNECTED"),this.session=null,this.sessionStateListeners.forEach(e=>e.onSessionStateChanged(dr.NOT_CONNECTED))}}),as.instance)return as.instance;this.init(),as.instance=this}init(){var e,t,i,r;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","init","initialize session manager"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.syncController?this.listenForSyncControllerSessionState():(null===(r=window.VizbeeSDK)||void 0===r||null===(r=r.logger)||void 0===r||r.warn("VizbeeBicastSessionManager","init","syncController is not available"),this.listenForSyncControllerAvailability())}listenForSyncControllerAvailability(){var e,t;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","listenForSyncControllerAvailability","waiting for syncController to be available"),null===(t=window.VZB)||void 0===t||t.addSyncReadyListener(()=>{var e,t,i;null===(e=window.VizbeeSDK)||void 0===e||null===(e=e.logger)||void 0===e||e.debug("VizbeeBicastSessionManager","listenForSyncControllerAvailability","syncController is now available"),this.syncController=null===(t=window.VZB)||void 0===t||null===(i=t.getSyncController)||void 0===i?void 0:i.call(t),this.listenForSyncControllerSessionState()})}listenForSyncControllerSessionState(){var e,t,i,r;this.sessionState=null!==(e=null===(t=this.syncController)||void 0===t||null===(i=t.sessionState)||void 0===i?void 0:i.call(t))&&void 0!==e?e:dr.NOT_CONNECTED,this.sessionState===dr.CONNECTED&&(this.session=new ss),null===(r=this.syncController)||void 0===r||r.addSessionStateListener(this.onSessionStateChanged)}addSessionStateListener(e){var t;null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.debug("VizbeeBicastSessionManager","addSessionStateListener","add session state listener"),"function"==typeof e?this.sessionStateListeners.push({onSessionStateChanged:e}):this.sessionStateListeners.push(e)}removeSessionStateListener(e){var t;null===(t=window.VizbeeSDK)||void 0===t||null===(t=t.logger)||void 0===t||t.debug("VizbeeBicastSessionManager","removeSessionStateListener","remove session state listener");const i=this.sessionStateListeners.indexOf(e);i>-1&&this.sessionStateListeners.splice(i,1)}getSession(){return this.session}isConnecting(){return this.sessionState===dr.CONNECTING}isConnected(){return this.sessionState===dr.CONNECTED}}class os{constructor(){if(Qn(this,"presenceCallbacks",[]),Qn(this,"vizbeeSession",null),os.instance)return os.instance;this.init(),os.instance=this}init(){try{var e;if(VizbeeSDK.logger.info("VizbeePresenceManager::init - Initializing Vizbee Presence Manager"),null===(e=window.vizbee)||void 0===e||null===(e=e.continuity)||void 0===e||!e.xmessages)throw new Error("Vizbee continuity or xmessages not initialized");const t=new window.vizbee.continuity.xmessages.VizbeeBicastSessionManager;if(!t)throw new Error("Session manager initialization failed");t.addSessionStateListener({onSessionStateChanged:e=>{if(VizbeeSDK.logger.info("VizbeePresenceManager::init - Session state changed:",e),e===dr.CONNECTED){if(VizbeeSDK.logger.debug("VizbeePresenceManager::init - Session connected"),this.vizbeeSession=t.getSession(),!this.vizbeeSession)throw new Error("Failed to retrieve Vizbee session");if(this.vizbeePresenceClient=this.vizbeeSession.getPresenceClient(),!this.vizbeePresenceClient)throw new Error("Failed to retrieve Vizbee presence client");if(this.presenceCallbacks.length>0)for(let e=0;e<this.presenceCallbacks.length;e++){const t=this.presenceCallbacks[e];this.vizbeePresenceClient.subscribe(t)}}else{if(this.vizbeePresenceClient)for(let e=0;e<this.presenceCallbacks.length;e++){const t=this.presenceCallbacks[e];this.vizbeePresenceClient.unsubscribe(t)}this.vizbeeSession=null}}})}catch(e){throw VizbeeSDK.logger.warn("VizbeePresenceManager::init - Error initializing Vizbee session:",e),e}}subscribe(e){"function"==typeof e?(this.presenceCallbacks.push(e),this.vizbeePresenceClient?this.vizbeePresenceClient.subscribe(e):VizbeeSDK.logger.warn("VizbeePresenceManager::subscribe - Presence client not initialized yet")):VizbeeSDK.logger.warn("VizbeePresenceManager::subscribe - Provided callback is not a function")}unsubscribe(e){VizbeeSDK.logger.debug("VizbeePresenceManager::unsubscribe"),this.vizbeePresenceClient&&this.vizbeePresenceClient.unsubscribe(e);const t=this.presenceCallbacks.indexOf(e);t>-1&&this.presenceCallbacks.splice(t,1)}getMembers(){return this.vizbeePresenceClient?this.vizbeePresenceClient.getMembers():[]}}class ls extends Vn{constructor(){super()}get ContinuityContext(){return Kn}get adapters(){return{AppAdapter:An,PlayerAdapter:wn,BasePlayerAdapter:Un,AVPlayerAdapter:Fn,PlayerType:Nn,AdAdapter:Mn,AdType:On,VideoStopReason:Hn}}get messages(){return{VizbeeEvent:Rn,VideoInfo:xn,VideoStatus:Ln,AdEventType:Cn,AdStatus:kn,PlayerState:zn,SubtitleTrack:jn}}get analytics(){return{AnalyticsProvider:Gn}}get ui(){return{LayoutPosition:Yn,Snackbar:Jn,SnackbarUIConfig:$n}}get analytics(){return{AnalyticsProvider:Gn}}get ui(){return{LayoutPosition:Yn,Snackbar:Jn,SnackbarUIConfig:$n}}get xmessages(){return{VizbeeBicastSessionManager:as,VizbeeBicastSession:ss,VizbeeMessagingClient:void 0,VizbeePresenceManager:os}}}var ds=new class extends ls{constructor(){super()}},cs=new class extends _n{constructor(){super()}get continuity(){return ds}get framework(){return ds}};if(cs.logger=new Se,cs.logger.setPrefix("[Vizbee]"),"undefined"!=typeof window){if(window.VizbeeSDK=cs,window.vizbee){let e=window.vizbee;window.vizbee=window.VizbeeSDK,Object.keys(e).forEach(t=>{window.vizbee[t]=e[t]})}else window.vizbee=window.VizbeeSDK;"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event("VIZBEE_SDK_READY"))}
|