diff --git a/sdks/js/3.x/ReleaseNotes.md b/sdks/js/3.x/ReleaseNotes.md
index bc7fb84..7e671c5 100644
--- a/sdks/js/3.x/ReleaseNotes.md
+++ b/sdks/js/3.x/ReleaseNotes.md
@@ -1,8 +1,12 @@
# Release Notes for JavaScript Media SDK 3.x
+## 3.1.0 (January 6, 2025)
+- Added feature to override `playerName` configuration per tracker instance.
+- Added public constants for configuration keys.
+
## 3.0.2 (March 26, 2021)
-- Fix "Content-Type" HTTP header in Media Collection API requests.
+- Fix "Content-Type" HTTP header in Media Collection API requests.
## 3.0.1 (October 8, 2020)
diff --git a/sdks/js/3.x/docs/APIReference.md b/sdks/js/3.x/docs/APIReference.md
index f2d1233..5e64802 100644
--- a/sdks/js/3.x/docs/APIReference.md
+++ b/sdks/js/3.x/docs/APIReference.md
@@ -6,10 +6,6 @@
#### configure
-> **_Note:_**
-This method is for standalone Media SDK JavaScript v3.x.
-For Media SDK Javascript v3.x with Tags extension, setup the configuration via Data Collection UI (Tags UI).
-
Configures MediaSDK for tracking. This method should be called once before creating any tracker instances in a page.
**Syntax**
@@ -19,7 +15,7 @@ ADB.Media.configure(mediaConfig, appMeasurement);
```
|Variable Name | Type | Description |
-|---|---|---
+|---|---|---|
| mediaConfig | [ADB.MediaConfig](#ADB.MediaConfig) | Valid media configuration |
| appMeasurement | object | AppMeasurement instance |
@@ -44,21 +40,31 @@ Creates an instance of media to track the playback session. Returns `null` is ca
**Syntax**
```javascript
-ADB.Media.getInstance()
+ADB.Media.getInstance(trackerConfig)
```
+| Variable Name | Type | Required | Description |
+| :--- | :--- | :---: |
+| `trackerConfig` | [Tracker configuration](#tracker-config) | No | Tracker configuration object. |
+
**Example**
```javascript
var tracker = ADB.Media.getInstance();
```
+To override channel or playerName per tracker instance, pass the override values in the tracker configuration object.
+
+**Example with tracker configuration**
```javascript
-// create an instance with custom channel example
-// this overrides the channel which was set during the configuration
-var tracker = ADB.Media.getInstance({"media.channel":"custom_channel_name"})
+const trackerConfig = {
+ [Media.TrackerConfig.Channel]: "custom_channel_name",
+ [Media.TrackerConfig.PlayerName]: "custom_player_name",
+}
+this._mediaTracker = Media.getInstance(trackerConfig);
```
+
#### createMediaObject
Creates an object containing media information. Returns empty object if invalid parameters are passed.
@@ -369,9 +375,9 @@ ADB.Media.trackEvent(event, info, contextData);
// Standard metadata keys provided by adobe.
adMetadata[ADB.Media.AdMetadataKeys.Advertiser] ="Sample Advertiser";
adMetadata[ADB.Media.AdMetadataKeys.CampaignId] = "Sample Campaign";
- // Custom metadata keys
+ // Custom metadata keys
adMetadata["affiliate"] = "Sample affiliate";
-
+
tracker.trackEvent(ADB.Media.Event.AdStart, adObject, adMetadata);
// AdComplete
@@ -439,8 +445,7 @@ ADB.Media.trackEvent(event, info, contextData);
#### updatePlayhead
-Provide current media playhead to media tracker. For accurate tracking, call this method multiple times when the playhead changes. If the player does not notify playhead changes, call this method once every second with the most recent playhead.
-
+Provide current media playhead to media tracker. For accurate tracking, call this method whenever playhead changes during playback.
**Syntax**
@@ -450,12 +455,18 @@ ADB.Media.updatePlayhead(time);
| Variable Name | Description |
| :--- | :--- |
-| `time` | Current playhead in seconds.
For video-on-demand \(VOD\), the value is specified in seconds from the beginning of the media item.
For live streaming, if the player does not provide information about the content duration, the value can be specified as the number of seconds since midnight UTC of that day.
Note: When using progress markers, the content duration is required and the playhead needs to be updated as number of seconds from the beginning of the media item, starting with 0. |
+| `time` | Current playhead in seconds.
For video-on-demand \(VOD\), the value is specified in seconds from the beginning of the media item.
For live streaming, if the player does not provide information about the content duration, the value can be specified as the number of seconds since midnight UTC of that day.
Note: When using progress markers, the content duration is required and the playhead needs to be updated as number of seconds from the beginning of the media item, starting with 0.|
**Example**
```javascript
tracker.updatePlayhead(13.3);
+
+// For live streams
+var UTCTimeInSeconds = Math.floor(Date.now() / 1000)
+var timeFromMidnightInSecond = UTCTimeInSeconds % 86400
+
+tracker.updatePlayhead(timeFromMidnightInSecond);
```
#### updateQoEObject
@@ -498,6 +509,17 @@ tracker.destroy();
### Constants
+#### Tracker config
+
+This defines the configuration keys that can be set per tracker instance.
+
+```javascript
+ADB.Media.TrackerConfig = {
+ Channel: "media.channel",
+ PlayerName: "media.playerName"
+}
+```
+
#### Media type
This defines the type of a media that is currently tracked.
@@ -649,4 +671,4 @@ tracker.trackSessionStart(mediaObject);
| `playerName` | No | Name of the media player in use |
| `appVersion` | No | Type the version of the media player application/SDK |
| `debugLogging` | No | Enables or disables Media SDK logs (Default value : `false`)|
-| `ssl` | No | Sends pings over SSL (Default value : `true`)|
\ No newline at end of file
+| `ssl` | No | Sends pings over SSL (Default value : `true`)|
diff --git a/sdks/js/3.x/lib/MediaSDK.js b/sdks/js/3.x/lib/MediaSDK.js
index 2278876..3e45e1d 100644
--- a/sdks/js/3.x/lib/MediaSDK.js
+++ b/sdks/js/3.x/lib/MediaSDK.js
@@ -1,5 +1,5 @@
/**
- * MediaSDK for JavaScript version: 3.0.2 - 2021-03-26
+ * MediaSDK for JavaScript version: 3.1.0 - 2025-01-06
* Copyright 2020 Adobe, Inc. All Rights Reserved
*
* NOTICE: All information contained herein is, and remains
@@ -14,4 +14,4 @@
* More info available at https://docs.adobe.com/content/help/en/media-analytics/using/media-overview.html
*/
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).ADB=t()}(this,(function(){"use strict";function e(t){return(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})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var a=0;a0};function E(){return(new Date).getTime()}function C(e,t){if(window.console){var a;switch(e){case P.Log:a=window.console.log;break;case P.Info:a=window.console.info;break;case P.Warn:a=window.console.warn;break;case P.Error:a=window.console.error}if(a)a("MediaSDK: ["+function(){var e=new Date,t=function(e){return e<10?"00"+e:e<100?"0"+e:""+e}(e.getMilliseconds());return e.toTimeString()+"."+t}()+"] "+t)}}var M=function(t){return!S(t)&&!Array.isArray(t)&&"object"===e(t)};function w(e,t){return setInterval(e,t)}var T=!1;function O(e){var t=e.debugLogging;I(t)&&(T=t)}function R(e,t,a){(T||e===P.Error)&&C(e,t+" "+a)}function B(e){var t=b(e)?"["+e+"]":"";return{log:function(e){!function(e,t){R(P.Log,e,t)}(t,e)},info:function(e){!function(e,t){R(P.Info,e,t)}(t,e)},warn:function(e){!function(e,t){R(P.Warn,e,t)}(t,e)},error:function(e){!function(e,t){R(P.Error,e,t)}(t,e)}}}var z=Object.freeze({AnalyticsTrackingServer:"analyticstrackingserver",AnalyticsSsl:"analyticsssl",Rsid:"rsid",Vid:"vid",Aid:"aid",Mcid:"mid",McOrgId:"orgid",AamLocHint:"aamlochint",CustomerIds:"customerids",MediaTrackingServer:"mediatrackingserver",MediaChannel:"mediachannel",MediaPlayerName:"mediaplayername",MediaAppVersion:"mediaappversion",MediaSsl:"mediassl"}),j=Object.freeze({Get:"GET",Post:"POST"}),D=Object.freeze({SessionStart:"sessionStart",SessionComplete:"sessionComplete",SessionEnd:"sessionEnd",AdBreakStart:"adBreakStart",AdBreakComplete:"adBreakComplete",AdStart:"adStart",AdComplete:"adComplete",AdSkip:"adSkip",ChapterStart:"chapterStart",ChapterComplete:"chapterComplete",ChapterSkip:"chapterSkip",Play:"play",Ping:"ping",BufferStart:"bufferStart",PauseStart:"pauseStart",BitrateChange:"bitrateChange",Error:"error",StateStart:"stateStart",StateEnd:"stateEnd"}),V=Object.freeze({Show:"media.show",Season:"media.season",Episode:"media.episode",AssetId:"media.assetId",Genre:"media.genre",FirstAirDate:"media.firstAirDate",FirstDigitalDate:"media.firstDigitalDate",Rating:"media.rating",Originator:"media.originator",Network:"media.network",ShowType:"media.showType",AdLoad:"media.adLoad",MVPD:"media.pass.mvpd",Auth:"media.pass.auth",DayPart:"media.dayPart",Feed:"media.feed",StreamFormat:"media.streamFormat",Artist:"media.artist",Album:"media.album",Label:"media.label",Author:"media.author",Station:"media.station",Publisher:"media.publisher"}),q=Object.freeze({Advertiser:"media.ad.advertiser",CampaignId:"media.ad.campaignId",CreativeId:"media.ad.creativeId",SiteId:"media.ad.siteId",CreativeUrl:"media.ad.creativeURL",PlacementId:"media.ad.placementId"}),x=Object.freeze({Id:"media.id",Name:"media.name",Length:"media.length",ContentType:"media.contentType",StreamType:"media.streamType",PlayerName:"media.playerName",Resume:"media.resume",Channel:"media.channel",Publisher:"media.publisher",SdkVersion:"media.sdkVersion"}),N=Object.freeze({AppInstallationId:"appInstallationId",AnalyticsTrackingServer:"analytics.trackingServer",AnalyticsRsid:"analytics.reportSuite",AnalyticsSsl:"analytics.enableSSL",AnalyticsVisitorId:"analytics.visitorId",AnalyticsAid:"analytics.aid",VisitorMcOrgId:"visitor.marketingCloudOrgId",VisitorMcuserId:"visitor.marketingCloudUserId",VisitorAamLocHint:"visitor.aamLocationHint",VisitorCustomerIds:"visitor.customerIDs",VisitorCustomerKeyId:"id",VisitorCustomerKeyAuthState:"authState",MediaVersion:"media.libraryVersion"}),F=Object.freeze({Channel:"media.channel"}),L=Object.freeze({PodFriendlyName:"media.ad.podFriendlyName",PodIndex:"media.ad.podIndex",PodSecond:"media.ad.podSecond"}),G=Object.freeze({Name:"media.ad.name",Id:"media.ad.id",Length:"media.ad.length",PodPosition:"media.ad.podPosition",PlayerName:"media.ad.playerName"}),H=Object.freeze({FriendlyName:"media.chapter.friendlyName",Length:"media.chapter.length",Offset:"media.chapter.offset",Index:"media.chapter.index"}),Q=Object.freeze({StateName:"media.state.name"}),U=Object.freeze({Bitrate:"media.qoe.bitrate",DroppedFrames:"media.qoe.droppedFrames",Fps:"media.qoe.framesPerSecond",StartupTime:"media.qoe.timeToStart",ErrorId:"media.qoe.errorID",ErrorSource:"media.qoe.errorSource",ErrorSourcePlayer:"player",ErrorSourceExternal:"external"}),K=Object.freeze({EventType:"eventType",Params:"params",QoE:"qoeData",CustomMetadata:"customMetadata",PlayerTime:"playerTime"}),W=Object.freeze({Playhead:"playhead",Ts:"ts"}),Z=function(e){return 0===Object.keys(e).length},$=function(e){return"number"==typeof e&&!isNaN(e)},J=function(e){var t=parseInt(e,10);return $(t)&&e===t},X=function(e){return"function"==typeof e},Y=function(e,t){if(!X(e))return t;try{return e()}catch(e){return t}};function ee(e){var t={};return M(e)&&Object.keys(e).forEach((function(a){var i=e[a],r=i.id,n=i.authState,s=void 0===n?0:n;b(r)&&(t[a]={id:r,authState:s})})),t}function te(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r({},K.EventType,e.eventType);i[K.PlayerTime]=(r(t={},W.Playhead,e.playhead),r(t,W.Ts,e.ts),t),Z(e.customMetadata)||(i[K.CustomMetadata]=e.customMetadata),Z(e.qoeData)||(i[K.QoE]=e.qoeData);var n=s({},e.params);if(e.eventType===D.SessionStart){b(a[z.AnalyticsTrackingServer])&&(n[N.AnalyticsTrackingServer]=a[z.AnalyticsTrackingServer]),b(a[z.Rsid])&&(n[N.AnalyticsRsid]=a[z.Rsid]),I(a[z.AnalyticsSsl])&&(n[N.AnalyticsSsl]=a[z.AnalyticsSsl]),b(a[z.Vid])&&(n[N.AnalyticsVisitorId]=a[z.Vid]),b(a[z.Aid])&&(n[N.AnalyticsAid]=a[z.Aid]),b(a[z.McOrgId])&&(n[N.VisitorMcOrgId]=a[z.McOrgId]),b(a[z.Mcid])&&(n[N.VisitorMcuserId]=a[z.Mcid]),J(a[z.AamLocHint])&&(n[N.VisitorAamLocHint]=a[z.AamLocHint]);var o=ee(a[z.CustomerIds]);if(M(o)&&!Z(o)&&(n[N.VisitorCustomerIds]=o),!b(n[x.Channel])){var d=a[z.MediaChannel];n[x.Channel]=b(d)?d:"unknown"}var c=a[z.MediaPlayerName];n[x.PlayerName]=b(c)?c:"unknown",b(a[z.MediaAppVersion])&&(n[x.SdkVersion]=a[z.MediaAppVersion]),n[N.MediaVersion]="js-3.0.2"}else if(e.eventType===D.AdStart){var u=a[z.MediaPlayerName];n[G.PlayerName]=b(u)?u:"unknown"}Z(n)||(i[K.Params]=n);var l=Y((function(){return JSON.stringify(i)}),"");return l}function ae(e){try{var t=e.split("/");return t[4]?t[4]:""}catch(e){return""}}var ie=[z.AnalyticsTrackingServer,z.AnalyticsSsl,z.Rsid,z.Vid,z.Aid,z.Mcid,z.McOrgId,z.AamLocHint,z.CustomerIds,z.MediaChannel,z.MediaAppVersion,z.MediaPlayerName,z.MediaTrackingServer,z.MediaSsl],re={"Content-Type":"application/json"},ne=function(){function e(a){t(this,e),this._logger=B("MediaSession("+a+")"),this._hits=[],this._ecParams=null,this._sessionId=null,this._creatingMCSession=!1,this._createSessionFailureCount=0,this._internalError=!1,this._doneQueuing=!1}return i(e,[{key:"queue",value:function(e){this._internalError||this._doneQueuing||this._hits.push(e)}},{key:"process",value:function(e){this._internalError||0!==this._hits.length&&e.isReady()&&(this._ecParams||(this._ecParams=e.resolveKeys(ie)),S(this._sessionId)?this._startMCSession():this._flushPendingHits())}},{key:"end",value:function(){this._logger.log("end"),this._doneQueuing=!0}},{key:"abort",value:function(){this._logger.log("abort"),this._doneQueuing=!0,this._hits=[]}},{key:"doneProcessing",value:function(){return this._internalError||this._doneQueuing&&0===this._hits.length}},{key:"_startMCSession",value:function(){var e=this;if(!this._creatingMCSession){var t=this._hits[0];if(t.eventType!==D.SessionStart)return this._logger.log("Dropping hit("+t.eventType+") as we expected sessionStart"),void this._hits.shift();var a,i=((a=this._ecParams)[z.MediaSsl]?"https":"http")+"://"+a[z.MediaTrackingServer]+"/api/v1/sessions",r=te(t,this._ecParams);this._creatingMCSession=!0,this._sendRequest(i,j.Post,re,r,(function(t,a){var i,r=!1;do{if(201!==t)break;var n=a.location;if(!b(n))break;if(!(i=ae(n)))break;r=!0}while(0);r?(e._logger.log("Media collection session created with session id : "+i),e._sessionId=i,e._hits.shift()):(e._logger.log("Creating Media collection session failed"),e._createSessionFailureCount+=1,e._createSessionFailureCount>=3&&(e._logger.log("Internal error: Creating Media collection session failed 3 times"),e._internalError=!0)),e._creatingMCSession=!1}))}}},{key:"_flushPendingHits",value:function(){var e=this;this._hits.splice(0,3).forEach((function(t){var a,i,r=(a=e._ecParams,i=e._sessionId,(a[z.MediaSsl]?"https":"http")+"://"+a[z.MediaTrackingServer]+"/api/v1/sessions/"+i+"/events"),n=te(t,e._ecParams);e._sendRequest(r,j.Post,re,n,(function(){}))}))}},{key:"_sendRequest",value:function(e,t,a,i,r){!function(e,t,a,i,r){if(void 0!==window.XMLHttpRequest){var n=new window.XMLHttpRequest;if("withCredentials"in n){var s=n;return s.open(t,e,!0),M(a)&&Object.keys(a).forEach((function(e){s.setRequestHeader(e,a[e])})),s.timeout=5e3,s.onload=function(){var e=s.status&&parseInt(s.status,10),t=s.responseText,a=function(e){var t={};try{e.trim().split(/[\r\n]+/).forEach((function(e){var a=e.split(":",1)[0],i=e.substring(a.length+2);a.length>0&&(t[a.toLowerCase()]=i)}))}catch(e){}return t}(s.getAllResponseHeaders());r(e,a,t)},s.onerror=function(){r(0)},void s.send(i)}r(0)}}(e,t,a,i,r)}}]),e}(),se=function(){function e(){t(this,e),this._logger=B("MediaProcessor"),this._isConfigured=!1,this._privacyStatus=g.OptUnknown,this._sessionIdGenerator=l(),this._sessionMap={}}return i(e,[{key:"configure",value:function(e){var t=this;this._isConfigured||(this._ecResolver=e,this._privacyStatus=this._ecResolver.getPrivacyStatus(),this._ecResolver.notifyPrivacyChange(this._onPrivacyChange.bind(this)),this._isConfigured=!0,this._processSessionTimer=w((function(){t._tick()}),500),this._logger.log("Configured with resolver"))}},{key:"startSession",value:function(){if(this._privacyStatus===g.OptOut)return this._logger.log("Privacy is opted out. Not starting a session"),-1;var t=this._sessionIdGenerator.getUniqueId();return this._sessionMap[t]=e._createMediaSession(t),t}},{key:"processHit",value:function(e,t){if(-1!==e){var a=this._sessionMap[e];S(a)||(this._logger.log("Process hit for session("+e+") => "+t),a.queue(t))}}},{key:"endSession",value:function(e){if(-1!==e){var t=this._sessionMap[e];S(t)||t.end()}}},{key:"_tick",value:function(){var e=this;Object.keys(this._sessionMap).forEach((function(t){var a=e._sessionMap[t];a.process(e._ecResolver),a.doneProcessing()&&(e._logger.log("Removing session "+t+" from store as it has finished processing"),delete e._sessionMap[t])}))}},{key:"_onPrivacyChange",value:function(e){var t=this;this._logger.log("Privacy switched to "+e),this._privacyStatus=e,e===g.OptOut&&(this._logger.log("Aborting all active sessions"),Object.keys(this._sessionMap).forEach((function(e){t._sessionMap[e].abort()})))}}],[{key:"_createMediaSession",value:function(e){return new ne(e)}}]),e}(),oe=function(){function e(a){var i=a.id,r=a.name,n=a.position,s=a.length;if(t(this,e),!b(i))throw new TypeError("id is not a valid string");if(!b(r))throw new TypeError("name is not a valid string");if(!J(n)||n<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(s)||s<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.position=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.position===t.position&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"ad.id",this.id),r(e,"ad.name",this.name),r(e,"ad.position",this.position),r(e,"ad.length",this.length),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({id:t["ad.id"],name:t["ad.name"],position:t["ad.position"],length:t["ad.length"]})}),null):null}}]),e}(),de=function(){function e(a){var i=a.name,r=a.position,n=a.startTime;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!J(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(n)||n<0)throw new TypeError("startTime cannot be less than zero");this.name=i,this.position=r,this.startTime=n}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime)}},{key:"serialize",value:function(){var e;return r(e={},"adbreak.name",this.name),r(e,"adbreak.position",this.position),r(e,"adbreak.starttime",this.startTime),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["adbreak.name"],position:t["adbreak.position"],startTime:t["adbreak.starttime"]})}),null):null}}]),e}(),ce=function(){function e(a){var i=a.name,r=a.position,n=a.startTime,s=a.length;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!J(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(n)||n<0)throw new TypeError("startTime cannot be less than zero");if(!$(s)||s<0)throw new TypeError("length cannot be less than zero");this.name=i,this.position=r,this.startTime=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"chapter.name",this.name),r(e,"chapter.position",this.position),r(e,"chapter.starttime",this.startTime),r(e,"chapter.length",this.length),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["chapter.name"],position:t["chapter.position"],startTime:t["chapter.starttime"],length:t["chapter.length"]})}),null):null}}]),e}(),ue=new RegExp("^[a-zA-Z0-9_\\.]{1,64}$"),le=function(){function e(a){var i=a.name;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!ue.test(i))throw new TypeError("name should match '^[a-zA-Z0-9_\\.]{1,64}$' pattern");this.name=i}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&this.name===t.name}},{key:"serialize",value:function(){return r({},"customstate.name",this.name)}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["customstate.name"]})}),null):null}}]),e}(),he=function(){function e(a){var i=a.id,r=a.name,n=a.streamType,s=a.mediaType,o=a.length,d=a.resumed,c=a.prerollWaitTime,u=a.granularAdTracking;if(t(this,e),!b(i))throw new TypeError("id is not a valid string");if(!b(r))throw new TypeError("name is not a valid string");if(!b(n))throw new TypeError("streamType is not a valid string");if(!$(o)||o<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.streamType=n,this.mediaType=s!==p.Audio?p.Video:s,this.length=o,this.resumed=!!I(d)&&d,this.prerollWaitTime=!J(c)||c<0?250:c,this.granularAdTracking=!!I(u)&&u}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.streamType===t.streamType&&this.mediaType===t.mediaType&&this.length===t.length&&this.resumed===t.resumed&&this.prerollWaitTime===t.prerollWaitTime&&this.granularAdTracking===t.granularAdTracking)}},{key:"serialize",value:function(){var e;return r(e={},"media.id",this.id),r(e,"media.name",this.name),r(e,"media.streamtype",this.streamType),r(e,"media.type",this.mediaType),r(e,"media.length",this.length),r(e,"media.resumed",this.resumed),r(e,"media.prerollwaittime",this.prerollWaitTime),r(e,"media.granularadtracking",this.granularAdTracking),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({id:t["media.id"],name:t["media.name"],streamType:t["media.streamtype"],mediaType:t["media.type"],length:t["media.length"],resumed:t["media.resumed"],prerollWaitTime:t["media.prerollwaittime"],granularAdTracking:t["media.granularadtracking"]})}),null):null}}]),e}(),fe=function(){function e(a){var i=a.bitrate,r=a.droppedFrames,n=a.fps,s=a.startupTime;if(t(this,e),!$(i)||i<0)throw new TypeError("bitrate must not be less than zero");if(!$(r)||r<0)throw new TypeError("dropped frames must not be less than zero");if(!$(n)||n<0)throw new TypeError("fps must not be less than zero");if(!$(s)||s<0)throw new TypeError("startupTime must not be less than zero");this.bitrate=i,this.droppedFrames=r,this.fps=n,this.startupTime=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.bitrate===t.bitrate&&this.droppedFrames===t.droppedFrames&&this.fps===t.fps&&this.startupTime===t.startupTime)}},{key:"serialize",value:function(){var e;return r(e={},"qoe.bitrate",this.bitrate),r(e,"qoe.droppedframes",this.droppedFrames),r(e,"qoe.fps",this.fps),r(e,"qoe.startuptime",this.startupTime),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({bitrate:t["qoe.bitrate"],droppedFrames:t["qoe.droppedframes"],fps:t["qoe.fps"],startupTime:t["qoe.startuptime"]})}),null):null}}]),e}(),pe=B("Media");var me=function(e){try{return JSON.stringify(e,null,4)}catch(e){return"[Error formatting object]"}},_e=Object.freeze({Name:"event.name",Params:"event.params",Metadata:"event.metadata",TimeStamp:"event.ts",InternalEvent:"event.internal",Playhead:"event.playhead",ErrorId:"error.id"}),ve=Object.freeze(s({SessionStart:"sessionStart",SessionEnd:"sessionEnd",SessionComplete:"sessionComplete",Play:"play",Pause:"pause",Error:"error",QoEUpdate:"qoeUpdate",PlayheadUpdate:"playheadUpdate"},h)),ke=function(){function e(a,i){if(t(this,e),S(a))throw new Error("id is not valid");this.id=a,this.description=i,this.predicates=[],this.actions=[]}return i(e,[{key:"addPredicate",value:function(e,t,a){if(!X(e))throw new Error("predicate is not a function");return this.predicates.push({predicate:e,val:t,message:a}),this}},{key:"addAction",value:function(e){if(!X(e))throw new Error("action is not a function");return this.actions.push(e),this}},{key:"runPredicates",value:function(e){for(var t=0;t=this._interval&&(this._generateHit(D.Ping),this._previousStateTs=this._refTs)}}},{key:"_processMediaStart",value:function(t){var a={};a=e._extractMediaParams(this._media),t&&(a[x.Resume]=!0);var i=this._config[F.Channel];b(i)&&(a[F.Channel]=i);var r=e._extractMediaMetadata(this._media);this._generateHit(D.SessionStart,a,r)}},{key:"_generateHit",value:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=r;if(S(n)){var s=this._media.qoeInfo,o=!(S(s)||!S(this._lastQoeInfo)&&this._lastQoeInfo.equal(s));o&&(n=e._extractQoeData(this._media),this._lastQoeInfo=s)}if(this._isTracking){var d=this._media.playhead,c=this._refTs,u=new Pe({eventType:t,params:a,customMetadata:i,qoeData:n,playhead:d,ts:c});this._hitProcessor.processHit(this._sessionId,u)}else this._logger.log("#_generateHit - Dropping hit as we have internally stopped tracking the session")}},{key:"_getPlaybackState",value:function(){return this._media.isInPlaybackState(ge.Buffer)?ge.Buffer:this._media.isInPlaybackState(ge.Seek)?ge.Seek:this._media.isInPlaybackState(ge.Play)?ge.Play:this._media.isInPlaybackState(ge.Pause)?ge.Pause:this._media.isInPlaybackState(ge.Stall)?ge.Stall:ge.Init}},{key:"_startSession",value:function(){this._sessionId=this._hitProcessor.startSession(),this._isTracking=!0,this._logger.log("Start internal session("+this._sessionId+")")}},{key:"_endSession",value:function(){this._hitProcessor.endSession(this._sessionId),this._isTracking=!1,this._logger.log("End internal session("+this._sessionId+")")}}],[{key:"_isGranularAdTrackingEnabled",value:function(e){var t=e.mediaInfo;return!S(t)&&t.granularAdTracking}},{key:"_extractMediaParams",value:function(t){var a={},i=t.mediaInfo;S(i)||(a[x.Id]=i.id,a[x.Name]=i.name,a[x.Length]=i.length,a[x.ContentType]=i.streamType,a[x.StreamType]=i.mediaType,a[x.Resume]=i.resumed);var r=t.mediaMetadata;return M(r)&&Object.keys(r).forEach((function(t){if(e._standardMediaMetadataMap.has(t)){var i=e._standardMediaMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractMediaMetadata",value:function(t){var a={},i=t.mediaMetadata;return M(i)&&Object.keys(i).forEach((function(t){e._standardMediaMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractAdBreakParams",value:function(e){var t={},a=e.adBreakInfo;return S(a)||(t[L.PodFriendlyName]=a.name,t[L.PodIndex]=a.position,t[L.PodSecond]=a.startTime),t}},{key:"_extractAdParams",value:function(t){var a={},i=t.adInfo;S(i)||(a[G.Name]=i.name,a[G.Id]=i.id,a[G.Length]=i.length,a[G.PodPosition]=i.position);var r=t.adMetadata;return M(r)&&Object.keys(r).forEach((function(t){if(e._standardAdMetadataMap.has(t)){var i=e._standardAdMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractAdMetadata",value:function(t){var a={},i=t.adMetadata;return M(i)&&Object.keys(i).forEach((function(t){e._standardAdMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractChapterParams",value:function(e){var t={},a=e.chapterInfo;return S(a)||(t[H.FriendlyName]=a.name,t[H.Index]=a.position,t[H.Length]=a.length,t[H.Offset]=a.startTime),t}},{key:"_extractChapterMetadata",value:function(e){var t={},a=e.chapterMetadata;return M(a)&&Object.keys(a).forEach((function(e){t[e]=a[e]})),t}},{key:"_extractQoeData",value:function(e){var t={},a=e.qoeInfo;return M(a)&&(t[U.Bitrate]=parseInt(a.bitrate,10),t[U.Fps]=parseInt(a.fps,10),t[U.DroppedFrames]=parseInt(a.droppedFrames,10),t[U.StartupTime]=parseInt(a.startupTime,10)),t}},{key:"_playbackStateToMediaCollectionEvent",value:function(e){switch(e){case ge.Buffer:return D.BufferStart;case ge.Seek:return D.PauseStart;case ge.Play:return D.Play;case ge.Pause:return D.PauseStart;case ge.Stall:return D.Play;case ge.Init:return D.Ping;default:return""}}}]),e}(),Ae=new Map;Ae.set(_.Show,V.Show),Ae.set(_.Season,V.Season),Ae.set(_.Episode,V.Episode),Ae.set(_.AssetId,V.AssetId),Ae.set(_.Genre,V.Genre),Ae.set(_.FirstAirDate,V.FirstAirDate),Ae.set(_.FirstDigitalDate,V.FirstDigitalDate),Ae.set(_.Rating,V.Rating),Ae.set(_.Originator,V.Originator),Ae.set(_.Network,V.Network),Ae.set(_.ShowType,V.ShowType),Ae.set(_.AdLoad,V.AdLoad),Ae.set(_.MVPD,V.MVPD),Ae.set(_.Authorized,V.Auth),Ae.set(_.DayPart,V.DayPart),Ae.set(_.Feed,V.Feed),Ae.set(_.StreamFormat,V.StreamFormat),Ae.set(v.Artist,V.Artist),Ae.set(v.Album,V.Album),Ae.set(v.Label,V.Label),Ae.set(v.Author,V.Author),Ae.set(v.Station,V.Station),Ae.set(v.Publisher,V.Publisher),Ie._standardMediaMetadataMap=Ae;var be=new Map;be.set(k.Advertiser,q.Advertiser),be.set(k.CampaignId,q.CampaignId),be.set(k.CreativeId,q.CreativeId),be.set(k.PlacementId,q.PlacementId),be.set(k.SiteId,q.SiteId),be.set(k.CreativeUrl,q.CreativeUrl),Ie._standardAdMetadataMap=be;var Ee="Media tracker is not in active tracking session, call 'API:trackSessionStart' to begin a new tracking session.",Ce="Media tracker is in active tracking session, call 'API:trackSessionEnd' or 'API:trackComplete' to end current tracking session.",Me="Media tracker is tracking buffer events, call 'API:trackEvent(BufferComplete)' first to stop tracking buffer events.",we="Media tracker is not tracking buffer events, call 'API:trackEvent(BufferStart)' before 'API:trackEvent(BufferComplete)'.",Te="Media tracker is tracking seek events, call 'API:trackEvent(SeekComplete)' first to stop tracking seek events.",Oe="Media tracker is not tracking seek events, call 'API:trackEvent(SeekStart)' before 'API:trackEvent(SeekComplete)'.",Re="Media tracker is not tracking any AdBreak, call 'API:trackEvent(AdBreakStart)' to begin tracking AdBreak",Be="Media tracker is not tracking any Ad, call 'API:trackEvent(AdStart)' to begin tracking Ad",ze="Media tracker is not tracking any Chapter, call 'API:trackEvent(ChapterStart)' to begin tracking Chapter",je="MediaInfo passed into 'API:trackSessionStart' is invalid.",De="AdBreakInfo passed into 'API:trackEvent(AdBreakStart)' is invalid.",Ve="Media tracker is currently tracking the AdBreak passed into 'API:trackEvent(AdBreakStart)'.",qe="AdInfo passed into 'API:trackEvent(AdStart)' is invalid.",xe="StateInfo passed into 'API:trackEvent(StateStart|StateEnd)' is invalid.",Ne="ErrorId passed into 'API:trackError()' is invalid.",Fe="Media tracker is currently tracking the Ad passed into 'API:trackEvent(AdStart)'.",Le="ChapterInfo passed into 'API:trackEvent(ChapterStart)' is invalid.",Ge="Media tracker is currently tracking the Chapter passed into 'API:trackEvent(ChapterStart)'.",He="QoEInfo passed into 'API:updateQoEInfo' is invalid.",Qe="Media tracker is tracking an AdBreak but not tracking any Ad and will drop any calls to track player state (Play, Pause, Buffer or Seek) in this state.",Ue="Media tracker is already tracking a state with the same state name.",Ke="Media tracker is not already tracking a state with the same state name.",We="Media tracker has reached maximum number of states per session (10).",Ze=new RegExp("^[a-zA-Z0-9_\\.]+$"),$e=function(){function e(a,i,r){if(t(this,e),!a)throw new Error("hitProcessor should be valid");if(!i)throw new Error("logger should be valid");this._hitProcessor=a,this._logger=i,this._config=M(r)?r:{},this._resetStates(),this._setupRules()}return i(e,[{key:"track",value:function(e){var t=e[_e.Name];return b(t)?J(e[_e.TimeStamp])?(M(e[_e.Params])||(e[_e.Params]={}),e[_e.Metadata]=this._cleanMetadata(e[_e.Metadata]),!!this._prerollDeferRule(t,e)||this._processRule(t,e)):(this._logger.log("#track - Event timestamp is missing in track event data. - "+t),!1):(this._logger.log("#track - Event name is missing in track event data"),!1)}},{key:"_resetStates",value:function(){this._media=null,this._hitGenerator=null,this._sessionRefTs=null,this._inPrerollInterval=!1,this._prerollRefTs=null,this._prerollQueuedRules=[],this._contentStarted=!1,this._contentStartRefTs=null,this._mediaIdle=!1,this._trackerIdle=!1,this._mediaIdleStartTs=0}},{key:"_createHitGenerator",value:function(e){return new Ie(this._logger,this._hitProcessor,this._config,this._media,e)}},{key:"_processRule",value:function(e,t){return this._ruleEngine.processRule(e,t).success}},{key:"_setupRules",value:function(){this._ruleEngine=new ye(this._logger),this._ruleEngine.setEnterAction(this._cmdEnterAction.bind(this)),this._ruleEngine.setExitAction(this._cmdExitAction.bind(this));var e=this._isInMedia.bind(this),t=this._isInAdBreak.bind(this),a=this._isInAd.bind(this),i=this._isInChapter.bind(this),r=this._isInTrackedState.bind(this),n=this._isValidMediaInfo.bind(this),s=this._isValidAdBreakInfo.bind(this),o=this._isValidAdInfo.bind(this),d=this._isValidChapterInfo.bind(this),c=this._isValidQoEInfo.bind(this),u=this._isValidStateInfo.bind(this),l=this._isValidErrorInfo.bind(this),h=this._isDifferentAdBreakInfo.bind(this),f=this._isDifferentAdInfo.bind(this),p=this._isDifferentChapterInfo.bind(this),m=this._allowPlayerStateChange.bind(this),_=this._allowStateTrack.bind(this),v=this._isInBuffering.bind(this),k=this._isInSeeking.bind(this),y=this._cmdMediaStart.bind(this),g=this._cmdMediaSkip.bind(this),S=this._cmdMediaComplete.bind(this),P=this._cmdError.bind(this),I=this._cmdPlay.bind(this),A=this._cmdPause.bind(this),b=this._cmdBufferStart.bind(this),E=this._cmdBufferComplete.bind(this),C=this._cmdSeekStart.bind(this),M=this._cmdSeekComplete.bind(this),w=this._cmdAdStart.bind(this),T=this._cmdAdComplete.bind(this),O=this._cmdAdSkip.bind(this),R=this._cmdAdBreakStart.bind(this),B=this._cmdAdBreakComplete.bind(this),z=this._cmdAdBreakSkip.bind(this),j=this._cmdChapterStart.bind(this),D=this._cmdChapterComplete.bind(this),V=this._cmdChapterSkip.bind(this),q=this._cmdStateStart.bind(this),x=this._cmdStateEnd.bind(this),N=this._cmdBitrateChange.bind(this),F=this._cmdQoEUpdate.bind(this),L=this._cmdPlayheadUpdate.bind(this),G=new ke(ve.SessionStart,"API:trackSessionStart");G.addPredicate(e,!1,Ce).addPredicate(n,!0,je).addAction(y),this._ruleEngine.addRule(G);var H=new ke(ve.SessionComplete,"API:trackComplete");H.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(S),this._ruleEngine.addRule(H);var Q=new ke(ve.SessionEnd,"API:trackSessionEnd");Q.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(g),this._ruleEngine.addRule(Q);var U=new ke(ve.Error,"API:trackError");U.addPredicate(e,!0,Ee).addPredicate(l,!0,Ne).addAction(P),this._ruleEngine.addRule(U);var K=new ke(ve.Play,"API:trackPlay");K.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addAction(M).addAction(E).addAction(I),this._ruleEngine.addRule(K);var W=new ke(ve.Pause,"API:trackPause");W.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!1,Me).addPredicate(k,!1,Te).addAction(A),this._ruleEngine.addRule(W);var Z=new ke(ve.BufferStart,"API:trackEvent(BufferStart)");Z.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!1,Me).addPredicate(k,!1,Te).addAction(b),this._ruleEngine.addRule(Z);var $=new ke(ve.BufferComplete,"API:trackEvent(BufferComplete)");$.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!0,we).addAction(E),this._ruleEngine.addRule($);var J=new ke(ve.SeekStart,"API:trackEvent(SeekStart)");J.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(k,!1,Te).addPredicate(v,!1,Me).addAction(C),this._ruleEngine.addRule(J);var X=new ke(ve.SeekComplete,"API:trackEvent(SeekComplete)");X.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(k,!0,Oe).addAction(M),this._ruleEngine.addRule(X);var Y=new ke(ve.AdBreakStart,"API:trackEvent(AdBreakStart)");Y.addPredicate(e,!0,Ee).addPredicate(s,!0,De).addPredicate(h,!0,Ve).addAction(O).addAction(z).addAction(R),this._ruleEngine.addRule(Y);var ee=new ke(ve.AdBreakComplete,"API:trackEvent(AdBreakComplete)");ee.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addAction(O).addAction(B),this._ruleEngine.addRule(ee);var te=new ke(ve.AdStart,"API:trackEvent(AdStart)");te.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(o,!0,qe).addPredicate(f,!0,Fe).addAction(O).addAction(w),this._ruleEngine.addRule(te);var ae=new ke(ve.AdComplete,"API:trackEvent(AdComplete)");ae.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(a,!0,Be).addAction(T),this._ruleEngine.addRule(ae);var ie=new ke(ve.AdSkip,"API:trackEvent(AdSkip)");ie.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(a,!0,Be).addAction(O),this._ruleEngine.addRule(ie);var re=new ke(ve.ChapterStart,"API::trackEvent(chapterStart)");re.addPredicate(e,!0,Ee).addPredicate(d,!0,Le).addPredicate(p,!0,Ge).addAction(V).addAction(j),this._ruleEngine.addRule(re);var ne=new ke(ve.ChapterComplete,"API::trackEvent(chapterComplete)");ne.addPredicate(e,!0,Ee).addPredicate(i,!0,ze).addAction(D),this._ruleEngine.addRule(ne);var se=new ke(ve.ChapterSkip,"API:trackEvent(chapterSkip)");se.addPredicate(e,!0,Ee).addPredicate(i,!0,ze).addAction(V),this._ruleEngine.addRule(se);var oe=new ke(ve.BitrateChange,"API:trackEvent(BitrateChange)");oe.addPredicate(e,!0,Ee).addAction(N),this._ruleEngine.addRule(oe);var de=new ke(ve.QoEUpdate,"API:trackEvent(QoEUpdate)");de.addPredicate(e,!0,Ee).addPredicate(c,!0,He).addAction(F),this._ruleEngine.addRule(de);var ce=new ke(ve.PlayheadUpdate,"API:trackEvent(PlayheadUpdate)");ce.addPredicate(e,!0,Ee).addAction(L),this._ruleEngine.addRule(ce);var ue=new ke(ve.StateStart,"API:trackEvent(StateStart)");ue.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!1,Ue).addPredicate(_,!0,We).addAction(q),this._ruleEngine.addRule(ue);var le=new ke(ve.StateEnd,"API:trackEvent(StateEnd)");le.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!0,Ke).addAction(x),this._ruleEngine.addRule(le)}},{key:"_isInMedia",value:function(){return!S(this._media)}},{key:"_isInAdBreak",value:function(){return this._media.isInAdBreak}},{key:"_isInAd",value:function(){return this._media.isInAd}},{key:"_isInChapter",value:function(){return this._media.isInChapter}},{key:"_isInBuffering",value:function(){return this._media.isInPlaybackState(ge.Buffer)}},{key:"_isInSeeking",value:function(){return this._media.isInPlaybackState(ge.Seek)}},{key:"_isInTrackedState",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.isCustomStateActive(t)}},{key:"_isValidMediaInfo",value:function(e){return null!=he.deserialize(e[_e.Params])}},{key:"_isValidAdBreakInfo",value:function(e){return null!=de.deserialize(e[_e.Params])}},{key:"_isValidAdInfo",value:function(e){return null!=oe.deserialize(e[_e.Params])}},{key:"_isValidStateInfo",value:function(e){return null!=le.deserialize(e[_e.Params])}},{key:"_isValidChapterInfo",value:function(e){return null!=ce.deserialize(e[_e.Params])}},{key:"_isValidQoEInfo",value:function(e){return null!=fe.deserialize(e[_e.Params])}},{key:"_isValidErrorInfo",value:function(e){var t=e[_e.Params];if(!M(t))return!1;var a=t[_e.ErrorId];return b(a)}},{key:"_isDifferentAdBreakInfo",value:function(e){return!de.deserialize(e[_e.Params]).equal(this._media.adBreakInfo)}},{key:"_isDifferentAdInfo",value:function(e){return!oe.deserialize(e[_e.Params]).equal(this._media.adInfo)}},{key:"_isDifferentChapterInfo",value:function(e){return!ce.deserialize(e[_e.Params]).equal(this._media.chapterInfo)}},{key:"_allowPlayerStateChange",value:function(){return!this._media.isInAdBreak||this._media.isInAd}},{key:"_allowStateTrack",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.hasTrackedCustomState(t)||this._media.numTrackedCustomStates()<10}},{key:"_cmdEnterAction",value:function(e,t){var a=this._getRefTs(t);return S(this._hitGenerator)||this._hitGenerator.setRefTS(a),!0}},{key:"_cmdExitAction",value:function(e,t){if(S(this._media))return!1;e.id===ve.AdStart&&(!this._media.isInPlaybackState(ge.Init)||this._media.isInPlaybackState(ge.Buffer)||this._media.isInPlaybackState(ge.Seek)||this._media.enterPlaybackState(ge.Play)),e.id!==ve.BufferComplete&&e.id!==ve.SeekComplete||this._media.isInPlaybackState(ge.Init)&&this._media.enterPlaybackState(ge.Pause),this._cmdIdleDetection(t),this._cmdSessionTimeoutDetection(t),this._cmdContentStartDetection(t);var a=e.id===ve.AdStart||e.id===ve.AdBreakComplete;return this._hitGenerator.processPlayback(a),!0}},{key:"_cmdMediaStart",value:function(e){var t=he.deserialize(e[_e.Params]),a=e[_e.Metadata],i=this._getRefTs(e);return this._media=new Se(t,a),this._hitGenerator=this._createHitGenerator(i),this._hitGenerator.processMediaStart(),this._sessionRefTs=i,this._inPrerollInterval=0!==t.prerollWaitTime,this._prerollRefTs=i,!0}},{key:"_cmdMediaComplete",value:function(){return this._hitGenerator.processMediaComplete(),this._resetStates(),!0}},{key:"_cmdMediaSkip",value:function(){return this._hitGenerator.processMediaSkip(),this._resetStates(),!0}},{key:"_cmdAdBreakStart",value:function(e){var t=de.deserialize(e[_e.Params]);return this._media.setAdBreakInfo(t),this._hitGenerator.processAdBreakStart(),!0}},{key:"_cmdAdBreakComplete",value:function(){return this._hitGenerator.processAdBreakComplete(),this._media.clearAdBreakInfo(),!0}},{key:"_cmdAdBreakSkip",value:function(){return this._media.isInAdBreak&&(this._hitGenerator.processAdBreakSkip(),this._media.clearAdBreakInfo()),!0}},{key:"_cmdAdStart",value:function(e){var t=oe.deserialize(e[_e.Params]),a=e[_e.Metadata];return this._media.setAdInfo(t,a),this._hitGenerator.processAdStart(),!0}},{key:"_cmdAdComplete",value:function(){return this._hitGenerator.processAdComplete(),this._media.clearAdInfo(),!0}},{key:"_cmdAdSkip",value:function(){return this._media.isInAd&&(this._hitGenerator.processAdSkip(),this._media.clearAdInfo()),!0}},{key:"_cmdChapterStart",value:function(e){var t=ce.deserialize(e[_e.Params]),a=e[_e.Metadata];return this._media.setChapterInfo(t,a),this._hitGenerator.processChapterStart(),!0}},{key:"_cmdChapterComplete",value:function(){return this._hitGenerator.processChapterComplete(),this._media.clearChapterInfo(),!0}},{key:"_cmdChapterSkip",value:function(){return this._media.isInChapter&&(this._hitGenerator.processChapterSkip(),this._media.clearChapterInfo()),!0}},{key:"_cmdError",value:function(e){var t=e[_e.Params][_e.ErrorId];return this._hitGenerator.processError(t),!0}},{key:"_cmdBitrateChange",value:function(){return this._hitGenerator.processBitrateChange(),!0}},{key:"_cmdPlay",value:function(){return this._media.enterPlaybackState(ge.Play),!0}},{key:"_cmdPause",value:function(){return this._media.enterPlaybackState(ge.Pause),!0}},{key:"_cmdBufferStart",value:function(){return this._media.enterPlaybackState(ge.Buffer),!0}},{key:"_cmdBufferComplete",value:function(){return this._media.isInPlaybackState(ge.Buffer)&&this._media.exitPlaybackState(ge.Buffer),!0}},{key:"_cmdSeekStart",value:function(){return this._media.enterPlaybackState(ge.Seek),!0}},{key:"_cmdSeekComplete",value:function(){return this._media.isInPlaybackState(ge.Seek)&&this._media.exitPlaybackState(ge.Seek),!0}},{key:"_cmdQoEUpdate",value:function(e){var t=fe.deserialize(e[_e.Params]);return this._media.qoeInfo=t,!0}},{key:"_cmdPlayheadUpdate",value:function(e){var t=e[_e.Params];if(M(t)){var a=t[_e.Playhead];$(a)&&a>=0&&(this._media.playhead=a)}return!0}},{key:"_cmdIdleDetection",value:function(e){var t=this._getRefTs(e);this._media.isIdle()?this._mediaIdle?!this._trackerIdle&&t-this._mediaIdleStartTs>=18e5&&(this._hitGenerator.processSessionAbort(),this._trackerIdle=!0):(this._mediaIdle=!0,this._mediaIdleStartTs=t):(this._trackerIdle&&(this._hitGenerator.processSessionRestart(),this._trackerIdle=!1,this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null),this._mediaIdle=!1)}},{key:"_cmdSessionTimeoutDetection",value:function(e){var t=this._getRefTs(e);!this._trackerIdle&&t-this._sessionRefTs>=864e5&&(this._hitGenerator.processSessionAbort(),this._hitGenerator.processSessionRestart(),this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null)}},{key:"_cmdContentStartDetection",value:function(e){return!(!this._media.isIdle()&&!this._contentStarted)||(this._media.isInAdBreak?(this._contentStartRefTs=null,!0):(null==this._contentStartRefTs&&(this._contentStartRefTs=this._getRefTs(e)),this._getRefTs(e)-this._contentStartRefTs>=1e3&&(this._hitGenerator.processPlayback(!0),this._contentStarted=!0),!0))}},{key:"_cmdStateStart",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.startCustomState(t),this._hitGenerator.processCustomStateStart(t),!0}},{key:"_cmdStateEnd",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.endCustomState(t),this._hitGenerator.processCustomStateEnd(t),!0}},{key:"_getRefTs",value:function(e){var t=e[_e.TimeStamp];return J(t)?t:null}},{key:"_prerollDeferRule",value:function(e,t){if(this._inPrerollInterval&&null!=this._media){var a=this._media.mediaInfo.prerollWaitTime;if(this._prerollQueuedRules.push({eventName:e,context:t}),this._getRefTs(t)-this._prerollRefTs>=a||e===ve.AdBreakStart||e===ve.MediaComplete||e===ve.MediaSkip){for(var i=this._prerollReorderRules(this._prerollQueuedRules),r=0;r3&&void 0!==arguments[3]&&arguments[3];if(this._tracker){var s=E(),o=(r(i={},_e.Name,e),r(i,_e.Params,t),r(i,_e.Metadata,a),r(i,_e.TimeStamp,s),r(i,_e.InternalEvent,n),i),d=this._tracker.track(o);this._lastEventTS=s,e===ve.PlayheadUpdate&&(this._lastPlayheadParams=t),e===ve.SessionStart&&d?this._startTimer():e!==ve.SessionComplete&&e!==ve.SessionEnd||this._stopTimer()}else this._logger.warn("Dropping the call as the tracker instance is already destroyed")}},{key:"_startTimer",value:function(){var e=this;this._timer||(this._timer=w((function(){e._onTick()}),500))}},{key:"_stopTimer",value:function(){var e;this._timer&&(e=this._timer,clearInterval(e),this._timer=null)}},{key:"_onTick",value:function(){E()-this._lastEventTS>750&&this._trackInternal(ve.PlayheadUpdate,this._lastPlayheadParams,null,!0)}}]),e}(),Xe=new se,Ye=l();var et={configure:function(e){Xe.configure(e)},getInstance:function(e){var t="tracker"+Ye.getUniqueId();return new Je(Xe,t,e)},createMediaObject:function(e,t,a,i,r){var n=null;try{n=new he({id:t,name:e,streamType:i,mediaType:r,length:a}).serialize()}catch(e){pe.error("Error creating MediaObject ("+e.message+")")}return n},createAdBreakObject:function(e,t,a){var i=null;try{i=new de({name:e,position:t,startTime:a}).serialize()}catch(e){pe.error("Error creating AdBreakObject ("+e.message+")")}return i},createAdObject:function(e,t,a,i){var r=null;try{r=new oe({id:t,name:e,position:a,length:i}).serialize()}catch(e){pe.error("Error creating AdObject ("+e.message+")")}return r},createChapterObject:function(e,t,a,i){var r=null;try{r=new ce({name:e,position:t,length:a,startTime:i}).serialize()}catch(e){pe.error("Error creating ChapterObject ("+e.message+")")}return r},createQoEObject:function(e,t,a,i){var r=null;try{r=new fe({bitrate:e,droppedFrames:i,fps:a,startupTime:t}).serialize()}catch(e){pe.error("Error creating QoEObject ("+e.message+")")}return r},createStateObject:function(e){var t=null;try{t=new le({name:e}).serialize()}catch(e){pe.error("Error creating StateObject ("+e.message+")")}return t},version:"js-3.0.2",Event:h,MediaType:p,PlayerState:m,StreamType:y,MediaObjectKey:f,VideoMetadataKeys:_,AudioMetadataKeys:v,AdMetadataKeys:k};var tt="ecid",at="analytics",it="mediaanalytics",rt=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(s,e);var a,n=(a=s,function(){var e,t=o(a);if(c()){var i=o(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return u(this,e)});function s(e,a){var i;if(t(this,s),i=n.call(this),!e)throw new Error("Valid appmeasurement instance is required");if(!e.visitor)throw new Error("Valid visitor instance is required");return i._mediaConfig=a,i._appMeasurement=e,i._appMeasurementReady=!1,i._privacyResolved=!1,i._logger=B("WebECResolver"),i._fetchECParams(),i._fetchPrivacyStatus(),i._setupResolver(),i}return i(s,[{key:"resolveKeys",value:function(e){if(!e||0===e.length)return{};for(var t={},a=0;a0};function E(){return(new Date).getTime()}function M(e,t){if(window.console){var a;switch(e){case I.Log:a=window.console.log;break;case I.Info:a=window.console.info;break;case I.Warn:a=window.console.warn;break;case I.Error:a=window.console.error}if(a)a("MediaSDK: ["+function(){var e=new Date,t=function(e){return e<10?"00"+e:e<100?"0"+e:""+e}(e.getMilliseconds());return e.toTimeString()+"."+t}()+"] "+t)}}var w=function(t){return!P(t)&&!Array.isArray(t)&&"object"===e(t)};function T(e,t){return setInterval(e,t)}var O=!1;function R(e){var t=e.debugLogging;A(t)&&(O=t)}function B(e,t,a){(O||e===I.Error)&&M(e,t+" "+a)}function z(e){var t=C(e)?"["+e+"]":"";return{log:function(e){!function(e,t){B(I.Log,e,t)}(t,e)},info:function(e){!function(e,t){B(I.Info,e,t)}(t,e)},warn:function(e){!function(e,t){B(I.Warn,e,t)}(t,e)},error:function(e){!function(e,t){B(I.Error,e,t)}(t,e)}}}var j=Object.freeze({AnalyticsTrackingServer:"analyticstrackingserver",AnalyticsSsl:"analyticsssl",Rsid:"rsid",Vid:"vid",Aid:"aid",Mcid:"mid",McOrgId:"orgid",AamLocHint:"aamlochint",CustomerIds:"customerids",MediaTrackingServer:"mediatrackingserver",MediaChannel:"mediachannel",MediaPlayerName:"mediaplayername",MediaAppVersion:"mediaappversion",MediaSsl:"mediassl"}),D=Object.freeze({Get:"GET",Post:"POST"}),V=Object.freeze({SessionStart:"sessionStart",SessionComplete:"sessionComplete",SessionEnd:"sessionEnd",AdBreakStart:"adBreakStart",AdBreakComplete:"adBreakComplete",AdStart:"adStart",AdComplete:"adComplete",AdSkip:"adSkip",ChapterStart:"chapterStart",ChapterComplete:"chapterComplete",ChapterSkip:"chapterSkip",Play:"play",Ping:"ping",BufferStart:"bufferStart",PauseStart:"pauseStart",BitrateChange:"bitrateChange",Error:"error",StateStart:"stateStart",StateEnd:"stateEnd"}),N=Object.freeze({Show:"media.show",Season:"media.season",Episode:"media.episode",AssetId:"media.assetId",Genre:"media.genre",FirstAirDate:"media.firstAirDate",FirstDigitalDate:"media.firstDigitalDate",Rating:"media.rating",Originator:"media.originator",Network:"media.network",ShowType:"media.showType",AdLoad:"media.adLoad",MVPD:"media.pass.mvpd",Auth:"media.pass.auth",DayPart:"media.dayPart",Feed:"media.feed",StreamFormat:"media.streamFormat",Artist:"media.artist",Album:"media.album",Label:"media.label",Author:"media.author",Station:"media.station",Publisher:"media.publisher"}),q=Object.freeze({Advertiser:"media.ad.advertiser",CampaignId:"media.ad.campaignId",CreativeId:"media.ad.creativeId",SiteId:"media.ad.siteId",CreativeUrl:"media.ad.creativeURL",PlacementId:"media.ad.placementId"}),x=Object.freeze({Id:"media.id",Name:"media.name",Length:"media.length",ContentType:"media.contentType",StreamType:"media.streamType",PlayerName:"media.playerName",Resume:"media.resume",Channel:"media.channel",Publisher:"media.publisher",SdkVersion:"media.sdkVersion"}),F=Object.freeze({AppInstallationId:"appInstallationId",AnalyticsTrackingServer:"analytics.trackingServer",AnalyticsRsid:"analytics.reportSuite",AnalyticsSsl:"analytics.enableSSL",AnalyticsVisitorId:"analytics.visitorId",AnalyticsAid:"analytics.aid",VisitorMcOrgId:"visitor.marketingCloudOrgId",VisitorMcuserId:"visitor.marketingCloudUserId",VisitorAamLocHint:"visitor.aamLocationHint",VisitorCustomerIds:"visitor.customerIDs",VisitorCustomerKeyId:"id",VisitorCustomerKeyAuthState:"authState",MediaVersion:"media.libraryVersion"}),L=Object.freeze({Channel:"media.channel",PlayerName:"media.playerName"}),G=Object.freeze({PodFriendlyName:"media.ad.podFriendlyName",PodIndex:"media.ad.podIndex",PodSecond:"media.ad.podSecond"}),H=Object.freeze({Name:"media.ad.name",Id:"media.ad.id",Length:"media.ad.length",PodPosition:"media.ad.podPosition",PlayerName:"media.ad.playerName"}),Q=Object.freeze({FriendlyName:"media.chapter.friendlyName",Length:"media.chapter.length",Offset:"media.chapter.offset",Index:"media.chapter.index"}),U=Object.freeze({StateName:"media.state.name"}),K=Object.freeze({Bitrate:"media.qoe.bitrate",DroppedFrames:"media.qoe.droppedFrames",Fps:"media.qoe.framesPerSecond",StartupTime:"media.qoe.timeToStart",ErrorId:"media.qoe.errorID",ErrorSource:"media.qoe.errorSource",ErrorSourcePlayer:"player",ErrorSourceExternal:"external"}),W=Object.freeze({EventType:"eventType",Params:"params",QoE:"qoeData",CustomMetadata:"customMetadata",PlayerTime:"playerTime"}),Z=Object.freeze({Playhead:"playhead",Ts:"ts"}),$=function(e){return 0===Object.keys(e).length},J=function(e){return"number"==typeof e&&!isNaN(e)},X=function(e){var t=parseInt(e,10);return J(t)&&e===t},Y=function(e){return"function"==typeof e},ee=function(e,t){if(!Y(e))return t;try{return e()}catch(e){return t}};function te(e){var t={};return w(e)&&Object.keys(e).forEach((function(a){var i=e[a],r=i.id,n=i.authState,s=void 0===n?0:n;C(r)&&(t[a]={id:r,authState:s})})),t}function ae(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r({},W.EventType,e.eventType);i[W.PlayerTime]=(r(t={},Z.Playhead,e.playhead),r(t,Z.Ts,e.ts),t),$(e.customMetadata)||(i[W.CustomMetadata]=e.customMetadata),$(e.qoeData)||(i[W.QoE]=e.qoeData);var n=s({},e.params);if(e.eventType===V.SessionStart){C(a[j.AnalyticsTrackingServer])&&(n[F.AnalyticsTrackingServer]=a[j.AnalyticsTrackingServer]),C(a[j.Rsid])&&(n[F.AnalyticsRsid]=a[j.Rsid]),A(a[j.AnalyticsSsl])&&(n[F.AnalyticsSsl]=a[j.AnalyticsSsl]),C(a[j.Vid])&&(n[F.AnalyticsVisitorId]=a[j.Vid]),C(a[j.Aid])&&(n[F.AnalyticsAid]=a[j.Aid]),C(a[j.McOrgId])&&(n[F.VisitorMcOrgId]=a[j.McOrgId]),C(a[j.Mcid])&&(n[F.VisitorMcuserId]=a[j.Mcid]),X(a[j.AamLocHint])&&(n[F.VisitorAamLocHint]=a[j.AamLocHint]);var o=te(a[j.CustomerIds]);if(w(o)&&!$(o)&&(n[F.VisitorCustomerIds]=o),!C(n[x.Channel])){var d=a[j.MediaChannel];n[x.Channel]=C(d)?d:"unknown"}if(!C(n[x.PlayerName])){var c=a[j.MediaPlayerName];n[x.PlayerName]=C(c)?c:"unknown"}C(a[j.MediaAppVersion])&&(n[x.SdkVersion]=a[j.MediaAppVersion]),n[F.MediaVersion]="js-3.1.0"}else if(e.eventType===V.AdStart){var u=a[j.MediaPlayerName];n[H.PlayerName]=C(u)?u:"unknown"}$(n)||(i[W.Params]=n);var l=ee((function(){return JSON.stringify(i)}),"");return l}function ie(e){try{var t=e.split("/");return t[4]?t[4]:""}catch(e){return""}}var re=[j.AnalyticsTrackingServer,j.AnalyticsSsl,j.Rsid,j.Vid,j.Aid,j.Mcid,j.McOrgId,j.AamLocHint,j.CustomerIds,j.MediaChannel,j.MediaAppVersion,j.MediaPlayerName,j.MediaTrackingServer,j.MediaSsl],ne={"Content-Type":"application/json"},se=function(){function e(a){t(this,e),this._logger=z("MediaSession("+a+")"),this._hits=[],this._ecParams=null,this._sessionId=null,this._creatingMCSession=!1,this._createSessionFailureCount=0,this._internalError=!1,this._doneQueuing=!1}return i(e,[{key:"queue",value:function(e){this._internalError||this._doneQueuing||this._hits.push(e)}},{key:"process",value:function(e){this._internalError||0!==this._hits.length&&e.isReady()&&(this._ecParams||(this._ecParams=e.resolveKeys(re)),P(this._sessionId)?this._startMCSession():this._flushPendingHits())}},{key:"end",value:function(){this._logger.log("end"),this._doneQueuing=!0}},{key:"abort",value:function(){this._logger.log("abort"),this._doneQueuing=!0,this._hits=[]}},{key:"doneProcessing",value:function(){return this._internalError||this._doneQueuing&&0===this._hits.length}},{key:"_startMCSession",value:function(){var e=this;if(!this._creatingMCSession){var t=this._hits[0];if(t.eventType!==V.SessionStart)return this._logger.log("Dropping hit("+t.eventType+") as we expected sessionStart"),void this._hits.shift();var a,i=((a=this._ecParams)[j.MediaSsl]?"https":"http")+"://"+a[j.MediaTrackingServer]+"/api/v1/sessions",r=ae(t,this._ecParams);this._creatingMCSession=!0,this._sendRequest(i,D.Post,ne,r,(function(t,a){var i,r=!1;do{if(201!==t)break;var n=a.location;if(!C(n))break;if(!(i=ie(n)))break;r=!0}while(0);r?(e._logger.log("Media collection session created with session id : "+i),e._sessionId=i,e._hits.shift()):(e._logger.log("Creating Media collection session failed"),e._createSessionFailureCount+=1,e._createSessionFailureCount>=3&&(e._logger.log("Internal error: Creating Media collection session failed 3 times"),e._internalError=!0)),e._creatingMCSession=!1}))}}},{key:"_flushPendingHits",value:function(){var e=this;this._hits.splice(0,3).forEach((function(t){var a,i,r=(a=e._ecParams,i=e._sessionId,(a[j.MediaSsl]?"https":"http")+"://"+a[j.MediaTrackingServer]+"/api/v1/sessions/"+i+"/events"),n=ae(t,e._ecParams);e._sendRequest(r,D.Post,ne,n,(function(){}))}))}},{key:"_sendRequest",value:function(e,t,a,i,r){!function(e,t,a,i,r){if(void 0!==window.XMLHttpRequest){var n=new window.XMLHttpRequest;if("withCredentials"in n){var s=n;return s.open(t,e,!0),w(a)&&Object.keys(a).forEach((function(e){s.setRequestHeader(e,a[e])})),s.timeout=5e3,s.onload=function(){var e=s.status&&parseInt(s.status,10),t=s.responseText,a=function(e){var t={};try{e.trim().split(/[\r\n]+/).forEach((function(e){var a=e.split(":",1)[0],i=e.substring(a.length+2);a.length>0&&(t[a.toLowerCase()]=i)}))}catch(e){}return t}(s.getAllResponseHeaders());r(e,a,t)},s.onerror=function(){r(0)},void s.send(i)}r(0)}}(e,t,a,i,r)}}]),e}(),oe=function(){function e(){t(this,e),this._logger=z("MediaProcessor"),this._isConfigured=!1,this._privacyStatus=S.OptUnknown,this._sessionIdGenerator=l(),this._sessionMap={}}return i(e,[{key:"configure",value:function(e){var t=this;this._isConfigured||(this._ecResolver=e,this._privacyStatus=this._ecResolver.getPrivacyStatus(),this._ecResolver.notifyPrivacyChange(this._onPrivacyChange.bind(this)),this._isConfigured=!0,this._processSessionTimer=T((function(){t._tick()}),500),this._logger.log("Configured with resolver"))}},{key:"startSession",value:function(){if(this._privacyStatus===S.OptOut)return this._logger.log("Privacy is opted out. Not starting a session"),-1;var t=this._sessionIdGenerator.getUniqueId();return this._sessionMap[t]=e._createMediaSession(t),t}},{key:"processHit",value:function(e,t){if(-1!==e){var a=this._sessionMap[e];P(a)||(this._logger.log("Process hit for session("+e+") => "+t),a.queue(t))}}},{key:"endSession",value:function(e){if(-1!==e){var t=this._sessionMap[e];P(t)||t.end()}}},{key:"_tick",value:function(){var e=this;Object.keys(this._sessionMap).forEach((function(t){var a=e._sessionMap[t];a.process(e._ecResolver),a.doneProcessing()&&(e._logger.log("Removing session "+t+" from store as it has finished processing"),delete e._sessionMap[t])}))}},{key:"_onPrivacyChange",value:function(e){var t=this;this._logger.log("Privacy switched to "+e),this._privacyStatus=e,e===S.OptOut&&(this._logger.log("Aborting all active sessions"),Object.keys(this._sessionMap).forEach((function(e){t._sessionMap[e].abort()})))}}],[{key:"_createMediaSession",value:function(e){return new se(e)}}]),e}(),de=function(){function e(a){var i=a.id,r=a.name,n=a.position,s=a.length;if(t(this,e),!C(i))throw new TypeError("id is not a valid string");if(!C(r))throw new TypeError("name is not a valid string");if(!X(n)||n<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(s)||s<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.position=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.position===t.position&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"ad.id",this.id),r(e,"ad.name",this.name),r(e,"ad.position",this.position),r(e,"ad.length",this.length),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({id:t["ad.id"],name:t["ad.name"],position:t["ad.position"],length:t["ad.length"]})}),null):null}}]),e}(),ce=function(){function e(a){var i=a.name,r=a.position,n=a.startTime;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!X(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(n)||n<0)throw new TypeError("startTime cannot be less than zero");this.name=i,this.position=r,this.startTime=n}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime)}},{key:"serialize",value:function(){var e;return r(e={},"adbreak.name",this.name),r(e,"adbreak.position",this.position),r(e,"adbreak.starttime",this.startTime),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["adbreak.name"],position:t["adbreak.position"],startTime:t["adbreak.starttime"]})}),null):null}}]),e}(),ue=function(){function e(a){var i=a.name,r=a.position,n=a.startTime,s=a.length;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!X(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(n)||n<0)throw new TypeError("startTime cannot be less than zero");if(!J(s)||s<0)throw new TypeError("length cannot be less than zero");this.name=i,this.position=r,this.startTime=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"chapter.name",this.name),r(e,"chapter.position",this.position),r(e,"chapter.starttime",this.startTime),r(e,"chapter.length",this.length),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["chapter.name"],position:t["chapter.position"],startTime:t["chapter.starttime"],length:t["chapter.length"]})}),null):null}}]),e}(),le=new RegExp("^[a-zA-Z0-9_\\.]{1,64}$"),he=function(){function e(a){var i=a.name;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!le.test(i))throw new TypeError("name should match '^[a-zA-Z0-9_\\.]{1,64}$' pattern");this.name=i}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&this.name===t.name}},{key:"serialize",value:function(){return r({},"customstate.name",this.name)}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["customstate.name"]})}),null):null}}]),e}(),fe=function(){function e(a){var i=a.id,r=a.name,n=a.streamType,s=a.mediaType,o=a.length,d=a.resumed,c=a.prerollWaitTime,u=a.granularAdTracking;if(t(this,e),!C(i))throw new TypeError("id is not a valid string");if(!C(r))throw new TypeError("name is not a valid string");if(!C(n))throw new TypeError("streamType is not a valid string");if(!J(o)||o<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.streamType=n,this.mediaType=s!==p.Audio?p.Video:s,this.length=o,this.resumed=!!A(d)&&d,this.prerollWaitTime=!X(c)||c<0?250:c,this.granularAdTracking=!!A(u)&&u}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.streamType===t.streamType&&this.mediaType===t.mediaType&&this.length===t.length&&this.resumed===t.resumed&&this.prerollWaitTime===t.prerollWaitTime&&this.granularAdTracking===t.granularAdTracking)}},{key:"serialize",value:function(){var e;return r(e={},"media.id",this.id),r(e,"media.name",this.name),r(e,"media.streamtype",this.streamType),r(e,"media.type",this.mediaType),r(e,"media.length",this.length),r(e,"media.resumed",this.resumed),r(e,"media.prerollwaittime",this.prerollWaitTime),r(e,"media.granularadtracking",this.granularAdTracking),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({id:t["media.id"],name:t["media.name"],streamType:t["media.streamtype"],mediaType:t["media.type"],length:t["media.length"],resumed:t["media.resumed"],prerollWaitTime:t["media.prerollwaittime"],granularAdTracking:t["media.granularadtracking"]})}),null):null}}]),e}(),pe=function(){function e(a){var i=a.bitrate,r=a.droppedFrames,n=a.fps,s=a.startupTime;if(t(this,e),!J(i)||i<0)throw new TypeError("bitrate must not be less than zero");if(!J(r)||r<0)throw new TypeError("dropped frames must not be less than zero");if(!J(n)||n<0)throw new TypeError("fps must not be less than zero");if(!J(s)||s<0)throw new TypeError("startupTime must not be less than zero");this.bitrate=i,this.droppedFrames=r,this.fps=n,this.startupTime=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.bitrate===t.bitrate&&this.droppedFrames===t.droppedFrames&&this.fps===t.fps&&this.startupTime===t.startupTime)}},{key:"serialize",value:function(){var e;return r(e={},"qoe.bitrate",this.bitrate),r(e,"qoe.droppedframes",this.droppedFrames),r(e,"qoe.fps",this.fps),r(e,"qoe.startuptime",this.startupTime),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({bitrate:t["qoe.bitrate"],droppedFrames:t["qoe.droppedframes"],fps:t["qoe.fps"],startupTime:t["qoe.startuptime"]})}),null):null}}]),e}(),me=z("Media");var _e=function(e){try{return JSON.stringify(e,null,4)}catch(e){return"[Error formatting object]"}},ve=Object.freeze({Name:"event.name",Params:"event.params",Metadata:"event.metadata",TimeStamp:"event.ts",InternalEvent:"event.internal",Playhead:"event.playhead",ErrorId:"error.id"}),ke=Object.freeze(s({SessionStart:"sessionStart",SessionEnd:"sessionEnd",SessionComplete:"sessionComplete",Play:"play",Pause:"pause",Error:"error",QoEUpdate:"qoeUpdate",PlayheadUpdate:"playheadUpdate"},h)),ye=function(){function e(a,i){if(t(this,e),P(a))throw new Error("id is not valid");this.id=a,this.description=i,this.predicates=[],this.actions=[]}return i(e,[{key:"addPredicate",value:function(e,t,a){if(!Y(e))throw new Error("predicate is not a function");return this.predicates.push({predicate:e,val:t,message:a}),this}},{key:"addAction",value:function(e){if(!Y(e))throw new Error("action is not a function");return this.actions.push(e),this}},{key:"runPredicates",value:function(e){for(var t=0;t=this._interval&&(this._generateHit(V.Ping),this._previousStateTs=this._refTs)}}},{key:"_processMediaStart",value:function(t){var a={};a=e._extractMediaParams(this._media),t&&(a[x.Resume]=!0);var i=this._config[L.Channel];C(i)&&(a[L.Channel]=i);var r=this._config[L.PlayerName];C(r)&&(a[L.PlayerName]=r);var n=e._extractMediaMetadata(this._media);this._generateHit(V.SessionStart,a,n)}},{key:"_generateHit",value:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=r;if(P(n)){var s=this._media.qoeInfo,o=!(P(s)||!P(this._lastQoeInfo)&&this._lastQoeInfo.equal(s));o&&(n=e._extractQoeData(this._media),this._lastQoeInfo=s)}if(this._isTracking){var d=this._media.playhead,c=this._refTs,u=new Ie({eventType:t,params:a,customMetadata:i,qoeData:n,playhead:d,ts:c});this._hitProcessor.processHit(this._sessionId,u)}else this._logger.log("#_generateHit - Dropping hit as we have internally stopped tracking the session")}},{key:"_getPlaybackState",value:function(){return this._media.isInPlaybackState(Se.Buffer)?Se.Buffer:this._media.isInPlaybackState(Se.Seek)?Se.Seek:this._media.isInPlaybackState(Se.Play)?Se.Play:this._media.isInPlaybackState(Se.Pause)?Se.Pause:this._media.isInPlaybackState(Se.Stall)?Se.Stall:Se.Init}},{key:"_startSession",value:function(){this._sessionId=this._hitProcessor.startSession(),this._isTracking=!0,this._logger.log("Start internal session("+this._sessionId+")")}},{key:"_endSession",value:function(){this._hitProcessor.endSession(this._sessionId),this._isTracking=!1,this._logger.log("End internal session("+this._sessionId+")")}}],[{key:"_isGranularAdTrackingEnabled",value:function(e){var t=e.mediaInfo;return!P(t)&&t.granularAdTracking}},{key:"_extractMediaParams",value:function(t){var a={},i=t.mediaInfo;P(i)||(a[x.Id]=i.id,a[x.Name]=i.name,a[x.Length]=i.length,a[x.ContentType]=i.streamType,a[x.StreamType]=i.mediaType,a[x.Resume]=i.resumed);var r=t.mediaMetadata;return w(r)&&Object.keys(r).forEach((function(t){if(e._standardMediaMetadataMap.has(t)){var i=e._standardMediaMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractMediaMetadata",value:function(t){var a={},i=t.mediaMetadata;return w(i)&&Object.keys(i).forEach((function(t){e._standardMediaMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractAdBreakParams",value:function(e){var t={},a=e.adBreakInfo;return P(a)||(t[G.PodFriendlyName]=a.name,t[G.PodIndex]=a.position,t[G.PodSecond]=a.startTime),t}},{key:"_extractAdParams",value:function(t){var a={},i=t.adInfo;P(i)||(a[H.Name]=i.name,a[H.Id]=i.id,a[H.Length]=i.length,a[H.PodPosition]=i.position);var r=t.adMetadata;return w(r)&&Object.keys(r).forEach((function(t){if(e._standardAdMetadataMap.has(t)){var i=e._standardAdMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractAdMetadata",value:function(t){var a={},i=t.adMetadata;return w(i)&&Object.keys(i).forEach((function(t){e._standardAdMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractChapterParams",value:function(e){var t={},a=e.chapterInfo;return P(a)||(t[Q.FriendlyName]=a.name,t[Q.Index]=a.position,t[Q.Length]=a.length,t[Q.Offset]=a.startTime),t}},{key:"_extractChapterMetadata",value:function(e){var t={},a=e.chapterMetadata;return w(a)&&Object.keys(a).forEach((function(e){t[e]=a[e]})),t}},{key:"_extractQoeData",value:function(e){var t={},a=e.qoeInfo;return w(a)&&(t[K.Bitrate]=parseInt(a.bitrate,10),t[K.Fps]=parseInt(a.fps,10),t[K.DroppedFrames]=parseInt(a.droppedFrames,10),t[K.StartupTime]=parseInt(a.startupTime,10)),t}},{key:"_playbackStateToMediaCollectionEvent",value:function(e){switch(e){case Se.Buffer:return V.BufferStart;case Se.Seek:return V.PauseStart;case Se.Play:return V.Play;case Se.Pause:return V.PauseStart;case Se.Stall:return V.Play;case Se.Init:return V.Ping;default:return""}}}]),e}(),be=new Map;be.set(_.Show,N.Show),be.set(_.Season,N.Season),be.set(_.Episode,N.Episode),be.set(_.AssetId,N.AssetId),be.set(_.Genre,N.Genre),be.set(_.FirstAirDate,N.FirstAirDate),be.set(_.FirstDigitalDate,N.FirstDigitalDate),be.set(_.Rating,N.Rating),be.set(_.Originator,N.Originator),be.set(_.Network,N.Network),be.set(_.ShowType,N.ShowType),be.set(_.AdLoad,N.AdLoad),be.set(_.MVPD,N.MVPD),be.set(_.Authorized,N.Auth),be.set(_.DayPart,N.DayPart),be.set(_.Feed,N.Feed),be.set(_.StreamFormat,N.StreamFormat),be.set(v.Artist,N.Artist),be.set(v.Album,N.Album),be.set(v.Label,N.Label),be.set(v.Author,N.Author),be.set(v.Station,N.Station),be.set(v.Publisher,N.Publisher),Ae._standardMediaMetadataMap=be;var Ce=new Map;Ce.set(k.Advertiser,q.Advertiser),Ce.set(k.CampaignId,q.CampaignId),Ce.set(k.CreativeId,q.CreativeId),Ce.set(k.PlacementId,q.PlacementId),Ce.set(k.SiteId,q.SiteId),Ce.set(k.CreativeUrl,q.CreativeUrl),Ae._standardAdMetadataMap=Ce;var Ee="Media tracker is not in active tracking session, call 'API:trackSessionStart' to begin a new tracking session.",Me="Media tracker is in active tracking session, call 'API:trackSessionEnd' or 'API:trackComplete' to end current tracking session.",we="Media tracker is tracking buffer events, call 'API:trackEvent(BufferComplete)' first to stop tracking buffer events.",Te="Media tracker is not tracking buffer events, call 'API:trackEvent(BufferStart)' before 'API:trackEvent(BufferComplete)'.",Oe="Media tracker is tracking seek events, call 'API:trackEvent(SeekComplete)' first to stop tracking seek events.",Re="Media tracker is not tracking seek events, call 'API:trackEvent(SeekStart)' before 'API:trackEvent(SeekComplete)'.",Be="Media tracker is not tracking any AdBreak, call 'API:trackEvent(AdBreakStart)' to begin tracking AdBreak",ze="Media tracker is not tracking any Ad, call 'API:trackEvent(AdStart)' to begin tracking Ad",je="Media tracker is not tracking any Chapter, call 'API:trackEvent(ChapterStart)' to begin tracking Chapter",De="MediaInfo passed into 'API:trackSessionStart' is invalid.",Ve="AdBreakInfo passed into 'API:trackEvent(AdBreakStart)' is invalid.",Ne="Media tracker is currently tracking the AdBreak passed into 'API:trackEvent(AdBreakStart)'.",qe="AdInfo passed into 'API:trackEvent(AdStart)' is invalid.",xe="StateInfo passed into 'API:trackEvent(StateStart|StateEnd)' is invalid.",Fe="ErrorId passed into 'API:trackError()' is invalid.",Le="Media tracker is currently tracking the Ad passed into 'API:trackEvent(AdStart)'.",Ge="ChapterInfo passed into 'API:trackEvent(ChapterStart)' is invalid.",He="Media tracker is currently tracking the Chapter passed into 'API:trackEvent(ChapterStart)'.",Qe="QoEInfo passed into 'API:updateQoEInfo' is invalid.",Ue="Media tracker is tracking an AdBreak but not tracking any Ad and will drop any calls to track player state (Play, Pause, Buffer or Seek) in this state.",Ke="Media tracker is already tracking a state with the same state name.",We="Media tracker is not already tracking a state with the same state name.",Ze="Media tracker has reached maximum number of states per session (10).",$e=new RegExp("^[a-zA-Z0-9_\\.]+$"),Je=function(){function e(a,i,r){if(t(this,e),!a)throw new Error("hitProcessor should be valid");if(!i)throw new Error("logger should be valid");this._hitProcessor=a,this._logger=i,this._config=w(r)?r:{},this._resetStates(),this._setupRules()}return i(e,[{key:"track",value:function(e){var t=e[ve.Name];return C(t)?X(e[ve.TimeStamp])?(w(e[ve.Params])||(e[ve.Params]={}),e[ve.Metadata]=this._cleanMetadata(e[ve.Metadata]),!!this._prerollDeferRule(t,e)||this._processRule(t,e)):(this._logger.log("#track - Event timestamp is missing in track event data. - "+t),!1):(this._logger.log("#track - Event name is missing in track event data"),!1)}},{key:"_resetStates",value:function(){this._media=null,this._hitGenerator=null,this._sessionRefTs=null,this._inPrerollInterval=!1,this._prerollRefTs=null,this._prerollQueuedRules=[],this._contentStarted=!1,this._contentStartRefTs=null,this._mediaIdle=!1,this._trackerIdle=!1,this._mediaIdleStartTs=0}},{key:"_createHitGenerator",value:function(e){return new Ae(this._logger,this._hitProcessor,this._config,this._media,e)}},{key:"_processRule",value:function(e,t){return this._ruleEngine.processRule(e,t).success}},{key:"_setupRules",value:function(){this._ruleEngine=new ge(this._logger),this._ruleEngine.setEnterAction(this._cmdEnterAction.bind(this)),this._ruleEngine.setExitAction(this._cmdExitAction.bind(this));var e=this._isInMedia.bind(this),t=this._isInAdBreak.bind(this),a=this._isInAd.bind(this),i=this._isInChapter.bind(this),r=this._isInTrackedState.bind(this),n=this._isValidMediaInfo.bind(this),s=this._isValidAdBreakInfo.bind(this),o=this._isValidAdInfo.bind(this),d=this._isValidChapterInfo.bind(this),c=this._isValidQoEInfo.bind(this),u=this._isValidStateInfo.bind(this),l=this._isValidErrorInfo.bind(this),h=this._isDifferentAdBreakInfo.bind(this),f=this._isDifferentAdInfo.bind(this),p=this._isDifferentChapterInfo.bind(this),m=this._allowPlayerStateChange.bind(this),_=this._allowStateTrack.bind(this),v=this._isInBuffering.bind(this),k=this._isInSeeking.bind(this),y=this._cmdMediaStart.bind(this),g=this._cmdMediaSkip.bind(this),S=this._cmdMediaComplete.bind(this),P=this._cmdError.bind(this),I=this._cmdPlay.bind(this),A=this._cmdPause.bind(this),b=this._cmdBufferStart.bind(this),C=this._cmdBufferComplete.bind(this),E=this._cmdSeekStart.bind(this),M=this._cmdSeekComplete.bind(this),w=this._cmdAdStart.bind(this),T=this._cmdAdComplete.bind(this),O=this._cmdAdSkip.bind(this),R=this._cmdAdBreakStart.bind(this),B=this._cmdAdBreakComplete.bind(this),z=this._cmdAdBreakSkip.bind(this),j=this._cmdChapterStart.bind(this),D=this._cmdChapterComplete.bind(this),V=this._cmdChapterSkip.bind(this),N=this._cmdStateStart.bind(this),q=this._cmdStateEnd.bind(this),x=this._cmdBitrateChange.bind(this),F=this._cmdQoEUpdate.bind(this),L=this._cmdPlayheadUpdate.bind(this),G=new ye(ke.SessionStart,"API:trackSessionStart");G.addPredicate(e,!1,Me).addPredicate(n,!0,De).addAction(y),this._ruleEngine.addRule(G);var H=new ye(ke.SessionComplete,"API:trackComplete");H.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(S),this._ruleEngine.addRule(H);var Q=new ye(ke.SessionEnd,"API:trackSessionEnd");Q.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(g),this._ruleEngine.addRule(Q);var U=new ye(ke.Error,"API:trackError");U.addPredicate(e,!0,Ee).addPredicate(l,!0,Fe).addAction(P),this._ruleEngine.addRule(U);var K=new ye(ke.Play,"API:trackPlay");K.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addAction(M).addAction(C).addAction(I),this._ruleEngine.addRule(K);var W=new ye(ke.Pause,"API:trackPause");W.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!1,we).addPredicate(k,!1,Oe).addAction(A),this._ruleEngine.addRule(W);var Z=new ye(ke.BufferStart,"API:trackEvent(BufferStart)");Z.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!1,we).addPredicate(k,!1,Oe).addAction(b),this._ruleEngine.addRule(Z);var $=new ye(ke.BufferComplete,"API:trackEvent(BufferComplete)");$.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!0,Te).addAction(C),this._ruleEngine.addRule($);var J=new ye(ke.SeekStart,"API:trackEvent(SeekStart)");J.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(k,!1,Oe).addPredicate(v,!1,we).addAction(E),this._ruleEngine.addRule(J);var X=new ye(ke.SeekComplete,"API:trackEvent(SeekComplete)");X.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(k,!0,Re).addAction(M),this._ruleEngine.addRule(X);var Y=new ye(ke.AdBreakStart,"API:trackEvent(AdBreakStart)");Y.addPredicate(e,!0,Ee).addPredicate(s,!0,Ve).addPredicate(h,!0,Ne).addAction(O).addAction(z).addAction(R),this._ruleEngine.addRule(Y);var ee=new ye(ke.AdBreakComplete,"API:trackEvent(AdBreakComplete)");ee.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addAction(O).addAction(B),this._ruleEngine.addRule(ee);var te=new ye(ke.AdStart,"API:trackEvent(AdStart)");te.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(o,!0,qe).addPredicate(f,!0,Le).addAction(O).addAction(w),this._ruleEngine.addRule(te);var ae=new ye(ke.AdComplete,"API:trackEvent(AdComplete)");ae.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(a,!0,ze).addAction(T),this._ruleEngine.addRule(ae);var ie=new ye(ke.AdSkip,"API:trackEvent(AdSkip)");ie.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(a,!0,ze).addAction(O),this._ruleEngine.addRule(ie);var re=new ye(ke.ChapterStart,"API::trackEvent(chapterStart)");re.addPredicate(e,!0,Ee).addPredicate(d,!0,Ge).addPredicate(p,!0,He).addAction(V).addAction(j),this._ruleEngine.addRule(re);var ne=new ye(ke.ChapterComplete,"API::trackEvent(chapterComplete)");ne.addPredicate(e,!0,Ee).addPredicate(i,!0,je).addAction(D),this._ruleEngine.addRule(ne);var se=new ye(ke.ChapterSkip,"API:trackEvent(chapterSkip)");se.addPredicate(e,!0,Ee).addPredicate(i,!0,je).addAction(V),this._ruleEngine.addRule(se);var oe=new ye(ke.BitrateChange,"API:trackEvent(BitrateChange)");oe.addPredicate(e,!0,Ee).addAction(x),this._ruleEngine.addRule(oe);var de=new ye(ke.QoEUpdate,"API:trackEvent(QoEUpdate)");de.addPredicate(e,!0,Ee).addPredicate(c,!0,Qe).addAction(F),this._ruleEngine.addRule(de);var ce=new ye(ke.PlayheadUpdate,"API:trackEvent(PlayheadUpdate)");ce.addPredicate(e,!0,Ee).addAction(L),this._ruleEngine.addRule(ce);var ue=new ye(ke.StateStart,"API:trackEvent(StateStart)");ue.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!1,Ke).addPredicate(_,!0,Ze).addAction(N),this._ruleEngine.addRule(ue);var le=new ye(ke.StateEnd,"API:trackEvent(StateEnd)");le.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!0,We).addAction(q),this._ruleEngine.addRule(le)}},{key:"_isInMedia",value:function(){return!P(this._media)}},{key:"_isInAdBreak",value:function(){return this._media.isInAdBreak}},{key:"_isInAd",value:function(){return this._media.isInAd}},{key:"_isInChapter",value:function(){return this._media.isInChapter}},{key:"_isInBuffering",value:function(){return this._media.isInPlaybackState(Se.Buffer)}},{key:"_isInSeeking",value:function(){return this._media.isInPlaybackState(Se.Seek)}},{key:"_isInTrackedState",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.isCustomStateActive(t)}},{key:"_isValidMediaInfo",value:function(e){return null!=fe.deserialize(e[ve.Params])}},{key:"_isValidAdBreakInfo",value:function(e){return null!=ce.deserialize(e[ve.Params])}},{key:"_isValidAdInfo",value:function(e){return null!=de.deserialize(e[ve.Params])}},{key:"_isValidStateInfo",value:function(e){return null!=he.deserialize(e[ve.Params])}},{key:"_isValidChapterInfo",value:function(e){return null!=ue.deserialize(e[ve.Params])}},{key:"_isValidQoEInfo",value:function(e){return null!=pe.deserialize(e[ve.Params])}},{key:"_isValidErrorInfo",value:function(e){var t=e[ve.Params];if(!w(t))return!1;var a=t[ve.ErrorId];return C(a)}},{key:"_isDifferentAdBreakInfo",value:function(e){return!ce.deserialize(e[ve.Params]).equal(this._media.adBreakInfo)}},{key:"_isDifferentAdInfo",value:function(e){return!de.deserialize(e[ve.Params]).equal(this._media.adInfo)}},{key:"_isDifferentChapterInfo",value:function(e){return!ue.deserialize(e[ve.Params]).equal(this._media.chapterInfo)}},{key:"_allowPlayerStateChange",value:function(){return!this._media.isInAdBreak||this._media.isInAd}},{key:"_allowStateTrack",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.hasTrackedCustomState(t)||this._media.numTrackedCustomStates()<10}},{key:"_cmdEnterAction",value:function(e,t){var a=this._getRefTs(t);return P(this._hitGenerator)||this._hitGenerator.setRefTS(a),!0}},{key:"_cmdExitAction",value:function(e,t){if(P(this._media))return!1;e.id===ke.AdStart&&(!this._media.isInPlaybackState(Se.Init)||this._media.isInPlaybackState(Se.Buffer)||this._media.isInPlaybackState(Se.Seek)||this._media.enterPlaybackState(Se.Play)),e.id!==ke.BufferComplete&&e.id!==ke.SeekComplete||this._media.isInPlaybackState(Se.Init)&&this._media.enterPlaybackState(Se.Pause),this._cmdIdleDetection(t),this._cmdSessionTimeoutDetection(t),this._cmdContentStartDetection(t);var a=e.id===ke.AdStart||e.id===ke.AdBreakComplete;return this._hitGenerator.processPlayback(a),!0}},{key:"_cmdMediaStart",value:function(e){var t=fe.deserialize(e[ve.Params]),a=e[ve.Metadata],i=this._getRefTs(e);return this._media=new Pe(t,a),this._hitGenerator=this._createHitGenerator(i),this._hitGenerator.processMediaStart(),this._sessionRefTs=i,this._inPrerollInterval=0!==t.prerollWaitTime,this._prerollRefTs=i,!0}},{key:"_cmdMediaComplete",value:function(){return this._hitGenerator.processMediaComplete(),this._resetStates(),!0}},{key:"_cmdMediaSkip",value:function(){return this._hitGenerator.processMediaSkip(),this._resetStates(),!0}},{key:"_cmdAdBreakStart",value:function(e){var t=ce.deserialize(e[ve.Params]);return this._media.setAdBreakInfo(t),this._hitGenerator.processAdBreakStart(),!0}},{key:"_cmdAdBreakComplete",value:function(){return this._hitGenerator.processAdBreakComplete(),this._media.clearAdBreakInfo(),!0}},{key:"_cmdAdBreakSkip",value:function(){return this._media.isInAdBreak&&(this._hitGenerator.processAdBreakSkip(),this._media.clearAdBreakInfo()),!0}},{key:"_cmdAdStart",value:function(e){var t=de.deserialize(e[ve.Params]),a=e[ve.Metadata];return this._media.setAdInfo(t,a),this._hitGenerator.processAdStart(),!0}},{key:"_cmdAdComplete",value:function(){return this._hitGenerator.processAdComplete(),this._media.clearAdInfo(),!0}},{key:"_cmdAdSkip",value:function(){return this._media.isInAd&&(this._hitGenerator.processAdSkip(),this._media.clearAdInfo()),!0}},{key:"_cmdChapterStart",value:function(e){var t=ue.deserialize(e[ve.Params]),a=e[ve.Metadata];return this._media.setChapterInfo(t,a),this._hitGenerator.processChapterStart(),!0}},{key:"_cmdChapterComplete",value:function(){return this._hitGenerator.processChapterComplete(),this._media.clearChapterInfo(),!0}},{key:"_cmdChapterSkip",value:function(){return this._media.isInChapter&&(this._hitGenerator.processChapterSkip(),this._media.clearChapterInfo()),!0}},{key:"_cmdError",value:function(e){var t=e[ve.Params][ve.ErrorId];return this._hitGenerator.processError(t),!0}},{key:"_cmdBitrateChange",value:function(){return this._hitGenerator.processBitrateChange(),!0}},{key:"_cmdPlay",value:function(){return this._media.enterPlaybackState(Se.Play),!0}},{key:"_cmdPause",value:function(){return this._media.enterPlaybackState(Se.Pause),!0}},{key:"_cmdBufferStart",value:function(){return this._media.enterPlaybackState(Se.Buffer),!0}},{key:"_cmdBufferComplete",value:function(){return this._media.isInPlaybackState(Se.Buffer)&&this._media.exitPlaybackState(Se.Buffer),!0}},{key:"_cmdSeekStart",value:function(){return this._media.enterPlaybackState(Se.Seek),!0}},{key:"_cmdSeekComplete",value:function(){return this._media.isInPlaybackState(Se.Seek)&&this._media.exitPlaybackState(Se.Seek),!0}},{key:"_cmdQoEUpdate",value:function(e){var t=pe.deserialize(e[ve.Params]);return this._media.qoeInfo=t,!0}},{key:"_cmdPlayheadUpdate",value:function(e){var t=e[ve.Params];if(w(t)){var a=t[ve.Playhead];J(a)&&a>=0&&(this._media.playhead=a)}return!0}},{key:"_cmdIdleDetection",value:function(e){var t=this._getRefTs(e);this._media.isIdle()?this._mediaIdle?!this._trackerIdle&&t-this._mediaIdleStartTs>=18e5&&(this._hitGenerator.processSessionAbort(),this._trackerIdle=!0):(this._mediaIdle=!0,this._mediaIdleStartTs=t):(this._trackerIdle&&(this._hitGenerator.processSessionRestart(),this._trackerIdle=!1,this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null),this._mediaIdle=!1)}},{key:"_cmdSessionTimeoutDetection",value:function(e){var t=this._getRefTs(e);!this._trackerIdle&&t-this._sessionRefTs>=864e5&&(this._hitGenerator.processSessionAbort(),this._hitGenerator.processSessionRestart(),this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null)}},{key:"_cmdContentStartDetection",value:function(e){return!(!this._media.isIdle()&&!this._contentStarted)||(this._media.isInAdBreak?(this._contentStartRefTs=null,!0):(null==this._contentStartRefTs&&(this._contentStartRefTs=this._getRefTs(e)),this._getRefTs(e)-this._contentStartRefTs>=1e3&&(this._hitGenerator.processPlayback(!0),this._contentStarted=!0),!0))}},{key:"_cmdStateStart",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.startCustomState(t),this._hitGenerator.processCustomStateStart(t),!0}},{key:"_cmdStateEnd",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.endCustomState(t),this._hitGenerator.processCustomStateEnd(t),!0}},{key:"_getRefTs",value:function(e){var t=e[ve.TimeStamp];return X(t)?t:null}},{key:"_prerollDeferRule",value:function(e,t){if(this._inPrerollInterval&&null!=this._media){var a=this._media.mediaInfo.prerollWaitTime;if(this._prerollQueuedRules.push({eventName:e,context:t}),this._getRefTs(t)-this._prerollRefTs>=a||e===ke.AdBreakStart||e===ke.MediaComplete||e===ke.MediaSkip){for(var i=this._prerollReorderRules(this._prerollQueuedRules),r=0;r3&&void 0!==arguments[3]&&arguments[3];if(this._tracker){var s=E(),o=(r(i={},ve.Name,e),r(i,ve.Params,t),r(i,ve.Metadata,a),r(i,ve.TimeStamp,s),r(i,ve.InternalEvent,n),i),d=this._tracker.track(o);this._lastEventTS=s,e===ke.PlayheadUpdate&&(this._lastPlayheadParams=t),e===ke.SessionStart&&d?this._startTimer():e!==ke.SessionComplete&&e!==ke.SessionEnd||this._stopTimer()}else this._logger.warn("Dropping the call as the tracker instance is already destroyed")}},{key:"_startTimer",value:function(){var e=this;this._timer||(this._timer=T((function(){e._onTick()}),500))}},{key:"_stopTimer",value:function(){var e;this._timer&&(e=this._timer,clearInterval(e),this._timer=null)}},{key:"_onTick",value:function(){E()-this._lastEventTS>750&&this._trackInternal(ke.PlayheadUpdate,this._lastPlayheadParams,null,!0)}}]),e}(),Ye=new oe,et=l();var tt={configure:function(e){Ye.configure(e)},getInstance:function(e){var t="tracker"+et.getUniqueId();return new Xe(Ye,t,e)},createMediaObject:function(e,t,a,i,r){var n=null;try{n=new fe({id:t,name:e,streamType:i,mediaType:r,length:a}).serialize()}catch(e){me.error("Error creating MediaObject ("+e.message+")")}return n},createAdBreakObject:function(e,t,a){var i=null;try{i=new ce({name:e,position:t,startTime:a}).serialize()}catch(e){me.error("Error creating AdBreakObject ("+e.message+")")}return i},createAdObject:function(e,t,a,i){var r=null;try{r=new de({id:t,name:e,position:a,length:i}).serialize()}catch(e){me.error("Error creating AdObject ("+e.message+")")}return r},createChapterObject:function(e,t,a,i){var r=null;try{r=new ue({name:e,position:t,length:a,startTime:i}).serialize()}catch(e){me.error("Error creating ChapterObject ("+e.message+")")}return r},createQoEObject:function(e,t,a,i){var r=null;try{r=new pe({bitrate:e,droppedFrames:i,fps:a,startupTime:t}).serialize()}catch(e){me.error("Error creating QoEObject ("+e.message+")")}return r},createStateObject:function(e){var t=null;try{t=new he({name:e}).serialize()}catch(e){me.error("Error creating StateObject ("+e.message+")")}return t},version:"js-3.1.0",Event:h,MediaType:p,TrackerConfig:g,PlayerState:m,StreamType:y,MediaObjectKey:f,VideoMetadataKeys:_,AudioMetadataKeys:v,AdMetadataKeys:k};var at="ecid",it="analytics",rt="mediaanalytics",nt=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(s,e);var a,n=(a=s,function(){var e,t=o(a);if(c()){var i=o(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return u(this,e)});function s(e,a){var i;if(t(this,s),i=n.call(this),!e)throw new Error("Valid appmeasurement instance is required");if(!e.visitor)throw new Error("Valid visitor instance is required");return i._mediaConfig=a,i._appMeasurement=e,i._appMeasurementReady=!1,i._privacyResolved=!1,i._logger=z("WebECResolver"),i._fetchECParams(),i._fetchPrivacyStatus(),i._setupResolver(),i}return i(s,[{key:"resolveKeys",value:function(e){if(!e||0===e.length)return{};for(var t={},a=0;a0};function E(){return(new Date).getTime()}function C(e,t){if(window.console){var a;switch(e){case P.Log:a=window.console.log;break;case P.Info:a=window.console.info;break;case P.Warn:a=window.console.warn;break;case P.Error:a=window.console.error}if(a)a("MediaSDK: ["+function(){var e=new Date,t=function(e){return e<10?"00"+e:e<100?"0"+e:""+e}(e.getMilliseconds());return e.toTimeString()+"."+t}()+"] "+t)}}var M=function(t){return!S(t)&&!Array.isArray(t)&&"object"===e(t)};function w(e,t){return setInterval(e,t)}var T=!1;function O(e){var t=e.debugLogging;I(t)&&(T=t)}function R(e,t,a){(T||e===P.Error)&&C(e,t+" "+a)}function B(e){var t=b(e)?"["+e+"]":"";return{log:function(e){!function(e,t){R(P.Log,e,t)}(t,e)},info:function(e){!function(e,t){R(P.Info,e,t)}(t,e)},warn:function(e){!function(e,t){R(P.Warn,e,t)}(t,e)},error:function(e){!function(e,t){R(P.Error,e,t)}(t,e)}}}var z=Object.freeze({AnalyticsTrackingServer:"analyticstrackingserver",AnalyticsSsl:"analyticsssl",Rsid:"rsid",Vid:"vid",Aid:"aid",Mcid:"mid",McOrgId:"orgid",AamLocHint:"aamlochint",CustomerIds:"customerids",MediaTrackingServer:"mediatrackingserver",MediaChannel:"mediachannel",MediaPlayerName:"mediaplayername",MediaAppVersion:"mediaappversion",MediaSsl:"mediassl"}),j=Object.freeze({Get:"GET",Post:"POST"}),D=Object.freeze({SessionStart:"sessionStart",SessionComplete:"sessionComplete",SessionEnd:"sessionEnd",AdBreakStart:"adBreakStart",AdBreakComplete:"adBreakComplete",AdStart:"adStart",AdComplete:"adComplete",AdSkip:"adSkip",ChapterStart:"chapterStart",ChapterComplete:"chapterComplete",ChapterSkip:"chapterSkip",Play:"play",Ping:"ping",BufferStart:"bufferStart",PauseStart:"pauseStart",BitrateChange:"bitrateChange",Error:"error",StateStart:"stateStart",StateEnd:"stateEnd"}),V=Object.freeze({Show:"media.show",Season:"media.season",Episode:"media.episode",AssetId:"media.assetId",Genre:"media.genre",FirstAirDate:"media.firstAirDate",FirstDigitalDate:"media.firstDigitalDate",Rating:"media.rating",Originator:"media.originator",Network:"media.network",ShowType:"media.showType",AdLoad:"media.adLoad",MVPD:"media.pass.mvpd",Auth:"media.pass.auth",DayPart:"media.dayPart",Feed:"media.feed",StreamFormat:"media.streamFormat",Artist:"media.artist",Album:"media.album",Label:"media.label",Author:"media.author",Station:"media.station",Publisher:"media.publisher"}),q=Object.freeze({Advertiser:"media.ad.advertiser",CampaignId:"media.ad.campaignId",CreativeId:"media.ad.creativeId",SiteId:"media.ad.siteId",CreativeUrl:"media.ad.creativeURL",PlacementId:"media.ad.placementId"}),x=Object.freeze({Id:"media.id",Name:"media.name",Length:"media.length",ContentType:"media.contentType",StreamType:"media.streamType",PlayerName:"media.playerName",Resume:"media.resume",Channel:"media.channel",Publisher:"media.publisher",SdkVersion:"media.sdkVersion"}),N=Object.freeze({AppInstallationId:"appInstallationId",AnalyticsTrackingServer:"analytics.trackingServer",AnalyticsRsid:"analytics.reportSuite",AnalyticsSsl:"analytics.enableSSL",AnalyticsVisitorId:"analytics.visitorId",AnalyticsAid:"analytics.aid",VisitorMcOrgId:"visitor.marketingCloudOrgId",VisitorMcuserId:"visitor.marketingCloudUserId",VisitorAamLocHint:"visitor.aamLocationHint",VisitorCustomerIds:"visitor.customerIDs",VisitorCustomerKeyId:"id",VisitorCustomerKeyAuthState:"authState",MediaVersion:"media.libraryVersion"}),F=Object.freeze({Channel:"media.channel"}),L=Object.freeze({PodFriendlyName:"media.ad.podFriendlyName",PodIndex:"media.ad.podIndex",PodSecond:"media.ad.podSecond"}),G=Object.freeze({Name:"media.ad.name",Id:"media.ad.id",Length:"media.ad.length",PodPosition:"media.ad.podPosition",PlayerName:"media.ad.playerName"}),H=Object.freeze({FriendlyName:"media.chapter.friendlyName",Length:"media.chapter.length",Offset:"media.chapter.offset",Index:"media.chapter.index"}),Q=Object.freeze({StateName:"media.state.name"}),U=Object.freeze({Bitrate:"media.qoe.bitrate",DroppedFrames:"media.qoe.droppedFrames",Fps:"media.qoe.framesPerSecond",StartupTime:"media.qoe.timeToStart",ErrorId:"media.qoe.errorID",ErrorSource:"media.qoe.errorSource",ErrorSourcePlayer:"player",ErrorSourceExternal:"external"}),K=Object.freeze({EventType:"eventType",Params:"params",QoE:"qoeData",CustomMetadata:"customMetadata",PlayerTime:"playerTime"}),W=Object.freeze({Playhead:"playhead",Ts:"ts"}),Z=function(e){return 0===Object.keys(e).length},$=function(e){return"number"==typeof e&&!isNaN(e)},J=function(e){var t=parseInt(e,10);return $(t)&&e===t},X=function(e){return"function"==typeof e},Y=function(e,t){if(!X(e))return t;try{return e()}catch(e){return t}};function ee(e){var t={};return M(e)&&Object.keys(e).forEach((function(a){var i=e[a],r=i.id,n=i.authState,s=void 0===n?0:n;b(r)&&(t[a]={id:r,authState:s})})),t}function te(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r({},K.EventType,e.eventType);i[K.PlayerTime]=(r(t={},W.Playhead,e.playhead),r(t,W.Ts,e.ts),t),Z(e.customMetadata)||(i[K.CustomMetadata]=e.customMetadata),Z(e.qoeData)||(i[K.QoE]=e.qoeData);var n=s({},e.params);if(e.eventType===D.SessionStart){b(a[z.AnalyticsTrackingServer])&&(n[N.AnalyticsTrackingServer]=a[z.AnalyticsTrackingServer]),b(a[z.Rsid])&&(n[N.AnalyticsRsid]=a[z.Rsid]),I(a[z.AnalyticsSsl])&&(n[N.AnalyticsSsl]=a[z.AnalyticsSsl]),b(a[z.Vid])&&(n[N.AnalyticsVisitorId]=a[z.Vid]),b(a[z.Aid])&&(n[N.AnalyticsAid]=a[z.Aid]),b(a[z.McOrgId])&&(n[N.VisitorMcOrgId]=a[z.McOrgId]),b(a[z.Mcid])&&(n[N.VisitorMcuserId]=a[z.Mcid]),J(a[z.AamLocHint])&&(n[N.VisitorAamLocHint]=a[z.AamLocHint]);var o=ee(a[z.CustomerIds]);if(M(o)&&!Z(o)&&(n[N.VisitorCustomerIds]=o),!b(n[x.Channel])){var d=a[z.MediaChannel];n[x.Channel]=b(d)?d:"unknown"}var c=a[z.MediaPlayerName];n[x.PlayerName]=b(c)?c:"unknown",b(a[z.MediaAppVersion])&&(n[x.SdkVersion]=a[z.MediaAppVersion]),n[N.MediaVersion]="js-3.0.2"}else if(e.eventType===D.AdStart){var u=a[z.MediaPlayerName];n[G.PlayerName]=b(u)?u:"unknown"}Z(n)||(i[K.Params]=n);var l=Y((function(){return JSON.stringify(i)}),"");return l}function ae(e){try{var t=e.split("/");return t[4]?t[4]:""}catch(e){return""}}var ie=[z.AnalyticsTrackingServer,z.AnalyticsSsl,z.Rsid,z.Vid,z.Aid,z.Mcid,z.McOrgId,z.AamLocHint,z.CustomerIds,z.MediaChannel,z.MediaAppVersion,z.MediaPlayerName,z.MediaTrackingServer,z.MediaSsl],re={"Content-Type":"application/json"},ne=function(){function e(a){t(this,e),this._logger=B("MediaSession("+a+")"),this._hits=[],this._ecParams=null,this._sessionId=null,this._creatingMCSession=!1,this._createSessionFailureCount=0,this._internalError=!1,this._doneQueuing=!1}return i(e,[{key:"queue",value:function(e){this._internalError||this._doneQueuing||this._hits.push(e)}},{key:"process",value:function(e){this._internalError||0!==this._hits.length&&e.isReady()&&(this._ecParams||(this._ecParams=e.resolveKeys(ie)),S(this._sessionId)?this._startMCSession():this._flushPendingHits())}},{key:"end",value:function(){this._logger.log("end"),this._doneQueuing=!0}},{key:"abort",value:function(){this._logger.log("abort"),this._doneQueuing=!0,this._hits=[]}},{key:"doneProcessing",value:function(){return this._internalError||this._doneQueuing&&0===this._hits.length}},{key:"_startMCSession",value:function(){var e=this;if(!this._creatingMCSession){var t=this._hits[0];if(t.eventType!==D.SessionStart)return this._logger.log("Dropping hit("+t.eventType+") as we expected sessionStart"),void this._hits.shift();var a,i=((a=this._ecParams)[z.MediaSsl]?"https":"http")+"://"+a[z.MediaTrackingServer]+"/api/v1/sessions",r=te(t,this._ecParams);this._creatingMCSession=!0,this._sendRequest(i,j.Post,re,r,(function(t,a){var i,r=!1;do{if(201!==t)break;var n=a.location;if(!b(n))break;if(!(i=ae(n)))break;r=!0}while(0);r?(e._logger.log("Media collection session created with session id : "+i),e._sessionId=i,e._hits.shift()):(e._logger.log("Creating Media collection session failed"),e._createSessionFailureCount+=1,e._createSessionFailureCount>=3&&(e._logger.log("Internal error: Creating Media collection session failed 3 times"),e._internalError=!0)),e._creatingMCSession=!1}))}}},{key:"_flushPendingHits",value:function(){var e=this;this._hits.splice(0,3).forEach((function(t){var a,i,r=(a=e._ecParams,i=e._sessionId,(a[z.MediaSsl]?"https":"http")+"://"+a[z.MediaTrackingServer]+"/api/v1/sessions/"+i+"/events"),n=te(t,e._ecParams);e._sendRequest(r,j.Post,re,n,(function(){}))}))}},{key:"_sendRequest",value:function(e,t,a,i,r){!function(e,t,a,i,r){if(void 0!==window.XMLHttpRequest){var n=new window.XMLHttpRequest;if("withCredentials"in n){var s=n;return s.open(t,e,!0),M(a)&&Object.keys(a).forEach((function(e){s.setRequestHeader(e,a[e])})),s.timeout=5e3,s.onload=function(){var e=s.status&&parseInt(s.status,10),t=s.responseText,a=function(e){var t={};try{e.trim().split(/[\r\n]+/).forEach((function(e){var a=e.split(":",1)[0],i=e.substring(a.length+2);a.length>0&&(t[a.toLowerCase()]=i)}))}catch(e){}return t}(s.getAllResponseHeaders());r(e,a,t)},s.onerror=function(){r(0)},void s.send(i)}r(0)}}(e,t,a,i,r)}}]),e}(),se=function(){function e(){t(this,e),this._logger=B("MediaProcessor"),this._isConfigured=!1,this._privacyStatus=g.OptUnknown,this._sessionIdGenerator=l(),this._sessionMap={}}return i(e,[{key:"configure",value:function(e){var t=this;this._isConfigured||(this._ecResolver=e,this._privacyStatus=this._ecResolver.getPrivacyStatus(),this._ecResolver.notifyPrivacyChange(this._onPrivacyChange.bind(this)),this._isConfigured=!0,this._processSessionTimer=w((function(){t._tick()}),500),this._logger.log("Configured with resolver"))}},{key:"startSession",value:function(){if(this._privacyStatus===g.OptOut)return this._logger.log("Privacy is opted out. Not starting a session"),-1;var t=this._sessionIdGenerator.getUniqueId();return this._sessionMap[t]=e._createMediaSession(t),t}},{key:"processHit",value:function(e,t){if(-1!==e){var a=this._sessionMap[e];S(a)||(this._logger.log("Process hit for session("+e+") => "+t),a.queue(t))}}},{key:"endSession",value:function(e){if(-1!==e){var t=this._sessionMap[e];S(t)||t.end()}}},{key:"_tick",value:function(){var e=this;Object.keys(this._sessionMap).forEach((function(t){var a=e._sessionMap[t];a.process(e._ecResolver),a.doneProcessing()&&(e._logger.log("Removing session "+t+" from store as it has finished processing"),delete e._sessionMap[t])}))}},{key:"_onPrivacyChange",value:function(e){var t=this;this._logger.log("Privacy switched to "+e),this._privacyStatus=e,e===g.OptOut&&(this._logger.log("Aborting all active sessions"),Object.keys(this._sessionMap).forEach((function(e){t._sessionMap[e].abort()})))}}],[{key:"_createMediaSession",value:function(e){return new ne(e)}}]),e}(),oe=function(){function e(a){var i=a.id,r=a.name,n=a.position,s=a.length;if(t(this,e),!b(i))throw new TypeError("id is not a valid string");if(!b(r))throw new TypeError("name is not a valid string");if(!J(n)||n<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(s)||s<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.position=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.position===t.position&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"ad.id",this.id),r(e,"ad.name",this.name),r(e,"ad.position",this.position),r(e,"ad.length",this.length),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({id:t["ad.id"],name:t["ad.name"],position:t["ad.position"],length:t["ad.length"]})}),null):null}}]),e}(),de=function(){function e(a){var i=a.name,r=a.position,n=a.startTime;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!J(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(n)||n<0)throw new TypeError("startTime cannot be less than zero");this.name=i,this.position=r,this.startTime=n}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime)}},{key:"serialize",value:function(){var e;return r(e={},"adbreak.name",this.name),r(e,"adbreak.position",this.position),r(e,"adbreak.starttime",this.startTime),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["adbreak.name"],position:t["adbreak.position"],startTime:t["adbreak.starttime"]})}),null):null}}]),e}(),ce=function(){function e(a){var i=a.name,r=a.position,n=a.startTime,s=a.length;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!J(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!$(n)||n<0)throw new TypeError("startTime cannot be less than zero");if(!$(s)||s<0)throw new TypeError("length cannot be less than zero");this.name=i,this.position=r,this.startTime=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"chapter.name",this.name),r(e,"chapter.position",this.position),r(e,"chapter.starttime",this.startTime),r(e,"chapter.length",this.length),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["chapter.name"],position:t["chapter.position"],startTime:t["chapter.starttime"],length:t["chapter.length"]})}),null):null}}]),e}(),ue=new RegExp("^[a-zA-Z0-9_\\.]{1,64}$"),le=function(){function e(a){var i=a.name;if(t(this,e),!b(i))throw new TypeError("name is not a valid string");if(!ue.test(i))throw new TypeError("name should match '^[a-zA-Z0-9_\\.]{1,64}$' pattern");this.name=i}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&this.name===t.name}},{key:"serialize",value:function(){return r({},"customstate.name",this.name)}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({name:t["customstate.name"]})}),null):null}}]),e}(),he=function(){function e(a){var i=a.id,r=a.name,n=a.streamType,s=a.mediaType,o=a.length,d=a.resumed,c=a.prerollWaitTime,u=a.granularAdTracking;if(t(this,e),!b(i))throw new TypeError("id is not a valid string");if(!b(r))throw new TypeError("name is not a valid string");if(!b(n))throw new TypeError("streamType is not a valid string");if(!$(o)||o<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.streamType=n,this.mediaType=s!==p.Audio?p.Video:s,this.length=o,this.resumed=!!I(d)&&d,this.prerollWaitTime=!J(c)||c<0?250:c,this.granularAdTracking=!!I(u)&&u}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.streamType===t.streamType&&this.mediaType===t.mediaType&&this.length===t.length&&this.resumed===t.resumed&&this.prerollWaitTime===t.prerollWaitTime&&this.granularAdTracking===t.granularAdTracking)}},{key:"serialize",value:function(){var e;return r(e={},"media.id",this.id),r(e,"media.name",this.name),r(e,"media.streamtype",this.streamType),r(e,"media.type",this.mediaType),r(e,"media.length",this.length),r(e,"media.resumed",this.resumed),r(e,"media.prerollwaittime",this.prerollWaitTime),r(e,"media.granularadtracking",this.granularAdTracking),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({id:t["media.id"],name:t["media.name"],streamType:t["media.streamtype"],mediaType:t["media.type"],length:t["media.length"],resumed:t["media.resumed"],prerollWaitTime:t["media.prerollwaittime"],granularAdTracking:t["media.granularadtracking"]})}),null):null}}]),e}(),fe=function(){function e(a){var i=a.bitrate,r=a.droppedFrames,n=a.fps,s=a.startupTime;if(t(this,e),!$(i)||i<0)throw new TypeError("bitrate must not be less than zero");if(!$(r)||r<0)throw new TypeError("dropped frames must not be less than zero");if(!$(n)||n<0)throw new TypeError("fps must not be less than zero");if(!$(s)||s<0)throw new TypeError("startupTime must not be less than zero");this.bitrate=i,this.droppedFrames=r,this.fps=n,this.startupTime=s}return i(e,[{key:"equal",value:function(t){return!S(t)&&t instanceof e&&(this.bitrate===t.bitrate&&this.droppedFrames===t.droppedFrames&&this.fps===t.fps&&this.startupTime===t.startupTime)}},{key:"serialize",value:function(){var e;return r(e={},"qoe.bitrate",this.bitrate),r(e,"qoe.droppedframes",this.droppedFrames),r(e,"qoe.fps",this.fps),r(e,"qoe.startuptime",this.startupTime),e}}],[{key:"deserialize",value:function(t){return M(t)?Y((function(){return new e({bitrate:t["qoe.bitrate"],droppedFrames:t["qoe.droppedframes"],fps:t["qoe.fps"],startupTime:t["qoe.startuptime"]})}),null):null}}]),e}(),pe=B("Media");var me=function(e){try{return JSON.stringify(e,null,4)}catch(e){return"[Error formatting object]"}},_e=Object.freeze({Name:"event.name",Params:"event.params",Metadata:"event.metadata",TimeStamp:"event.ts",InternalEvent:"event.internal",Playhead:"event.playhead",ErrorId:"error.id"}),ve=Object.freeze(s({SessionStart:"sessionStart",SessionEnd:"sessionEnd",SessionComplete:"sessionComplete",Play:"play",Pause:"pause",Error:"error",QoEUpdate:"qoeUpdate",PlayheadUpdate:"playheadUpdate"},h)),ke=function(){function e(a,i){if(t(this,e),S(a))throw new Error("id is not valid");this.id=a,this.description=i,this.predicates=[],this.actions=[]}return i(e,[{key:"addPredicate",value:function(e,t,a){if(!X(e))throw new Error("predicate is not a function");return this.predicates.push({predicate:e,val:t,message:a}),this}},{key:"addAction",value:function(e){if(!X(e))throw new Error("action is not a function");return this.actions.push(e),this}},{key:"runPredicates",value:function(e){for(var t=0;t=this._interval&&(this._generateHit(D.Ping),this._previousStateTs=this._refTs)}}},{key:"_processMediaStart",value:function(t){var a={};a=e._extractMediaParams(this._media),t&&(a[x.Resume]=!0);var i=this._config[F.Channel];b(i)&&(a[F.Channel]=i);var r=e._extractMediaMetadata(this._media);this._generateHit(D.SessionStart,a,r)}},{key:"_generateHit",value:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=r;if(S(n)){var s=this._media.qoeInfo,o=!(S(s)||!S(this._lastQoeInfo)&&this._lastQoeInfo.equal(s));o&&(n=e._extractQoeData(this._media),this._lastQoeInfo=s)}if(this._isTracking){var d=this._media.playhead,c=this._refTs,u=new Pe({eventType:t,params:a,customMetadata:i,qoeData:n,playhead:d,ts:c});this._hitProcessor.processHit(this._sessionId,u)}else this._logger.log("#_generateHit - Dropping hit as we have internally stopped tracking the session")}},{key:"_getPlaybackState",value:function(){return this._media.isInPlaybackState(ge.Buffer)?ge.Buffer:this._media.isInPlaybackState(ge.Seek)?ge.Seek:this._media.isInPlaybackState(ge.Play)?ge.Play:this._media.isInPlaybackState(ge.Pause)?ge.Pause:this._media.isInPlaybackState(ge.Stall)?ge.Stall:ge.Init}},{key:"_startSession",value:function(){this._sessionId=this._hitProcessor.startSession(),this._isTracking=!0,this._logger.log("Start internal session("+this._sessionId+")")}},{key:"_endSession",value:function(){this._hitProcessor.endSession(this._sessionId),this._isTracking=!1,this._logger.log("End internal session("+this._sessionId+")")}}],[{key:"_isGranularAdTrackingEnabled",value:function(e){var t=e.mediaInfo;return!S(t)&&t.granularAdTracking}},{key:"_extractMediaParams",value:function(t){var a={},i=t.mediaInfo;S(i)||(a[x.Id]=i.id,a[x.Name]=i.name,a[x.Length]=i.length,a[x.ContentType]=i.streamType,a[x.StreamType]=i.mediaType,a[x.Resume]=i.resumed);var r=t.mediaMetadata;return M(r)&&Object.keys(r).forEach((function(t){if(e._standardMediaMetadataMap.has(t)){var i=e._standardMediaMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractMediaMetadata",value:function(t){var a={},i=t.mediaMetadata;return M(i)&&Object.keys(i).forEach((function(t){e._standardMediaMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractAdBreakParams",value:function(e){var t={},a=e.adBreakInfo;return S(a)||(t[L.PodFriendlyName]=a.name,t[L.PodIndex]=a.position,t[L.PodSecond]=a.startTime),t}},{key:"_extractAdParams",value:function(t){var a={},i=t.adInfo;S(i)||(a[G.Name]=i.name,a[G.Id]=i.id,a[G.Length]=i.length,a[G.PodPosition]=i.position);var r=t.adMetadata;return M(r)&&Object.keys(r).forEach((function(t){if(e._standardAdMetadataMap.has(t)){var i=e._standardAdMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractAdMetadata",value:function(t){var a={},i=t.adMetadata;return M(i)&&Object.keys(i).forEach((function(t){e._standardAdMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractChapterParams",value:function(e){var t={},a=e.chapterInfo;return S(a)||(t[H.FriendlyName]=a.name,t[H.Index]=a.position,t[H.Length]=a.length,t[H.Offset]=a.startTime),t}},{key:"_extractChapterMetadata",value:function(e){var t={},a=e.chapterMetadata;return M(a)&&Object.keys(a).forEach((function(e){t[e]=a[e]})),t}},{key:"_extractQoeData",value:function(e){var t={},a=e.qoeInfo;return M(a)&&(t[U.Bitrate]=parseInt(a.bitrate,10),t[U.Fps]=parseInt(a.fps,10),t[U.DroppedFrames]=parseInt(a.droppedFrames,10),t[U.StartupTime]=parseInt(a.startupTime,10)),t}},{key:"_playbackStateToMediaCollectionEvent",value:function(e){switch(e){case ge.Buffer:return D.BufferStart;case ge.Seek:return D.PauseStart;case ge.Play:return D.Play;case ge.Pause:return D.PauseStart;case ge.Stall:return D.Play;case ge.Init:return D.Ping;default:return""}}}]),e}(),Ae=new Map;Ae.set(_.Show,V.Show),Ae.set(_.Season,V.Season),Ae.set(_.Episode,V.Episode),Ae.set(_.AssetId,V.AssetId),Ae.set(_.Genre,V.Genre),Ae.set(_.FirstAirDate,V.FirstAirDate),Ae.set(_.FirstDigitalDate,V.FirstDigitalDate),Ae.set(_.Rating,V.Rating),Ae.set(_.Originator,V.Originator),Ae.set(_.Network,V.Network),Ae.set(_.ShowType,V.ShowType),Ae.set(_.AdLoad,V.AdLoad),Ae.set(_.MVPD,V.MVPD),Ae.set(_.Authorized,V.Auth),Ae.set(_.DayPart,V.DayPart),Ae.set(_.Feed,V.Feed),Ae.set(_.StreamFormat,V.StreamFormat),Ae.set(v.Artist,V.Artist),Ae.set(v.Album,V.Album),Ae.set(v.Label,V.Label),Ae.set(v.Author,V.Author),Ae.set(v.Station,V.Station),Ae.set(v.Publisher,V.Publisher),Ie._standardMediaMetadataMap=Ae;var be=new Map;be.set(k.Advertiser,q.Advertiser),be.set(k.CampaignId,q.CampaignId),be.set(k.CreativeId,q.CreativeId),be.set(k.PlacementId,q.PlacementId),be.set(k.SiteId,q.SiteId),be.set(k.CreativeUrl,q.CreativeUrl),Ie._standardAdMetadataMap=be;var Ee="Media tracker is not in active tracking session, call 'API:trackSessionStart' to begin a new tracking session.",Ce="Media tracker is in active tracking session, call 'API:trackSessionEnd' or 'API:trackComplete' to end current tracking session.",Me="Media tracker is tracking buffer events, call 'API:trackEvent(BufferComplete)' first to stop tracking buffer events.",we="Media tracker is not tracking buffer events, call 'API:trackEvent(BufferStart)' before 'API:trackEvent(BufferComplete)'.",Te="Media tracker is tracking seek events, call 'API:trackEvent(SeekComplete)' first to stop tracking seek events.",Oe="Media tracker is not tracking seek events, call 'API:trackEvent(SeekStart)' before 'API:trackEvent(SeekComplete)'.",Re="Media tracker is not tracking any AdBreak, call 'API:trackEvent(AdBreakStart)' to begin tracking AdBreak",Be="Media tracker is not tracking any Ad, call 'API:trackEvent(AdStart)' to begin tracking Ad",ze="Media tracker is not tracking any Chapter, call 'API:trackEvent(ChapterStart)' to begin tracking Chapter",je="MediaInfo passed into 'API:trackSessionStart' is invalid.",De="AdBreakInfo passed into 'API:trackEvent(AdBreakStart)' is invalid.",Ve="Media tracker is currently tracking the AdBreak passed into 'API:trackEvent(AdBreakStart)'.",qe="AdInfo passed into 'API:trackEvent(AdStart)' is invalid.",xe="StateInfo passed into 'API:trackEvent(StateStart|StateEnd)' is invalid.",Ne="ErrorId passed into 'API:trackError()' is invalid.",Fe="Media tracker is currently tracking the Ad passed into 'API:trackEvent(AdStart)'.",Le="ChapterInfo passed into 'API:trackEvent(ChapterStart)' is invalid.",Ge="Media tracker is currently tracking the Chapter passed into 'API:trackEvent(ChapterStart)'.",He="QoEInfo passed into 'API:updateQoEInfo' is invalid.",Qe="Media tracker is tracking an AdBreak but not tracking any Ad and will drop any calls to track player state (Play, Pause, Buffer or Seek) in this state.",Ue="Media tracker is already tracking a state with the same state name.",Ke="Media tracker is not already tracking a state with the same state name.",We="Media tracker has reached maximum number of states per session (10).",Ze=new RegExp("^[a-zA-Z0-9_\\.]+$"),$e=function(){function e(a,i,r){if(t(this,e),!a)throw new Error("hitProcessor should be valid");if(!i)throw new Error("logger should be valid");this._hitProcessor=a,this._logger=i,this._config=M(r)?r:{},this._resetStates(),this._setupRules()}return i(e,[{key:"track",value:function(e){var t=e[_e.Name];return b(t)?J(e[_e.TimeStamp])?(M(e[_e.Params])||(e[_e.Params]={}),e[_e.Metadata]=this._cleanMetadata(e[_e.Metadata]),!!this._prerollDeferRule(t,e)||this._processRule(t,e)):(this._logger.log("#track - Event timestamp is missing in track event data. - "+t),!1):(this._logger.log("#track - Event name is missing in track event data"),!1)}},{key:"_resetStates",value:function(){this._media=null,this._hitGenerator=null,this._sessionRefTs=null,this._inPrerollInterval=!1,this._prerollRefTs=null,this._prerollQueuedRules=[],this._contentStarted=!1,this._contentStartRefTs=null,this._mediaIdle=!1,this._trackerIdle=!1,this._mediaIdleStartTs=0}},{key:"_createHitGenerator",value:function(e){return new Ie(this._logger,this._hitProcessor,this._config,this._media,e)}},{key:"_processRule",value:function(e,t){return this._ruleEngine.processRule(e,t).success}},{key:"_setupRules",value:function(){this._ruleEngine=new ye(this._logger),this._ruleEngine.setEnterAction(this._cmdEnterAction.bind(this)),this._ruleEngine.setExitAction(this._cmdExitAction.bind(this));var e=this._isInMedia.bind(this),t=this._isInAdBreak.bind(this),a=this._isInAd.bind(this),i=this._isInChapter.bind(this),r=this._isInTrackedState.bind(this),n=this._isValidMediaInfo.bind(this),s=this._isValidAdBreakInfo.bind(this),o=this._isValidAdInfo.bind(this),d=this._isValidChapterInfo.bind(this),c=this._isValidQoEInfo.bind(this),u=this._isValidStateInfo.bind(this),l=this._isValidErrorInfo.bind(this),h=this._isDifferentAdBreakInfo.bind(this),f=this._isDifferentAdInfo.bind(this),p=this._isDifferentChapterInfo.bind(this),m=this._allowPlayerStateChange.bind(this),_=this._allowStateTrack.bind(this),v=this._isInBuffering.bind(this),k=this._isInSeeking.bind(this),y=this._cmdMediaStart.bind(this),g=this._cmdMediaSkip.bind(this),S=this._cmdMediaComplete.bind(this),P=this._cmdError.bind(this),I=this._cmdPlay.bind(this),A=this._cmdPause.bind(this),b=this._cmdBufferStart.bind(this),E=this._cmdBufferComplete.bind(this),C=this._cmdSeekStart.bind(this),M=this._cmdSeekComplete.bind(this),w=this._cmdAdStart.bind(this),T=this._cmdAdComplete.bind(this),O=this._cmdAdSkip.bind(this),R=this._cmdAdBreakStart.bind(this),B=this._cmdAdBreakComplete.bind(this),z=this._cmdAdBreakSkip.bind(this),j=this._cmdChapterStart.bind(this),D=this._cmdChapterComplete.bind(this),V=this._cmdChapterSkip.bind(this),q=this._cmdStateStart.bind(this),x=this._cmdStateEnd.bind(this),N=this._cmdBitrateChange.bind(this),F=this._cmdQoEUpdate.bind(this),L=this._cmdPlayheadUpdate.bind(this),G=new ke(ve.SessionStart,"API:trackSessionStart");G.addPredicate(e,!1,Ce).addPredicate(n,!0,je).addAction(y),this._ruleEngine.addRule(G);var H=new ke(ve.SessionComplete,"API:trackComplete");H.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(S),this._ruleEngine.addRule(H);var Q=new ke(ve.SessionEnd,"API:trackSessionEnd");Q.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(g),this._ruleEngine.addRule(Q);var U=new ke(ve.Error,"API:trackError");U.addPredicate(e,!0,Ee).addPredicate(l,!0,Ne).addAction(P),this._ruleEngine.addRule(U);var K=new ke(ve.Play,"API:trackPlay");K.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addAction(M).addAction(E).addAction(I),this._ruleEngine.addRule(K);var W=new ke(ve.Pause,"API:trackPause");W.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!1,Me).addPredicate(k,!1,Te).addAction(A),this._ruleEngine.addRule(W);var Z=new ke(ve.BufferStart,"API:trackEvent(BufferStart)");Z.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!1,Me).addPredicate(k,!1,Te).addAction(b),this._ruleEngine.addRule(Z);var $=new ke(ve.BufferComplete,"API:trackEvent(BufferComplete)");$.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(v,!0,we).addAction(E),this._ruleEngine.addRule($);var J=new ke(ve.SeekStart,"API:trackEvent(SeekStart)");J.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(k,!1,Te).addPredicate(v,!1,Me).addAction(C),this._ruleEngine.addRule(J);var X=new ke(ve.SeekComplete,"API:trackEvent(SeekComplete)");X.addPredicate(e,!0,Ee).addPredicate(m,!0,Qe).addPredicate(k,!0,Oe).addAction(M),this._ruleEngine.addRule(X);var Y=new ke(ve.AdBreakStart,"API:trackEvent(AdBreakStart)");Y.addPredicate(e,!0,Ee).addPredicate(s,!0,De).addPredicate(h,!0,Ve).addAction(O).addAction(z).addAction(R),this._ruleEngine.addRule(Y);var ee=new ke(ve.AdBreakComplete,"API:trackEvent(AdBreakComplete)");ee.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addAction(O).addAction(B),this._ruleEngine.addRule(ee);var te=new ke(ve.AdStart,"API:trackEvent(AdStart)");te.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(o,!0,qe).addPredicate(f,!0,Fe).addAction(O).addAction(w),this._ruleEngine.addRule(te);var ae=new ke(ve.AdComplete,"API:trackEvent(AdComplete)");ae.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(a,!0,Be).addAction(T),this._ruleEngine.addRule(ae);var ie=new ke(ve.AdSkip,"API:trackEvent(AdSkip)");ie.addPredicate(e,!0,Ee).addPredicate(t,!0,Re).addPredicate(a,!0,Be).addAction(O),this._ruleEngine.addRule(ie);var re=new ke(ve.ChapterStart,"API::trackEvent(chapterStart)");re.addPredicate(e,!0,Ee).addPredicate(d,!0,Le).addPredicate(p,!0,Ge).addAction(V).addAction(j),this._ruleEngine.addRule(re);var ne=new ke(ve.ChapterComplete,"API::trackEvent(chapterComplete)");ne.addPredicate(e,!0,Ee).addPredicate(i,!0,ze).addAction(D),this._ruleEngine.addRule(ne);var se=new ke(ve.ChapterSkip,"API:trackEvent(chapterSkip)");se.addPredicate(e,!0,Ee).addPredicate(i,!0,ze).addAction(V),this._ruleEngine.addRule(se);var oe=new ke(ve.BitrateChange,"API:trackEvent(BitrateChange)");oe.addPredicate(e,!0,Ee).addAction(N),this._ruleEngine.addRule(oe);var de=new ke(ve.QoEUpdate,"API:trackEvent(QoEUpdate)");de.addPredicate(e,!0,Ee).addPredicate(c,!0,He).addAction(F),this._ruleEngine.addRule(de);var ce=new ke(ve.PlayheadUpdate,"API:trackEvent(PlayheadUpdate)");ce.addPredicate(e,!0,Ee).addAction(L),this._ruleEngine.addRule(ce);var ue=new ke(ve.StateStart,"API:trackEvent(StateStart)");ue.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!1,Ue).addPredicate(_,!0,We).addAction(q),this._ruleEngine.addRule(ue);var le=new ke(ve.StateEnd,"API:trackEvent(StateEnd)");le.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!0,Ke).addAction(x),this._ruleEngine.addRule(le)}},{key:"_isInMedia",value:function(){return!S(this._media)}},{key:"_isInAdBreak",value:function(){return this._media.isInAdBreak}},{key:"_isInAd",value:function(){return this._media.isInAd}},{key:"_isInChapter",value:function(){return this._media.isInChapter}},{key:"_isInBuffering",value:function(){return this._media.isInPlaybackState(ge.Buffer)}},{key:"_isInSeeking",value:function(){return this._media.isInPlaybackState(ge.Seek)}},{key:"_isInTrackedState",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.isCustomStateActive(t)}},{key:"_isValidMediaInfo",value:function(e){return null!=he.deserialize(e[_e.Params])}},{key:"_isValidAdBreakInfo",value:function(e){return null!=de.deserialize(e[_e.Params])}},{key:"_isValidAdInfo",value:function(e){return null!=oe.deserialize(e[_e.Params])}},{key:"_isValidStateInfo",value:function(e){return null!=le.deserialize(e[_e.Params])}},{key:"_isValidChapterInfo",value:function(e){return null!=ce.deserialize(e[_e.Params])}},{key:"_isValidQoEInfo",value:function(e){return null!=fe.deserialize(e[_e.Params])}},{key:"_isValidErrorInfo",value:function(e){var t=e[_e.Params];if(!M(t))return!1;var a=t[_e.ErrorId];return b(a)}},{key:"_isDifferentAdBreakInfo",value:function(e){return!de.deserialize(e[_e.Params]).equal(this._media.adBreakInfo)}},{key:"_isDifferentAdInfo",value:function(e){return!oe.deserialize(e[_e.Params]).equal(this._media.adInfo)}},{key:"_isDifferentChapterInfo",value:function(e){return!ce.deserialize(e[_e.Params]).equal(this._media.chapterInfo)}},{key:"_allowPlayerStateChange",value:function(){return!this._media.isInAdBreak||this._media.isInAd}},{key:"_allowStateTrack",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.hasTrackedCustomState(t)||this._media.numTrackedCustomStates()<10}},{key:"_cmdEnterAction",value:function(e,t){var a=this._getRefTs(t);return S(this._hitGenerator)||this._hitGenerator.setRefTS(a),!0}},{key:"_cmdExitAction",value:function(e,t){if(S(this._media))return!1;e.id===ve.AdStart&&(!this._media.isInPlaybackState(ge.Init)||this._media.isInPlaybackState(ge.Buffer)||this._media.isInPlaybackState(ge.Seek)||this._media.enterPlaybackState(ge.Play)),e.id!==ve.BufferComplete&&e.id!==ve.SeekComplete||this._media.isInPlaybackState(ge.Init)&&this._media.enterPlaybackState(ge.Pause),this._cmdIdleDetection(t),this._cmdSessionTimeoutDetection(t),this._cmdContentStartDetection(t);var a=e.id===ve.AdStart||e.id===ve.AdBreakComplete;return this._hitGenerator.processPlayback(a),!0}},{key:"_cmdMediaStart",value:function(e){var t=he.deserialize(e[_e.Params]),a=e[_e.Metadata],i=this._getRefTs(e);return this._media=new Se(t,a),this._hitGenerator=this._createHitGenerator(i),this._hitGenerator.processMediaStart(),this._sessionRefTs=i,this._inPrerollInterval=0!==t.prerollWaitTime,this._prerollRefTs=i,!0}},{key:"_cmdMediaComplete",value:function(){return this._hitGenerator.processMediaComplete(),this._resetStates(),!0}},{key:"_cmdMediaSkip",value:function(){return this._hitGenerator.processMediaSkip(),this._resetStates(),!0}},{key:"_cmdAdBreakStart",value:function(e){var t=de.deserialize(e[_e.Params]);return this._media.setAdBreakInfo(t),this._hitGenerator.processAdBreakStart(),!0}},{key:"_cmdAdBreakComplete",value:function(){return this._hitGenerator.processAdBreakComplete(),this._media.clearAdBreakInfo(),!0}},{key:"_cmdAdBreakSkip",value:function(){return this._media.isInAdBreak&&(this._hitGenerator.processAdBreakSkip(),this._media.clearAdBreakInfo()),!0}},{key:"_cmdAdStart",value:function(e){var t=oe.deserialize(e[_e.Params]),a=e[_e.Metadata];return this._media.setAdInfo(t,a),this._hitGenerator.processAdStart(),!0}},{key:"_cmdAdComplete",value:function(){return this._hitGenerator.processAdComplete(),this._media.clearAdInfo(),!0}},{key:"_cmdAdSkip",value:function(){return this._media.isInAd&&(this._hitGenerator.processAdSkip(),this._media.clearAdInfo()),!0}},{key:"_cmdChapterStart",value:function(e){var t=ce.deserialize(e[_e.Params]),a=e[_e.Metadata];return this._media.setChapterInfo(t,a),this._hitGenerator.processChapterStart(),!0}},{key:"_cmdChapterComplete",value:function(){return this._hitGenerator.processChapterComplete(),this._media.clearChapterInfo(),!0}},{key:"_cmdChapterSkip",value:function(){return this._media.isInChapter&&(this._hitGenerator.processChapterSkip(),this._media.clearChapterInfo()),!0}},{key:"_cmdError",value:function(e){var t=e[_e.Params][_e.ErrorId];return this._hitGenerator.processError(t),!0}},{key:"_cmdBitrateChange",value:function(){return this._hitGenerator.processBitrateChange(),!0}},{key:"_cmdPlay",value:function(){return this._media.enterPlaybackState(ge.Play),!0}},{key:"_cmdPause",value:function(){return this._media.enterPlaybackState(ge.Pause),!0}},{key:"_cmdBufferStart",value:function(){return this._media.enterPlaybackState(ge.Buffer),!0}},{key:"_cmdBufferComplete",value:function(){return this._media.isInPlaybackState(ge.Buffer)&&this._media.exitPlaybackState(ge.Buffer),!0}},{key:"_cmdSeekStart",value:function(){return this._media.enterPlaybackState(ge.Seek),!0}},{key:"_cmdSeekComplete",value:function(){return this._media.isInPlaybackState(ge.Seek)&&this._media.exitPlaybackState(ge.Seek),!0}},{key:"_cmdQoEUpdate",value:function(e){var t=fe.deserialize(e[_e.Params]);return this._media.qoeInfo=t,!0}},{key:"_cmdPlayheadUpdate",value:function(e){var t=e[_e.Params];if(M(t)){var a=t[_e.Playhead];$(a)&&a>=0&&(this._media.playhead=a)}return!0}},{key:"_cmdIdleDetection",value:function(e){var t=this._getRefTs(e);this._media.isIdle()?this._mediaIdle?!this._trackerIdle&&t-this._mediaIdleStartTs>=18e5&&(this._hitGenerator.processSessionAbort(),this._trackerIdle=!0):(this._mediaIdle=!0,this._mediaIdleStartTs=t):(this._trackerIdle&&(this._hitGenerator.processSessionRestart(),this._trackerIdle=!1,this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null),this._mediaIdle=!1)}},{key:"_cmdSessionTimeoutDetection",value:function(e){var t=this._getRefTs(e);!this._trackerIdle&&t-this._sessionRefTs>=864e5&&(this._hitGenerator.processSessionAbort(),this._hitGenerator.processSessionRestart(),this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null)}},{key:"_cmdContentStartDetection",value:function(e){return!(!this._media.isIdle()&&!this._contentStarted)||(this._media.isInAdBreak?(this._contentStartRefTs=null,!0):(null==this._contentStartRefTs&&(this._contentStartRefTs=this._getRefTs(e)),this._getRefTs(e)-this._contentStartRefTs>=1e3&&(this._hitGenerator.processPlayback(!0),this._contentStarted=!0),!0))}},{key:"_cmdStateStart",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.startCustomState(t),this._hitGenerator.processCustomStateStart(t),!0}},{key:"_cmdStateEnd",value:function(e){var t=le.deserialize(e[_e.Params]);return this._media.endCustomState(t),this._hitGenerator.processCustomStateEnd(t),!0}},{key:"_getRefTs",value:function(e){var t=e[_e.TimeStamp];return J(t)?t:null}},{key:"_prerollDeferRule",value:function(e,t){if(this._inPrerollInterval&&null!=this._media){var a=this._media.mediaInfo.prerollWaitTime;if(this._prerollQueuedRules.push({eventName:e,context:t}),this._getRefTs(t)-this._prerollRefTs>=a||e===ve.AdBreakStart||e===ve.MediaComplete||e===ve.MediaSkip){for(var i=this._prerollReorderRules(this._prerollQueuedRules),r=0;r3&&void 0!==arguments[3]&&arguments[3];if(this._tracker){var s=E(),o=(r(i={},_e.Name,e),r(i,_e.Params,t),r(i,_e.Metadata,a),r(i,_e.TimeStamp,s),r(i,_e.InternalEvent,n),i),d=this._tracker.track(o);this._lastEventTS=s,e===ve.PlayheadUpdate&&(this._lastPlayheadParams=t),e===ve.SessionStart&&d?this._startTimer():e!==ve.SessionComplete&&e!==ve.SessionEnd||this._stopTimer()}else this._logger.warn("Dropping the call as the tracker instance is already destroyed")}},{key:"_startTimer",value:function(){var e=this;this._timer||(this._timer=w((function(){e._onTick()}),500))}},{key:"_stopTimer",value:function(){var e;this._timer&&(e=this._timer,clearInterval(e),this._timer=null)}},{key:"_onTick",value:function(){E()-this._lastEventTS>750&&this._trackInternal(ve.PlayheadUpdate,this._lastPlayheadParams,null,!0)}}]),e}(),Xe=new se,Ye=l();var et={configure:function(e){Xe.configure(e)},getInstance:function(e){var t="tracker"+Ye.getUniqueId();return new Je(Xe,t,e)},createMediaObject:function(e,t,a,i,r){var n=null;try{n=new he({id:t,name:e,streamType:i,mediaType:r,length:a}).serialize()}catch(e){pe.error("Error creating MediaObject ("+e.message+")")}return n},createAdBreakObject:function(e,t,a){var i=null;try{i=new de({name:e,position:t,startTime:a}).serialize()}catch(e){pe.error("Error creating AdBreakObject ("+e.message+")")}return i},createAdObject:function(e,t,a,i){var r=null;try{r=new oe({id:t,name:e,position:a,length:i}).serialize()}catch(e){pe.error("Error creating AdObject ("+e.message+")")}return r},createChapterObject:function(e,t,a,i){var r=null;try{r=new ce({name:e,position:t,length:a,startTime:i}).serialize()}catch(e){pe.error("Error creating ChapterObject ("+e.message+")")}return r},createQoEObject:function(e,t,a,i){var r=null;try{r=new fe({bitrate:e,droppedFrames:i,fps:a,startupTime:t}).serialize()}catch(e){pe.error("Error creating QoEObject ("+e.message+")")}return r},createStateObject:function(e){var t=null;try{t=new le({name:e}).serialize()}catch(e){pe.error("Error creating StateObject ("+e.message+")")}return t},version:"js-3.0.2",Event:h,MediaType:p,PlayerState:m,StreamType:y,MediaObjectKey:f,VideoMetadataKeys:_,AudioMetadataKeys:v,AdMetadataKeys:k};var tt="ecid",at="analytics",it="mediaanalytics",rt=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(s,e);var a,n=(a=s,function(){var e,t=o(a);if(c()){var i=o(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return u(this,e)});function s(e,a){var i;if(t(this,s),i=n.call(this),!e)throw new Error("Valid appmeasurement instance is required");if(!e.visitor)throw new Error("Valid visitor instance is required");return i._mediaConfig=a,i._appMeasurement=e,i._appMeasurementReady=!1,i._privacyResolved=!1,i._logger=B("WebECResolver"),i._fetchECParams(),i._fetchPrivacyStatus(),i._setupResolver(),i}return i(s,[{key:"resolveKeys",value:function(e){if(!e||0===e.length)return{};for(var t={},a=0;a0};function E(){return(new Date).getTime()}function M(e,t){if(window.console){var a;switch(e){case I.Log:a=window.console.log;break;case I.Info:a=window.console.info;break;case I.Warn:a=window.console.warn;break;case I.Error:a=window.console.error}if(a)a("MediaSDK: ["+function(){var e=new Date,t=function(e){return e<10?"00"+e:e<100?"0"+e:""+e}(e.getMilliseconds());return e.toTimeString()+"."+t}()+"] "+t)}}var w=function(t){return!P(t)&&!Array.isArray(t)&&"object"===e(t)};function T(e,t){return setInterval(e,t)}var O=!1;function R(e){var t=e.debugLogging;A(t)&&(O=t)}function B(e,t,a){(O||e===I.Error)&&M(e,t+" "+a)}function z(e){var t=C(e)?"["+e+"]":"";return{log:function(e){!function(e,t){B(I.Log,e,t)}(t,e)},info:function(e){!function(e,t){B(I.Info,e,t)}(t,e)},warn:function(e){!function(e,t){B(I.Warn,e,t)}(t,e)},error:function(e){!function(e,t){B(I.Error,e,t)}(t,e)}}}var j=Object.freeze({AnalyticsTrackingServer:"analyticstrackingserver",AnalyticsSsl:"analyticsssl",Rsid:"rsid",Vid:"vid",Aid:"aid",Mcid:"mid",McOrgId:"orgid",AamLocHint:"aamlochint",CustomerIds:"customerids",MediaTrackingServer:"mediatrackingserver",MediaChannel:"mediachannel",MediaPlayerName:"mediaplayername",MediaAppVersion:"mediaappversion",MediaSsl:"mediassl"}),D=Object.freeze({Get:"GET",Post:"POST"}),V=Object.freeze({SessionStart:"sessionStart",SessionComplete:"sessionComplete",SessionEnd:"sessionEnd",AdBreakStart:"adBreakStart",AdBreakComplete:"adBreakComplete",AdStart:"adStart",AdComplete:"adComplete",AdSkip:"adSkip",ChapterStart:"chapterStart",ChapterComplete:"chapterComplete",ChapterSkip:"chapterSkip",Play:"play",Ping:"ping",BufferStart:"bufferStart",PauseStart:"pauseStart",BitrateChange:"bitrateChange",Error:"error",StateStart:"stateStart",StateEnd:"stateEnd"}),N=Object.freeze({Show:"media.show",Season:"media.season",Episode:"media.episode",AssetId:"media.assetId",Genre:"media.genre",FirstAirDate:"media.firstAirDate",FirstDigitalDate:"media.firstDigitalDate",Rating:"media.rating",Originator:"media.originator",Network:"media.network",ShowType:"media.showType",AdLoad:"media.adLoad",MVPD:"media.pass.mvpd",Auth:"media.pass.auth",DayPart:"media.dayPart",Feed:"media.feed",StreamFormat:"media.streamFormat",Artist:"media.artist",Album:"media.album",Label:"media.label",Author:"media.author",Station:"media.station",Publisher:"media.publisher"}),q=Object.freeze({Advertiser:"media.ad.advertiser",CampaignId:"media.ad.campaignId",CreativeId:"media.ad.creativeId",SiteId:"media.ad.siteId",CreativeUrl:"media.ad.creativeURL",PlacementId:"media.ad.placementId"}),x=Object.freeze({Id:"media.id",Name:"media.name",Length:"media.length",ContentType:"media.contentType",StreamType:"media.streamType",PlayerName:"media.playerName",Resume:"media.resume",Channel:"media.channel",Publisher:"media.publisher",SdkVersion:"media.sdkVersion"}),F=Object.freeze({AppInstallationId:"appInstallationId",AnalyticsTrackingServer:"analytics.trackingServer",AnalyticsRsid:"analytics.reportSuite",AnalyticsSsl:"analytics.enableSSL",AnalyticsVisitorId:"analytics.visitorId",AnalyticsAid:"analytics.aid",VisitorMcOrgId:"visitor.marketingCloudOrgId",VisitorMcuserId:"visitor.marketingCloudUserId",VisitorAamLocHint:"visitor.aamLocationHint",VisitorCustomerIds:"visitor.customerIDs",VisitorCustomerKeyId:"id",VisitorCustomerKeyAuthState:"authState",MediaVersion:"media.libraryVersion"}),L=Object.freeze({Channel:"media.channel",PlayerName:"media.playerName"}),G=Object.freeze({PodFriendlyName:"media.ad.podFriendlyName",PodIndex:"media.ad.podIndex",PodSecond:"media.ad.podSecond"}),H=Object.freeze({Name:"media.ad.name",Id:"media.ad.id",Length:"media.ad.length",PodPosition:"media.ad.podPosition",PlayerName:"media.ad.playerName"}),Q=Object.freeze({FriendlyName:"media.chapter.friendlyName",Length:"media.chapter.length",Offset:"media.chapter.offset",Index:"media.chapter.index"}),U=Object.freeze({StateName:"media.state.name"}),K=Object.freeze({Bitrate:"media.qoe.bitrate",DroppedFrames:"media.qoe.droppedFrames",Fps:"media.qoe.framesPerSecond",StartupTime:"media.qoe.timeToStart",ErrorId:"media.qoe.errorID",ErrorSource:"media.qoe.errorSource",ErrorSourcePlayer:"player",ErrorSourceExternal:"external"}),W=Object.freeze({EventType:"eventType",Params:"params",QoE:"qoeData",CustomMetadata:"customMetadata",PlayerTime:"playerTime"}),Z=Object.freeze({Playhead:"playhead",Ts:"ts"}),$=function(e){return 0===Object.keys(e).length},J=function(e){return"number"==typeof e&&!isNaN(e)},X=function(e){var t=parseInt(e,10);return J(t)&&e===t},Y=function(e){return"function"==typeof e},ee=function(e,t){if(!Y(e))return t;try{return e()}catch(e){return t}};function te(e){var t={};return w(e)&&Object.keys(e).forEach((function(a){var i=e[a],r=i.id,n=i.authState,s=void 0===n?0:n;C(r)&&(t[a]={id:r,authState:s})})),t}function ae(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r({},W.EventType,e.eventType);i[W.PlayerTime]=(r(t={},Z.Playhead,e.playhead),r(t,Z.Ts,e.ts),t),$(e.customMetadata)||(i[W.CustomMetadata]=e.customMetadata),$(e.qoeData)||(i[W.QoE]=e.qoeData);var n=s({},e.params);if(e.eventType===V.SessionStart){C(a[j.AnalyticsTrackingServer])&&(n[F.AnalyticsTrackingServer]=a[j.AnalyticsTrackingServer]),C(a[j.Rsid])&&(n[F.AnalyticsRsid]=a[j.Rsid]),A(a[j.AnalyticsSsl])&&(n[F.AnalyticsSsl]=a[j.AnalyticsSsl]),C(a[j.Vid])&&(n[F.AnalyticsVisitorId]=a[j.Vid]),C(a[j.Aid])&&(n[F.AnalyticsAid]=a[j.Aid]),C(a[j.McOrgId])&&(n[F.VisitorMcOrgId]=a[j.McOrgId]),C(a[j.Mcid])&&(n[F.VisitorMcuserId]=a[j.Mcid]),X(a[j.AamLocHint])&&(n[F.VisitorAamLocHint]=a[j.AamLocHint]);var o=te(a[j.CustomerIds]);if(w(o)&&!$(o)&&(n[F.VisitorCustomerIds]=o),!C(n[x.Channel])){var d=a[j.MediaChannel];n[x.Channel]=C(d)?d:"unknown"}if(!C(n[x.PlayerName])){var c=a[j.MediaPlayerName];n[x.PlayerName]=C(c)?c:"unknown"}C(a[j.MediaAppVersion])&&(n[x.SdkVersion]=a[j.MediaAppVersion]),n[F.MediaVersion]="js-3.1.0"}else if(e.eventType===V.AdStart){var u=a[j.MediaPlayerName];n[H.PlayerName]=C(u)?u:"unknown"}$(n)||(i[W.Params]=n);var l=ee((function(){return JSON.stringify(i)}),"");return l}function ie(e){try{var t=e.split("/");return t[4]?t[4]:""}catch(e){return""}}var re=[j.AnalyticsTrackingServer,j.AnalyticsSsl,j.Rsid,j.Vid,j.Aid,j.Mcid,j.McOrgId,j.AamLocHint,j.CustomerIds,j.MediaChannel,j.MediaAppVersion,j.MediaPlayerName,j.MediaTrackingServer,j.MediaSsl],ne={"Content-Type":"application/json"},se=function(){function e(a){t(this,e),this._logger=z("MediaSession("+a+")"),this._hits=[],this._ecParams=null,this._sessionId=null,this._creatingMCSession=!1,this._createSessionFailureCount=0,this._internalError=!1,this._doneQueuing=!1}return i(e,[{key:"queue",value:function(e){this._internalError||this._doneQueuing||this._hits.push(e)}},{key:"process",value:function(e){this._internalError||0!==this._hits.length&&e.isReady()&&(this._ecParams||(this._ecParams=e.resolveKeys(re)),P(this._sessionId)?this._startMCSession():this._flushPendingHits())}},{key:"end",value:function(){this._logger.log("end"),this._doneQueuing=!0}},{key:"abort",value:function(){this._logger.log("abort"),this._doneQueuing=!0,this._hits=[]}},{key:"doneProcessing",value:function(){return this._internalError||this._doneQueuing&&0===this._hits.length}},{key:"_startMCSession",value:function(){var e=this;if(!this._creatingMCSession){var t=this._hits[0];if(t.eventType!==V.SessionStart)return this._logger.log("Dropping hit("+t.eventType+") as we expected sessionStart"),void this._hits.shift();var a,i=((a=this._ecParams)[j.MediaSsl]?"https":"http")+"://"+a[j.MediaTrackingServer]+"/api/v1/sessions",r=ae(t,this._ecParams);this._creatingMCSession=!0,this._sendRequest(i,D.Post,ne,r,(function(t,a){var i,r=!1;do{if(201!==t)break;var n=a.location;if(!C(n))break;if(!(i=ie(n)))break;r=!0}while(0);r?(e._logger.log("Media collection session created with session id : "+i),e._sessionId=i,e._hits.shift()):(e._logger.log("Creating Media collection session failed"),e._createSessionFailureCount+=1,e._createSessionFailureCount>=3&&(e._logger.log("Internal error: Creating Media collection session failed 3 times"),e._internalError=!0)),e._creatingMCSession=!1}))}}},{key:"_flushPendingHits",value:function(){var e=this;this._hits.splice(0,3).forEach((function(t){var a,i,r=(a=e._ecParams,i=e._sessionId,(a[j.MediaSsl]?"https":"http")+"://"+a[j.MediaTrackingServer]+"/api/v1/sessions/"+i+"/events"),n=ae(t,e._ecParams);e._sendRequest(r,D.Post,ne,n,(function(){}))}))}},{key:"_sendRequest",value:function(e,t,a,i,r){!function(e,t,a,i,r){if(void 0!==window.XMLHttpRequest){var n=new window.XMLHttpRequest;if("withCredentials"in n){var s=n;return s.open(t,e,!0),w(a)&&Object.keys(a).forEach((function(e){s.setRequestHeader(e,a[e])})),s.timeout=5e3,s.onload=function(){var e=s.status&&parseInt(s.status,10),t=s.responseText,a=function(e){var t={};try{e.trim().split(/[\r\n]+/).forEach((function(e){var a=e.split(":",1)[0],i=e.substring(a.length+2);a.length>0&&(t[a.toLowerCase()]=i)}))}catch(e){}return t}(s.getAllResponseHeaders());r(e,a,t)},s.onerror=function(){r(0)},void s.send(i)}r(0)}}(e,t,a,i,r)}}]),e}(),oe=function(){function e(){t(this,e),this._logger=z("MediaProcessor"),this._isConfigured=!1,this._privacyStatus=S.OptUnknown,this._sessionIdGenerator=l(),this._sessionMap={}}return i(e,[{key:"configure",value:function(e){var t=this;this._isConfigured||(this._ecResolver=e,this._privacyStatus=this._ecResolver.getPrivacyStatus(),this._ecResolver.notifyPrivacyChange(this._onPrivacyChange.bind(this)),this._isConfigured=!0,this._processSessionTimer=T((function(){t._tick()}),500),this._logger.log("Configured with resolver"))}},{key:"startSession",value:function(){if(this._privacyStatus===S.OptOut)return this._logger.log("Privacy is opted out. Not starting a session"),-1;var t=this._sessionIdGenerator.getUniqueId();return this._sessionMap[t]=e._createMediaSession(t),t}},{key:"processHit",value:function(e,t){if(-1!==e){var a=this._sessionMap[e];P(a)||(this._logger.log("Process hit for session("+e+") => "+t),a.queue(t))}}},{key:"endSession",value:function(e){if(-1!==e){var t=this._sessionMap[e];P(t)||t.end()}}},{key:"_tick",value:function(){var e=this;Object.keys(this._sessionMap).forEach((function(t){var a=e._sessionMap[t];a.process(e._ecResolver),a.doneProcessing()&&(e._logger.log("Removing session "+t+" from store as it has finished processing"),delete e._sessionMap[t])}))}},{key:"_onPrivacyChange",value:function(e){var t=this;this._logger.log("Privacy switched to "+e),this._privacyStatus=e,e===S.OptOut&&(this._logger.log("Aborting all active sessions"),Object.keys(this._sessionMap).forEach((function(e){t._sessionMap[e].abort()})))}}],[{key:"_createMediaSession",value:function(e){return new se(e)}}]),e}(),de=function(){function e(a){var i=a.id,r=a.name,n=a.position,s=a.length;if(t(this,e),!C(i))throw new TypeError("id is not a valid string");if(!C(r))throw new TypeError("name is not a valid string");if(!X(n)||n<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(s)||s<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.position=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.position===t.position&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"ad.id",this.id),r(e,"ad.name",this.name),r(e,"ad.position",this.position),r(e,"ad.length",this.length),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({id:t["ad.id"],name:t["ad.name"],position:t["ad.position"],length:t["ad.length"]})}),null):null}}]),e}(),ce=function(){function e(a){var i=a.name,r=a.position,n=a.startTime;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!X(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(n)||n<0)throw new TypeError("startTime cannot be less than zero");this.name=i,this.position=r,this.startTime=n}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime)}},{key:"serialize",value:function(){var e;return r(e={},"adbreak.name",this.name),r(e,"adbreak.position",this.position),r(e,"adbreak.starttime",this.startTime),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["adbreak.name"],position:t["adbreak.position"],startTime:t["adbreak.starttime"]})}),null):null}}]),e}(),ue=function(){function e(a){var i=a.name,r=a.position,n=a.startTime,s=a.length;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!X(r)||r<1)throw new TypeError("position should be a valid integer greater than zero");if(!J(n)||n<0)throw new TypeError("startTime cannot be less than zero");if(!J(s)||s<0)throw new TypeError("length cannot be less than zero");this.name=i,this.position=r,this.startTime=n,this.length=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.name===t.name&&this.position===t.position&&this.startTime===t.startTime&&this.length===t.length)}},{key:"serialize",value:function(){var e;return r(e={},"chapter.name",this.name),r(e,"chapter.position",this.position),r(e,"chapter.starttime",this.startTime),r(e,"chapter.length",this.length),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["chapter.name"],position:t["chapter.position"],startTime:t["chapter.starttime"],length:t["chapter.length"]})}),null):null}}]),e}(),le=new RegExp("^[a-zA-Z0-9_\\.]{1,64}$"),he=function(){function e(a){var i=a.name;if(t(this,e),!C(i))throw new TypeError("name is not a valid string");if(!le.test(i))throw new TypeError("name should match '^[a-zA-Z0-9_\\.]{1,64}$' pattern");this.name=i}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&this.name===t.name}},{key:"serialize",value:function(){return r({},"customstate.name",this.name)}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({name:t["customstate.name"]})}),null):null}}]),e}(),fe=function(){function e(a){var i=a.id,r=a.name,n=a.streamType,s=a.mediaType,o=a.length,d=a.resumed,c=a.prerollWaitTime,u=a.granularAdTracking;if(t(this,e),!C(i))throw new TypeError("id is not a valid string");if(!C(r))throw new TypeError("name is not a valid string");if(!C(n))throw new TypeError("streamType is not a valid string");if(!J(o)||o<0)throw new TypeError("length cannot be less than zero");this.id=i,this.name=r,this.streamType=n,this.mediaType=s!==p.Audio?p.Video:s,this.length=o,this.resumed=!!A(d)&&d,this.prerollWaitTime=!X(c)||c<0?250:c,this.granularAdTracking=!!A(u)&&u}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.id===t.id&&this.name===t.name&&this.streamType===t.streamType&&this.mediaType===t.mediaType&&this.length===t.length&&this.resumed===t.resumed&&this.prerollWaitTime===t.prerollWaitTime&&this.granularAdTracking===t.granularAdTracking)}},{key:"serialize",value:function(){var e;return r(e={},"media.id",this.id),r(e,"media.name",this.name),r(e,"media.streamtype",this.streamType),r(e,"media.type",this.mediaType),r(e,"media.length",this.length),r(e,"media.resumed",this.resumed),r(e,"media.prerollwaittime",this.prerollWaitTime),r(e,"media.granularadtracking",this.granularAdTracking),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({id:t["media.id"],name:t["media.name"],streamType:t["media.streamtype"],mediaType:t["media.type"],length:t["media.length"],resumed:t["media.resumed"],prerollWaitTime:t["media.prerollwaittime"],granularAdTracking:t["media.granularadtracking"]})}),null):null}}]),e}(),pe=function(){function e(a){var i=a.bitrate,r=a.droppedFrames,n=a.fps,s=a.startupTime;if(t(this,e),!J(i)||i<0)throw new TypeError("bitrate must not be less than zero");if(!J(r)||r<0)throw new TypeError("dropped frames must not be less than zero");if(!J(n)||n<0)throw new TypeError("fps must not be less than zero");if(!J(s)||s<0)throw new TypeError("startupTime must not be less than zero");this.bitrate=i,this.droppedFrames=r,this.fps=n,this.startupTime=s}return i(e,[{key:"equal",value:function(t){return!P(t)&&t instanceof e&&(this.bitrate===t.bitrate&&this.droppedFrames===t.droppedFrames&&this.fps===t.fps&&this.startupTime===t.startupTime)}},{key:"serialize",value:function(){var e;return r(e={},"qoe.bitrate",this.bitrate),r(e,"qoe.droppedframes",this.droppedFrames),r(e,"qoe.fps",this.fps),r(e,"qoe.startuptime",this.startupTime),e}}],[{key:"deserialize",value:function(t){return w(t)?ee((function(){return new e({bitrate:t["qoe.bitrate"],droppedFrames:t["qoe.droppedframes"],fps:t["qoe.fps"],startupTime:t["qoe.startuptime"]})}),null):null}}]),e}(),me=z("Media");var _e=function(e){try{return JSON.stringify(e,null,4)}catch(e){return"[Error formatting object]"}},ve=Object.freeze({Name:"event.name",Params:"event.params",Metadata:"event.metadata",TimeStamp:"event.ts",InternalEvent:"event.internal",Playhead:"event.playhead",ErrorId:"error.id"}),ke=Object.freeze(s({SessionStart:"sessionStart",SessionEnd:"sessionEnd",SessionComplete:"sessionComplete",Play:"play",Pause:"pause",Error:"error",QoEUpdate:"qoeUpdate",PlayheadUpdate:"playheadUpdate"},h)),ye=function(){function e(a,i){if(t(this,e),P(a))throw new Error("id is not valid");this.id=a,this.description=i,this.predicates=[],this.actions=[]}return i(e,[{key:"addPredicate",value:function(e,t,a){if(!Y(e))throw new Error("predicate is not a function");return this.predicates.push({predicate:e,val:t,message:a}),this}},{key:"addAction",value:function(e){if(!Y(e))throw new Error("action is not a function");return this.actions.push(e),this}},{key:"runPredicates",value:function(e){for(var t=0;t=this._interval&&(this._generateHit(V.Ping),this._previousStateTs=this._refTs)}}},{key:"_processMediaStart",value:function(t){var a={};a=e._extractMediaParams(this._media),t&&(a[x.Resume]=!0);var i=this._config[L.Channel];C(i)&&(a[L.Channel]=i);var r=this._config[L.PlayerName];C(r)&&(a[L.PlayerName]=r);var n=e._extractMediaMetadata(this._media);this._generateHit(V.SessionStart,a,n)}},{key:"_generateHit",value:function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=r;if(P(n)){var s=this._media.qoeInfo,o=!(P(s)||!P(this._lastQoeInfo)&&this._lastQoeInfo.equal(s));o&&(n=e._extractQoeData(this._media),this._lastQoeInfo=s)}if(this._isTracking){var d=this._media.playhead,c=this._refTs,u=new Ie({eventType:t,params:a,customMetadata:i,qoeData:n,playhead:d,ts:c});this._hitProcessor.processHit(this._sessionId,u)}else this._logger.log("#_generateHit - Dropping hit as we have internally stopped tracking the session")}},{key:"_getPlaybackState",value:function(){return this._media.isInPlaybackState(Se.Buffer)?Se.Buffer:this._media.isInPlaybackState(Se.Seek)?Se.Seek:this._media.isInPlaybackState(Se.Play)?Se.Play:this._media.isInPlaybackState(Se.Pause)?Se.Pause:this._media.isInPlaybackState(Se.Stall)?Se.Stall:Se.Init}},{key:"_startSession",value:function(){this._sessionId=this._hitProcessor.startSession(),this._isTracking=!0,this._logger.log("Start internal session("+this._sessionId+")")}},{key:"_endSession",value:function(){this._hitProcessor.endSession(this._sessionId),this._isTracking=!1,this._logger.log("End internal session("+this._sessionId+")")}}],[{key:"_isGranularAdTrackingEnabled",value:function(e){var t=e.mediaInfo;return!P(t)&&t.granularAdTracking}},{key:"_extractMediaParams",value:function(t){var a={},i=t.mediaInfo;P(i)||(a[x.Id]=i.id,a[x.Name]=i.name,a[x.Length]=i.length,a[x.ContentType]=i.streamType,a[x.StreamType]=i.mediaType,a[x.Resume]=i.resumed);var r=t.mediaMetadata;return w(r)&&Object.keys(r).forEach((function(t){if(e._standardMediaMetadataMap.has(t)){var i=e._standardMediaMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractMediaMetadata",value:function(t){var a={},i=t.mediaMetadata;return w(i)&&Object.keys(i).forEach((function(t){e._standardMediaMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractAdBreakParams",value:function(e){var t={},a=e.adBreakInfo;return P(a)||(t[G.PodFriendlyName]=a.name,t[G.PodIndex]=a.position,t[G.PodSecond]=a.startTime),t}},{key:"_extractAdParams",value:function(t){var a={},i=t.adInfo;P(i)||(a[H.Name]=i.name,a[H.Id]=i.id,a[H.Length]=i.length,a[H.PodPosition]=i.position);var r=t.adMetadata;return w(r)&&Object.keys(r).forEach((function(t){if(e._standardAdMetadataMap.has(t)){var i=e._standardAdMetadataMap.get(t);a[i]=r[t]}})),a}},{key:"_extractAdMetadata",value:function(t){var a={},i=t.adMetadata;return w(i)&&Object.keys(i).forEach((function(t){e._standardAdMetadataMap.has(t)||(a[t]=i[t])})),a}},{key:"_extractChapterParams",value:function(e){var t={},a=e.chapterInfo;return P(a)||(t[Q.FriendlyName]=a.name,t[Q.Index]=a.position,t[Q.Length]=a.length,t[Q.Offset]=a.startTime),t}},{key:"_extractChapterMetadata",value:function(e){var t={},a=e.chapterMetadata;return w(a)&&Object.keys(a).forEach((function(e){t[e]=a[e]})),t}},{key:"_extractQoeData",value:function(e){var t={},a=e.qoeInfo;return w(a)&&(t[K.Bitrate]=parseInt(a.bitrate,10),t[K.Fps]=parseInt(a.fps,10),t[K.DroppedFrames]=parseInt(a.droppedFrames,10),t[K.StartupTime]=parseInt(a.startupTime,10)),t}},{key:"_playbackStateToMediaCollectionEvent",value:function(e){switch(e){case Se.Buffer:return V.BufferStart;case Se.Seek:return V.PauseStart;case Se.Play:return V.Play;case Se.Pause:return V.PauseStart;case Se.Stall:return V.Play;case Se.Init:return V.Ping;default:return""}}}]),e}(),be=new Map;be.set(_.Show,N.Show),be.set(_.Season,N.Season),be.set(_.Episode,N.Episode),be.set(_.AssetId,N.AssetId),be.set(_.Genre,N.Genre),be.set(_.FirstAirDate,N.FirstAirDate),be.set(_.FirstDigitalDate,N.FirstDigitalDate),be.set(_.Rating,N.Rating),be.set(_.Originator,N.Originator),be.set(_.Network,N.Network),be.set(_.ShowType,N.ShowType),be.set(_.AdLoad,N.AdLoad),be.set(_.MVPD,N.MVPD),be.set(_.Authorized,N.Auth),be.set(_.DayPart,N.DayPart),be.set(_.Feed,N.Feed),be.set(_.StreamFormat,N.StreamFormat),be.set(v.Artist,N.Artist),be.set(v.Album,N.Album),be.set(v.Label,N.Label),be.set(v.Author,N.Author),be.set(v.Station,N.Station),be.set(v.Publisher,N.Publisher),Ae._standardMediaMetadataMap=be;var Ce=new Map;Ce.set(k.Advertiser,q.Advertiser),Ce.set(k.CampaignId,q.CampaignId),Ce.set(k.CreativeId,q.CreativeId),Ce.set(k.PlacementId,q.PlacementId),Ce.set(k.SiteId,q.SiteId),Ce.set(k.CreativeUrl,q.CreativeUrl),Ae._standardAdMetadataMap=Ce;var Ee="Media tracker is not in active tracking session, call 'API:trackSessionStart' to begin a new tracking session.",Me="Media tracker is in active tracking session, call 'API:trackSessionEnd' or 'API:trackComplete' to end current tracking session.",we="Media tracker is tracking buffer events, call 'API:trackEvent(BufferComplete)' first to stop tracking buffer events.",Te="Media tracker is not tracking buffer events, call 'API:trackEvent(BufferStart)' before 'API:trackEvent(BufferComplete)'.",Oe="Media tracker is tracking seek events, call 'API:trackEvent(SeekComplete)' first to stop tracking seek events.",Re="Media tracker is not tracking seek events, call 'API:trackEvent(SeekStart)' before 'API:trackEvent(SeekComplete)'.",Be="Media tracker is not tracking any AdBreak, call 'API:trackEvent(AdBreakStart)' to begin tracking AdBreak",ze="Media tracker is not tracking any Ad, call 'API:trackEvent(AdStart)' to begin tracking Ad",je="Media tracker is not tracking any Chapter, call 'API:trackEvent(ChapterStart)' to begin tracking Chapter",De="MediaInfo passed into 'API:trackSessionStart' is invalid.",Ve="AdBreakInfo passed into 'API:trackEvent(AdBreakStart)' is invalid.",Ne="Media tracker is currently tracking the AdBreak passed into 'API:trackEvent(AdBreakStart)'.",qe="AdInfo passed into 'API:trackEvent(AdStart)' is invalid.",xe="StateInfo passed into 'API:trackEvent(StateStart|StateEnd)' is invalid.",Fe="ErrorId passed into 'API:trackError()' is invalid.",Le="Media tracker is currently tracking the Ad passed into 'API:trackEvent(AdStart)'.",Ge="ChapterInfo passed into 'API:trackEvent(ChapterStart)' is invalid.",He="Media tracker is currently tracking the Chapter passed into 'API:trackEvent(ChapterStart)'.",Qe="QoEInfo passed into 'API:updateQoEInfo' is invalid.",Ue="Media tracker is tracking an AdBreak but not tracking any Ad and will drop any calls to track player state (Play, Pause, Buffer or Seek) in this state.",Ke="Media tracker is already tracking a state with the same state name.",We="Media tracker is not already tracking a state with the same state name.",Ze="Media tracker has reached maximum number of states per session (10).",$e=new RegExp("^[a-zA-Z0-9_\\.]+$"),Je=function(){function e(a,i,r){if(t(this,e),!a)throw new Error("hitProcessor should be valid");if(!i)throw new Error("logger should be valid");this._hitProcessor=a,this._logger=i,this._config=w(r)?r:{},this._resetStates(),this._setupRules()}return i(e,[{key:"track",value:function(e){var t=e[ve.Name];return C(t)?X(e[ve.TimeStamp])?(w(e[ve.Params])||(e[ve.Params]={}),e[ve.Metadata]=this._cleanMetadata(e[ve.Metadata]),!!this._prerollDeferRule(t,e)||this._processRule(t,e)):(this._logger.log("#track - Event timestamp is missing in track event data. - "+t),!1):(this._logger.log("#track - Event name is missing in track event data"),!1)}},{key:"_resetStates",value:function(){this._media=null,this._hitGenerator=null,this._sessionRefTs=null,this._inPrerollInterval=!1,this._prerollRefTs=null,this._prerollQueuedRules=[],this._contentStarted=!1,this._contentStartRefTs=null,this._mediaIdle=!1,this._trackerIdle=!1,this._mediaIdleStartTs=0}},{key:"_createHitGenerator",value:function(e){return new Ae(this._logger,this._hitProcessor,this._config,this._media,e)}},{key:"_processRule",value:function(e,t){return this._ruleEngine.processRule(e,t).success}},{key:"_setupRules",value:function(){this._ruleEngine=new ge(this._logger),this._ruleEngine.setEnterAction(this._cmdEnterAction.bind(this)),this._ruleEngine.setExitAction(this._cmdExitAction.bind(this));var e=this._isInMedia.bind(this),t=this._isInAdBreak.bind(this),a=this._isInAd.bind(this),i=this._isInChapter.bind(this),r=this._isInTrackedState.bind(this),n=this._isValidMediaInfo.bind(this),s=this._isValidAdBreakInfo.bind(this),o=this._isValidAdInfo.bind(this),d=this._isValidChapterInfo.bind(this),c=this._isValidQoEInfo.bind(this),u=this._isValidStateInfo.bind(this),l=this._isValidErrorInfo.bind(this),h=this._isDifferentAdBreakInfo.bind(this),f=this._isDifferentAdInfo.bind(this),p=this._isDifferentChapterInfo.bind(this),m=this._allowPlayerStateChange.bind(this),_=this._allowStateTrack.bind(this),v=this._isInBuffering.bind(this),k=this._isInSeeking.bind(this),y=this._cmdMediaStart.bind(this),g=this._cmdMediaSkip.bind(this),S=this._cmdMediaComplete.bind(this),P=this._cmdError.bind(this),I=this._cmdPlay.bind(this),A=this._cmdPause.bind(this),b=this._cmdBufferStart.bind(this),C=this._cmdBufferComplete.bind(this),E=this._cmdSeekStart.bind(this),M=this._cmdSeekComplete.bind(this),w=this._cmdAdStart.bind(this),T=this._cmdAdComplete.bind(this),O=this._cmdAdSkip.bind(this),R=this._cmdAdBreakStart.bind(this),B=this._cmdAdBreakComplete.bind(this),z=this._cmdAdBreakSkip.bind(this),j=this._cmdChapterStart.bind(this),D=this._cmdChapterComplete.bind(this),V=this._cmdChapterSkip.bind(this),N=this._cmdStateStart.bind(this),q=this._cmdStateEnd.bind(this),x=this._cmdBitrateChange.bind(this),F=this._cmdQoEUpdate.bind(this),L=this._cmdPlayheadUpdate.bind(this),G=new ye(ke.SessionStart,"API:trackSessionStart");G.addPredicate(e,!1,Me).addPredicate(n,!0,De).addAction(y),this._ruleEngine.addRule(G);var H=new ye(ke.SessionComplete,"API:trackComplete");H.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(S),this._ruleEngine.addRule(H);var Q=new ye(ke.SessionEnd,"API:trackSessionEnd");Q.addPredicate(e,!0,Ee).addAction(O).addAction(z).addAction(V).addAction(g),this._ruleEngine.addRule(Q);var U=new ye(ke.Error,"API:trackError");U.addPredicate(e,!0,Ee).addPredicate(l,!0,Fe).addAction(P),this._ruleEngine.addRule(U);var K=new ye(ke.Play,"API:trackPlay");K.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addAction(M).addAction(C).addAction(I),this._ruleEngine.addRule(K);var W=new ye(ke.Pause,"API:trackPause");W.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!1,we).addPredicate(k,!1,Oe).addAction(A),this._ruleEngine.addRule(W);var Z=new ye(ke.BufferStart,"API:trackEvent(BufferStart)");Z.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!1,we).addPredicate(k,!1,Oe).addAction(b),this._ruleEngine.addRule(Z);var $=new ye(ke.BufferComplete,"API:trackEvent(BufferComplete)");$.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(v,!0,Te).addAction(C),this._ruleEngine.addRule($);var J=new ye(ke.SeekStart,"API:trackEvent(SeekStart)");J.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(k,!1,Oe).addPredicate(v,!1,we).addAction(E),this._ruleEngine.addRule(J);var X=new ye(ke.SeekComplete,"API:trackEvent(SeekComplete)");X.addPredicate(e,!0,Ee).addPredicate(m,!0,Ue).addPredicate(k,!0,Re).addAction(M),this._ruleEngine.addRule(X);var Y=new ye(ke.AdBreakStart,"API:trackEvent(AdBreakStart)");Y.addPredicate(e,!0,Ee).addPredicate(s,!0,Ve).addPredicate(h,!0,Ne).addAction(O).addAction(z).addAction(R),this._ruleEngine.addRule(Y);var ee=new ye(ke.AdBreakComplete,"API:trackEvent(AdBreakComplete)");ee.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addAction(O).addAction(B),this._ruleEngine.addRule(ee);var te=new ye(ke.AdStart,"API:trackEvent(AdStart)");te.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(o,!0,qe).addPredicate(f,!0,Le).addAction(O).addAction(w),this._ruleEngine.addRule(te);var ae=new ye(ke.AdComplete,"API:trackEvent(AdComplete)");ae.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(a,!0,ze).addAction(T),this._ruleEngine.addRule(ae);var ie=new ye(ke.AdSkip,"API:trackEvent(AdSkip)");ie.addPredicate(e,!0,Ee).addPredicate(t,!0,Be).addPredicate(a,!0,ze).addAction(O),this._ruleEngine.addRule(ie);var re=new ye(ke.ChapterStart,"API::trackEvent(chapterStart)");re.addPredicate(e,!0,Ee).addPredicate(d,!0,Ge).addPredicate(p,!0,He).addAction(V).addAction(j),this._ruleEngine.addRule(re);var ne=new ye(ke.ChapterComplete,"API::trackEvent(chapterComplete)");ne.addPredicate(e,!0,Ee).addPredicate(i,!0,je).addAction(D),this._ruleEngine.addRule(ne);var se=new ye(ke.ChapterSkip,"API:trackEvent(chapterSkip)");se.addPredicate(e,!0,Ee).addPredicate(i,!0,je).addAction(V),this._ruleEngine.addRule(se);var oe=new ye(ke.BitrateChange,"API:trackEvent(BitrateChange)");oe.addPredicate(e,!0,Ee).addAction(x),this._ruleEngine.addRule(oe);var de=new ye(ke.QoEUpdate,"API:trackEvent(QoEUpdate)");de.addPredicate(e,!0,Ee).addPredicate(c,!0,Qe).addAction(F),this._ruleEngine.addRule(de);var ce=new ye(ke.PlayheadUpdate,"API:trackEvent(PlayheadUpdate)");ce.addPredicate(e,!0,Ee).addAction(L),this._ruleEngine.addRule(ce);var ue=new ye(ke.StateStart,"API:trackEvent(StateStart)");ue.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!1,Ke).addPredicate(_,!0,Ze).addAction(N),this._ruleEngine.addRule(ue);var le=new ye(ke.StateEnd,"API:trackEvent(StateEnd)");le.addPredicate(e,!0,Ee).addPredicate(u,!0,xe).addPredicate(r,!0,We).addAction(q),this._ruleEngine.addRule(le)}},{key:"_isInMedia",value:function(){return!P(this._media)}},{key:"_isInAdBreak",value:function(){return this._media.isInAdBreak}},{key:"_isInAd",value:function(){return this._media.isInAd}},{key:"_isInChapter",value:function(){return this._media.isInChapter}},{key:"_isInBuffering",value:function(){return this._media.isInPlaybackState(Se.Buffer)}},{key:"_isInSeeking",value:function(){return this._media.isInPlaybackState(Se.Seek)}},{key:"_isInTrackedState",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.isCustomStateActive(t)}},{key:"_isValidMediaInfo",value:function(e){return null!=fe.deserialize(e[ve.Params])}},{key:"_isValidAdBreakInfo",value:function(e){return null!=ce.deserialize(e[ve.Params])}},{key:"_isValidAdInfo",value:function(e){return null!=de.deserialize(e[ve.Params])}},{key:"_isValidStateInfo",value:function(e){return null!=he.deserialize(e[ve.Params])}},{key:"_isValidChapterInfo",value:function(e){return null!=ue.deserialize(e[ve.Params])}},{key:"_isValidQoEInfo",value:function(e){return null!=pe.deserialize(e[ve.Params])}},{key:"_isValidErrorInfo",value:function(e){var t=e[ve.Params];if(!w(t))return!1;var a=t[ve.ErrorId];return C(a)}},{key:"_isDifferentAdBreakInfo",value:function(e){return!ce.deserialize(e[ve.Params]).equal(this._media.adBreakInfo)}},{key:"_isDifferentAdInfo",value:function(e){return!de.deserialize(e[ve.Params]).equal(this._media.adInfo)}},{key:"_isDifferentChapterInfo",value:function(e){return!ue.deserialize(e[ve.Params]).equal(this._media.chapterInfo)}},{key:"_allowPlayerStateChange",value:function(){return!this._media.isInAdBreak||this._media.isInAd}},{key:"_allowStateTrack",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.hasTrackedCustomState(t)||this._media.numTrackedCustomStates()<10}},{key:"_cmdEnterAction",value:function(e,t){var a=this._getRefTs(t);return P(this._hitGenerator)||this._hitGenerator.setRefTS(a),!0}},{key:"_cmdExitAction",value:function(e,t){if(P(this._media))return!1;e.id===ke.AdStart&&(!this._media.isInPlaybackState(Se.Init)||this._media.isInPlaybackState(Se.Buffer)||this._media.isInPlaybackState(Se.Seek)||this._media.enterPlaybackState(Se.Play)),e.id!==ke.BufferComplete&&e.id!==ke.SeekComplete||this._media.isInPlaybackState(Se.Init)&&this._media.enterPlaybackState(Se.Pause),this._cmdIdleDetection(t),this._cmdSessionTimeoutDetection(t),this._cmdContentStartDetection(t);var a=e.id===ke.AdStart||e.id===ke.AdBreakComplete;return this._hitGenerator.processPlayback(a),!0}},{key:"_cmdMediaStart",value:function(e){var t=fe.deserialize(e[ve.Params]),a=e[ve.Metadata],i=this._getRefTs(e);return this._media=new Pe(t,a),this._hitGenerator=this._createHitGenerator(i),this._hitGenerator.processMediaStart(),this._sessionRefTs=i,this._inPrerollInterval=0!==t.prerollWaitTime,this._prerollRefTs=i,!0}},{key:"_cmdMediaComplete",value:function(){return this._hitGenerator.processMediaComplete(),this._resetStates(),!0}},{key:"_cmdMediaSkip",value:function(){return this._hitGenerator.processMediaSkip(),this._resetStates(),!0}},{key:"_cmdAdBreakStart",value:function(e){var t=ce.deserialize(e[ve.Params]);return this._media.setAdBreakInfo(t),this._hitGenerator.processAdBreakStart(),!0}},{key:"_cmdAdBreakComplete",value:function(){return this._hitGenerator.processAdBreakComplete(),this._media.clearAdBreakInfo(),!0}},{key:"_cmdAdBreakSkip",value:function(){return this._media.isInAdBreak&&(this._hitGenerator.processAdBreakSkip(),this._media.clearAdBreakInfo()),!0}},{key:"_cmdAdStart",value:function(e){var t=de.deserialize(e[ve.Params]),a=e[ve.Metadata];return this._media.setAdInfo(t,a),this._hitGenerator.processAdStart(),!0}},{key:"_cmdAdComplete",value:function(){return this._hitGenerator.processAdComplete(),this._media.clearAdInfo(),!0}},{key:"_cmdAdSkip",value:function(){return this._media.isInAd&&(this._hitGenerator.processAdSkip(),this._media.clearAdInfo()),!0}},{key:"_cmdChapterStart",value:function(e){var t=ue.deserialize(e[ve.Params]),a=e[ve.Metadata];return this._media.setChapterInfo(t,a),this._hitGenerator.processChapterStart(),!0}},{key:"_cmdChapterComplete",value:function(){return this._hitGenerator.processChapterComplete(),this._media.clearChapterInfo(),!0}},{key:"_cmdChapterSkip",value:function(){return this._media.isInChapter&&(this._hitGenerator.processChapterSkip(),this._media.clearChapterInfo()),!0}},{key:"_cmdError",value:function(e){var t=e[ve.Params][ve.ErrorId];return this._hitGenerator.processError(t),!0}},{key:"_cmdBitrateChange",value:function(){return this._hitGenerator.processBitrateChange(),!0}},{key:"_cmdPlay",value:function(){return this._media.enterPlaybackState(Se.Play),!0}},{key:"_cmdPause",value:function(){return this._media.enterPlaybackState(Se.Pause),!0}},{key:"_cmdBufferStart",value:function(){return this._media.enterPlaybackState(Se.Buffer),!0}},{key:"_cmdBufferComplete",value:function(){return this._media.isInPlaybackState(Se.Buffer)&&this._media.exitPlaybackState(Se.Buffer),!0}},{key:"_cmdSeekStart",value:function(){return this._media.enterPlaybackState(Se.Seek),!0}},{key:"_cmdSeekComplete",value:function(){return this._media.isInPlaybackState(Se.Seek)&&this._media.exitPlaybackState(Se.Seek),!0}},{key:"_cmdQoEUpdate",value:function(e){var t=pe.deserialize(e[ve.Params]);return this._media.qoeInfo=t,!0}},{key:"_cmdPlayheadUpdate",value:function(e){var t=e[ve.Params];if(w(t)){var a=t[ve.Playhead];J(a)&&a>=0&&(this._media.playhead=a)}return!0}},{key:"_cmdIdleDetection",value:function(e){var t=this._getRefTs(e);this._media.isIdle()?this._mediaIdle?!this._trackerIdle&&t-this._mediaIdleStartTs>=18e5&&(this._hitGenerator.processSessionAbort(),this._trackerIdle=!0):(this._mediaIdle=!0,this._mediaIdleStartTs=t):(this._trackerIdle&&(this._hitGenerator.processSessionRestart(),this._trackerIdle=!1,this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null),this._mediaIdle=!1)}},{key:"_cmdSessionTimeoutDetection",value:function(e){var t=this._getRefTs(e);!this._trackerIdle&&t-this._sessionRefTs>=864e5&&(this._hitGenerator.processSessionAbort(),this._hitGenerator.processSessionRestart(),this._sessionRefTs=t,this._contentStarted=!1,this._contentStartRefTs=null)}},{key:"_cmdContentStartDetection",value:function(e){return!(!this._media.isIdle()&&!this._contentStarted)||(this._media.isInAdBreak?(this._contentStartRefTs=null,!0):(null==this._contentStartRefTs&&(this._contentStartRefTs=this._getRefTs(e)),this._getRefTs(e)-this._contentStartRefTs>=1e3&&(this._hitGenerator.processPlayback(!0),this._contentStarted=!0),!0))}},{key:"_cmdStateStart",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.startCustomState(t),this._hitGenerator.processCustomStateStart(t),!0}},{key:"_cmdStateEnd",value:function(e){var t=he.deserialize(e[ve.Params]);return this._media.endCustomState(t),this._hitGenerator.processCustomStateEnd(t),!0}},{key:"_getRefTs",value:function(e){var t=e[ve.TimeStamp];return X(t)?t:null}},{key:"_prerollDeferRule",value:function(e,t){if(this._inPrerollInterval&&null!=this._media){var a=this._media.mediaInfo.prerollWaitTime;if(this._prerollQueuedRules.push({eventName:e,context:t}),this._getRefTs(t)-this._prerollRefTs>=a||e===ke.AdBreakStart||e===ke.MediaComplete||e===ke.MediaSkip){for(var i=this._prerollReorderRules(this._prerollQueuedRules),r=0;r3&&void 0!==arguments[3]&&arguments[3];if(this._tracker){var s=E(),o=(r(i={},ve.Name,e),r(i,ve.Params,t),r(i,ve.Metadata,a),r(i,ve.TimeStamp,s),r(i,ve.InternalEvent,n),i),d=this._tracker.track(o);this._lastEventTS=s,e===ke.PlayheadUpdate&&(this._lastPlayheadParams=t),e===ke.SessionStart&&d?this._startTimer():e!==ke.SessionComplete&&e!==ke.SessionEnd||this._stopTimer()}else this._logger.warn("Dropping the call as the tracker instance is already destroyed")}},{key:"_startTimer",value:function(){var e=this;this._timer||(this._timer=T((function(){e._onTick()}),500))}},{key:"_stopTimer",value:function(){var e;this._timer&&(e=this._timer,clearInterval(e),this._timer=null)}},{key:"_onTick",value:function(){E()-this._lastEventTS>750&&this._trackInternal(ke.PlayheadUpdate,this._lastPlayheadParams,null,!0)}}]),e}(),Ye=new oe,et=l();var tt={configure:function(e){Ye.configure(e)},getInstance:function(e){var t="tracker"+et.getUniqueId();return new Xe(Ye,t,e)},createMediaObject:function(e,t,a,i,r){var n=null;try{n=new fe({id:t,name:e,streamType:i,mediaType:r,length:a}).serialize()}catch(e){me.error("Error creating MediaObject ("+e.message+")")}return n},createAdBreakObject:function(e,t,a){var i=null;try{i=new ce({name:e,position:t,startTime:a}).serialize()}catch(e){me.error("Error creating AdBreakObject ("+e.message+")")}return i},createAdObject:function(e,t,a,i){var r=null;try{r=new de({id:t,name:e,position:a,length:i}).serialize()}catch(e){me.error("Error creating AdObject ("+e.message+")")}return r},createChapterObject:function(e,t,a,i){var r=null;try{r=new ue({name:e,position:t,length:a,startTime:i}).serialize()}catch(e){me.error("Error creating ChapterObject ("+e.message+")")}return r},createQoEObject:function(e,t,a,i){var r=null;try{r=new pe({bitrate:e,droppedFrames:i,fps:a,startupTime:t}).serialize()}catch(e){me.error("Error creating QoEObject ("+e.message+")")}return r},createStateObject:function(e){var t=null;try{t=new he({name:e}).serialize()}catch(e){me.error("Error creating StateObject ("+e.message+")")}return t},version:"js-3.1.0",Event:h,MediaType:p,TrackerConfig:g,PlayerState:m,StreamType:y,MediaObjectKey:f,VideoMetadataKeys:_,AudioMetadataKeys:v,AdMetadataKeys:k};var at="ecid",it="analytics",rt="mediaanalytics",nt=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(s,e);var a,n=(a=s,function(){var e,t=o(a);if(c()){var i=o(this).constructor;e=Reflect.construct(t,arguments,i)}else e=t.apply(this,arguments);return u(this,e)});function s(e,a){var i;if(t(this,s),i=n.call(this),!e)throw new Error("Valid appmeasurement instance is required");if(!e.visitor)throw new Error("Valid visitor instance is required");return i._mediaConfig=a,i._appMeasurement=e,i._appMeasurementReady=!1,i._privacyResolved=!1,i._logger=z("WebECResolver"),i._fetchECParams(),i._fetchPrivacyStatus(),i._setupResolver(),i}return i(s,[{key:"resolveKeys",value:function(e){if(!e||0===e.length)return{};for(var t={},a=0;a