@newrelic/video-core 3.1.1 → 3.2.0-beta-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,574 @@
1
+ import Chrono from "./chrono";
2
+ import Log from "./log";
3
+
4
+ /**
5
+ * State machine for a VideoTracker and its monitored video.
6
+ */
7
+ class VideoTrackerState {
8
+ /** Constructor */
9
+ constructor() {
10
+ this.reset();
11
+
12
+ //this.setupNetworkListeners();
13
+
14
+ /**
15
+ * Time when the VideoTrackerState was initializated.
16
+ * @private
17
+ */
18
+ this._createdAt = Date.now();
19
+ this._hb = true;
20
+ this._acc = 0;
21
+ this._bufferAcc = 0;
22
+ }
23
+
24
+ /** Resets all flags and chronos. */
25
+ reset() {
26
+ /**
27
+ * Unique identifier of the view.
28
+ * @private
29
+ */
30
+ this._viewSession = null;
31
+
32
+ /**
33
+ * Number of views seen.
34
+ * @private
35
+ */
36
+ this._viewCount = 0;
37
+
38
+ /**
39
+ * True if it is tracking ads.
40
+ * @private
41
+ */
42
+ this._isAd = false;
43
+
44
+ /**
45
+ * Number of errors fired. 'End' resets it.
46
+ */
47
+ this.numberOfErrors = 0;
48
+
49
+ /**
50
+ * Number of ads shown.
51
+ */
52
+ this.numberOfAds = 0;
53
+
54
+ /**
55
+ * Number of videos played.
56
+ */
57
+ this.numberOfVideos = 0;
58
+
59
+ /**
60
+ * The amount of ms the user has been watching content (not paused, not buffering, not ads...)
61
+ */
62
+ this.totalPlaytime = 0;
63
+
64
+ /**
65
+ * The amount of ms the user has been watching ads during an ad break.
66
+ */
67
+ this.totalAdPlaytime = 0;
68
+
69
+ /** True if you are in the middle of an ad break. */
70
+ this.isAdBreak = false;
71
+
72
+ /** True if initial buffering event already happened. */
73
+ this.initialBufferingHappened = false;
74
+
75
+ this.resetFlags();
76
+ this.resetChronos();
77
+ }
78
+
79
+ /** Resets flags. */
80
+ resetFlags() {
81
+ /** True once the player has finished loading. */
82
+ this.isPlayerReady = false;
83
+
84
+ /** True if the video has been user-requested to play. ie: user cicks play. */
85
+ this.isRequested = false;
86
+
87
+ /** True if the video has starting playing. ie: actual images/audio showing in screen. */
88
+ this.isStarted = false;
89
+
90
+ /** True if the video is paused. */
91
+ this.isPaused = false;
92
+
93
+ /** True if the video is performing a seek action. */
94
+ this.isSeeking = false;
95
+
96
+ /** True if the video is currently buffering. */
97
+ this.isBuffering = false;
98
+
99
+ /** True if the video is currently playing (not buffering, not paused...) */
100
+ this.isPlaying = false;
101
+ }
102
+
103
+ /** Resets chronos. */
104
+ resetChronos() {
105
+ /** Chrono that counts time since last requested event. */
106
+ this.timeSinceRequested = new Chrono();
107
+
108
+ /** Chrono that counts time since last start event. */
109
+ this.timeSinceStarted = new Chrono();
110
+
111
+ /** Chrono that counts time since last pause event. */
112
+ this.timeSincePaused = new Chrono();
113
+
114
+ /** Chrono that counts time since last seeking start event. */
115
+ this.timeSinceSeekBegin = new Chrono();
116
+
117
+ /** Chrono that counts time since last buffering start event. */
118
+ this.timeSinceBufferBegin = new Chrono();
119
+
120
+ /** Chrono that counts time since last ad break start event. */
121
+ this.timeSinceAdBreakStart = new Chrono();
122
+
123
+ /** Chrono that counts time since last download event. */
124
+ this.timeSinceLastDownload = new Chrono();
125
+
126
+ /** Chrono that counts time since last heartbeat. */
127
+ this.timeSinceLastHeartbeat = new Chrono();
128
+
129
+ /** Chrono that counts time since last rendition change. */
130
+ this.timeSinceLastRenditionChange = new Chrono();
131
+
132
+ /** Ads only. Chrono that counts time since last ad quartile. */
133
+ this.timeSinceLastAdQuartile = new Chrono();
134
+
135
+ /** Content only. Chrono that counts time since last AD_END. */
136
+ this.timeSinceLastAd = new Chrono();
137
+
138
+ /** Chrono that counts time since last *_RESUME. Only for buffering events. */
139
+ this.timeSinceResumed = new Chrono();
140
+
141
+ /** Chrono that counts time since last *_SEEK_END. Only for buffering events. */
142
+ this.timeSinceSeekEnd = new Chrono();
143
+
144
+ /** Chrono that counts the ammount of time the video have been playing since the last event. */
145
+ this.playtimeSinceLastEvent = new Chrono();
146
+
147
+ /** A dictionary containing the custom timeSince attributes. */
148
+ this.customTimeSinceAttributes = {};
149
+
150
+ /** This are used to collect the time of buffred and pause resume between two heartbeats */
151
+ this.elapsedTime = new Chrono();
152
+ this.bufferElapsedTime = new Chrono();
153
+ }
154
+
155
+ /** Returns true if the tracker is currently on ads. */
156
+ isAd() {
157
+ return this._isAd;
158
+ }
159
+
160
+ /** Sets if the tracker is currenlty tracking ads */
161
+ setIsAd(isAd) {
162
+ this._isAd = isAd;
163
+ }
164
+
165
+ /**
166
+ * Set the Chrono for the custom attribute
167
+ *
168
+ * @param {object} name Time since attribute name.
169
+ */
170
+ setTimeSinceAttribute(name) {
171
+ this.customTimeSinceAttributes[name] = new Chrono();
172
+ this.customTimeSinceAttributes[name].start();
173
+ }
174
+
175
+ /**
176
+ * Delete a time since attribute
177
+ *
178
+ * @param {object} name Time since attribute name.
179
+ */
180
+ removeTimeSinceAttribute(name) {
181
+ delete this.customTimeSinceAttributes[name];
182
+ }
183
+
184
+ /**
185
+ * Returns a random-generated view Session ID, useful to sort by views.
186
+ */
187
+ getViewSession() {
188
+ if (!this._viewSession) {
189
+ let time = new Date().getTime();
190
+ let random =
191
+ Math.random().toString(36).substring(2) +
192
+ Math.random().toString(36).substring(2);
193
+
194
+ this._viewSession = time + "-" + random;
195
+ }
196
+
197
+ return this._viewSession;
198
+ }
199
+
200
+ /**
201
+ * Returns a random-generated view Session ID, plus a view count, allowing you to distinguish
202
+ * between two videos played in the same session.
203
+ */
204
+ getViewId() {
205
+ return this.getViewSession() + "-" + this._viewCount;
206
+ }
207
+
208
+ /**
209
+ * Fills given object with state-based attributes.
210
+ *
211
+ * @param {object} att Collection fo key value attributes
212
+ * @return {object} Filled attributes
213
+ */
214
+ getStateAttributes(att) {
215
+ att = att || {};
216
+
217
+ if (this.isAd()) {
218
+ // Ads only
219
+ if (this.isRequested) {
220
+ att.timeSinceAdRequested = this.timeSinceRequested.getDeltaTime();
221
+ att.timeSinceLastAdHeartbeat =
222
+ this.timeSinceLastHeartbeat.getDeltaTime();
223
+ }
224
+ if (this.isStarted)
225
+ att.timeSinceAdStarted = this.timeSinceStarted.getDeltaTime();
226
+ if (this.isPaused)
227
+ att.timeSinceAdPaused = this.timeSincePaused.getDeltaTime();
228
+ if (this.isBuffering)
229
+ att.timeSinceAdBufferBegin = this.timeSinceBufferBegin.getDeltaTime();
230
+ if (this.isSeeking)
231
+ att.timeSinceAdSeekBegin = this.timeSinceSeekBegin.getDeltaTime();
232
+ if (this.isAdBreak)
233
+ att.timeSinceAdBreakBegin = this.timeSinceAdBreakStart.getDeltaTime();
234
+ att.numberOfAds = this.numberOfAds;
235
+ } else {
236
+ // Content only
237
+ if (this.isRequested) {
238
+ att.timeSinceRequested = this.timeSinceRequested.getDeltaTime();
239
+ att.timeSinceLastHeartbeat = this.timeSinceLastHeartbeat.getDeltaTime();
240
+ }
241
+ if (this.isStarted)
242
+ att.timeSinceStarted = this.timeSinceStarted.getDeltaTime();
243
+ if (this.isPaused)
244
+ att.timeSincePaused = this.timeSincePaused.getDeltaTime();
245
+ if (this.isBuffering)
246
+ att.timeSinceBufferBegin = this.timeSinceBufferBegin.getDeltaTime();
247
+ if (this.isSeeking)
248
+ att.timeSinceSeekBegin = this.timeSinceSeekBegin.getDeltaTime();
249
+ att.timeSinceLastAd = this.timeSinceLastAd.getDeltaTime();
250
+ att.numberOfVideos = this.numberOfVideos;
251
+ }
252
+ att.numberOfErrors = this.numberOfErrors;
253
+
254
+ // Playtime
255
+ if (!this.isAd()) {
256
+ // Content only
257
+ if (this.playtimeSinceLastEvent.startTime > 0) {
258
+ att.playtimeSinceLastEvent = this.playtimeSinceLastEvent.getDeltaTime();
259
+ } else {
260
+ att.playtimeSinceLastEvent = 0;
261
+ }
262
+ if (this.isPlaying) {
263
+ this.playtimeSinceLastEvent.start();
264
+ } else {
265
+ this.playtimeSinceLastEvent.reset();
266
+ }
267
+ this.totalPlaytime += att.playtimeSinceLastEvent;
268
+ att.totalPlaytime = this.totalPlaytime;
269
+ }
270
+
271
+ for (const [key, value] of Object.entries(this.customTimeSinceAttributes)) {
272
+ att[key] = value.getDeltaTime();
273
+ }
274
+
275
+ return att;
276
+ }
277
+
278
+ /**
279
+ * Calculate the bufferType attribute.
280
+ *
281
+ * @param {boolean} isInitialBuffering Is initial buffering event.
282
+ */
283
+ calculateBufferType(isInitialBuffering) {
284
+ let bufferType = "";
285
+ if (isInitialBuffering) {
286
+ bufferType = "initial";
287
+ } else if (this.isSeeking) {
288
+ bufferType = "seek";
289
+ } else if (this.isPaused) {
290
+ bufferType = "pause";
291
+ } else {
292
+ // If none of the above is true, it is a connection buffering
293
+ bufferType = "connection";
294
+ }
295
+ Log.debug("Buffer Type = " + bufferType);
296
+
297
+ return bufferType;
298
+ }
299
+
300
+ /**
301
+ * Augments view count. This will be called with each *_START and *_END.
302
+ */
303
+ goViewCountUp() {
304
+ this._viewCount++;
305
+ }
306
+
307
+ /**
308
+ * Checks flags and changes state.
309
+ * @returns {boolean} True if the state changed.
310
+ */
311
+ goPlayerReady() {
312
+ if (!this.isPlayerReady) {
313
+ this.isPlayerReady = true;
314
+ return true;
315
+ } else {
316
+ return false;
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Checks flags and changes state
322
+ * @returns {boolean} True if the state changed.
323
+ */
324
+ goRequest() {
325
+ if (!this.isRequested) {
326
+ this.isRequested = true;
327
+
328
+ this.timeSinceLastAd.reset();
329
+ this.timeSinceRequested.start();
330
+ return true;
331
+ } else {
332
+ return false;
333
+ }
334
+ }
335
+
336
+ /**
337
+ * Checks flags and changes state
338
+ * @returns {boolean} True if the state changed.
339
+ */
340
+ goStart() {
341
+ if (this.isRequested && !this.isStarted) {
342
+ if (this.isAd()) {
343
+ this.numberOfAds++;
344
+ } else {
345
+ this.numberOfVideos++;
346
+ }
347
+ this.isStarted = true;
348
+ this.isPlaying = true;
349
+ this.timeSinceStarted.start();
350
+ this.playtimeSinceLastEvent.start();
351
+ return true;
352
+ } else {
353
+ return false;
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Checks flags and changes state
359
+ * @returns {boolean} True if the state changed.
360
+ */
361
+ goEnd() {
362
+ if (this.isRequested) {
363
+ this.numberOfErrors = 0;
364
+ this.resetFlags();
365
+ this.timeSinceRequested.stop();
366
+ this.timeSinceStarted.stop();
367
+ this.playtimeSinceLastEvent.stop();
368
+ return true;
369
+ } else {
370
+ return false;
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Checks flags and changes state
376
+ * @returns {boolean} True if the state changed.
377
+ */
378
+ goPause() {
379
+ if (this.isStarted && !this.isPaused) {
380
+ this.isPaused = true;
381
+ this.isPlaying = false;
382
+ this.timeSincePaused.start();
383
+ this.playtimeSinceLastEvent.stop();
384
+ this.timeSinceResumed.reset();
385
+ if (this.isBuffering) {
386
+ this._bufferAcc += this.bufferElapsedTime.getDeltaTime();
387
+ }
388
+ this.elapsedTime.start();
389
+ return true;
390
+ } else {
391
+ return false;
392
+ }
393
+ }
394
+
395
+ /**
396
+ * Checks flags and changes state
397
+ * @returns {boolean} True if the state changed.
398
+ */
399
+ goResume() {
400
+ if (this.isStarted && this.isPaused) {
401
+ this.isPaused = false;
402
+ this.isPlaying = true;
403
+ this.timeSincePaused.stop();
404
+ this.timeSinceResumed.start();
405
+ if (this._hb) {
406
+ this._acc = this.elapsedTime.getDeltaTime();
407
+ this._hb = false;
408
+ } else {
409
+ if (this.isBuffering) {
410
+ this.bufferElapsedTime.start();
411
+ }
412
+ this._acc += this.elapsedTime.getDeltaTime();
413
+ }
414
+ return true;
415
+ } else {
416
+ return false;
417
+ }
418
+ }
419
+
420
+ /**
421
+ * Checks flags and changes state
422
+ * @returns {boolean} True if the state changed.
423
+ */
424
+ goBufferStart() {
425
+ if (this.isRequested && !this.isBuffering) {
426
+ this.isBuffering = true;
427
+ this.isPlaying = false;
428
+ this.timeSinceBufferBegin.start();
429
+ this.bufferElapsedTime.start();
430
+
431
+ return true;
432
+ } else {
433
+ return false;
434
+ }
435
+ }
436
+
437
+ /**
438
+ * Checks flags and changes state
439
+ * @returns {boolean} True if the state changed.
440
+ */
441
+ goBufferEnd() {
442
+ if (this.isRequested && this.isBuffering) {
443
+ this.isBuffering = false;
444
+ this.isPlaying = true;
445
+ this.timeSinceBufferBegin.stop();
446
+ if (this._hb) {
447
+ this._bufferAcc = this.bufferElapsedTime.getDeltaTime();
448
+ this._hb = false;
449
+ } else {
450
+ this._bufferAcc += this.bufferElapsedTime.getDeltaTime();
451
+ }
452
+
453
+ return true;
454
+ } else {
455
+ return false;
456
+ }
457
+ }
458
+
459
+ /**
460
+ * Checks flags and changes state
461
+ * @returns {boolean} True if the state changed.
462
+ */
463
+ goSeekStart() {
464
+ if (this.isStarted && !this.isSeeking) {
465
+ this.isSeeking = true;
466
+ this.isPlaying = false;
467
+ this.timeSinceSeekBegin.start();
468
+ this.timeSinceSeekEnd.reset();
469
+
470
+ //new
471
+ // this.seekStartTime = Date.now();
472
+
473
+ return true;
474
+ } else {
475
+ return false;
476
+ }
477
+ }
478
+
479
+ /**
480
+ * Checks flags and changes state
481
+ * @returns {boolean} True if the state changed.
482
+ */
483
+ goSeekEnd() {
484
+ if (this.isStarted && this.isSeeking) {
485
+ this.isSeeking = false;
486
+ this.isPlaying = true;
487
+ this.timeSinceSeekBegin.stop();
488
+ this.timeSinceSeekEnd.start();
489
+
490
+ //new
491
+ // this.seekEndTime = Date.now();
492
+ // this.seekDuration = this.seekEndTime - this.seekStartTime;
493
+
494
+ return true;
495
+ } else {
496
+ return false;
497
+ }
498
+ }
499
+
500
+ /**
501
+ * Checks flags and changes state
502
+ * @returns {boolean} True if the state changed.
503
+ */
504
+ goAdBreakStart() {
505
+ if (!this.isAdBreak) {
506
+ this.isAdBreak = true;
507
+ this.timeSinceAdBreakStart.start();
508
+ return true;
509
+ } else {
510
+ return false;
511
+ }
512
+ }
513
+
514
+ /**
515
+ * Checks flags and changes state
516
+ * @returns {boolean} True if the state changed.
517
+ */
518
+ goAdBreakEnd() {
519
+ if (this.isAdBreak) {
520
+ this.isRequested = false;
521
+ this.isAdBreak = false;
522
+ this.totalAdPlaytime = this.timeSinceAdBreakStart.getDeltaTime();
523
+ this.timeSinceAdBreakStart.stop();
524
+ return true;
525
+ } else {
526
+ return false;
527
+ }
528
+ }
529
+
530
+ /**
531
+ * Restarts download chrono.
532
+ */
533
+ goDownload() {
534
+ this.timeSinceLastDownload.start();
535
+ }
536
+
537
+ /**
538
+ * Restarts heartbeat chrono.
539
+ */
540
+ goHeartbeat() {
541
+ this.timeSinceLastHeartbeat.start();
542
+ }
543
+
544
+ /**
545
+ * Restarts rendition change chrono.
546
+ */
547
+ goRenditionChange() {
548
+ this.timeSinceLastRenditionChange.start();
549
+ }
550
+
551
+ /**
552
+ * Restarts ad quartile chrono.
553
+ */
554
+ goAdQuartile() {
555
+ this.timeSinceLastAdQuartile.start();
556
+ }
557
+
558
+ /**
559
+ * Increments error counter.
560
+ */
561
+ goError() {
562
+ this.isError = true;
563
+ this.numberOfErrors++;
564
+ }
565
+
566
+ /**
567
+ * Restarts last ad chrono.
568
+ */
569
+ goLastAd() {
570
+ this.timeSinceLastAd.start();
571
+ }
572
+ }
573
+
574
+ export default VideoTrackerState;
package/dist/cjs/index.js DELETED
@@ -1 +0,0 @@
1
- function a0b(a,b){const c=a0a();return a0b=function(d,e){d=d-0x117;let f=c[d];return f;},a0b(a,b);}(function(a,b){const G=a0b,c=a();while(!![]){try{const d=-parseInt(G(0x1f9))/0x1+parseInt(G(0x2a9))/0x2+-parseInt(G(0x175))/0x3*(-parseInt(G(0x206))/0x4)+parseInt(G(0x117))/0x5+parseInt(G(0x199))/0x6+-parseInt(G(0x14a))/0x7*(-parseInt(G(0x1fa))/0x8)+-parseInt(G(0x145))/0x9;if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(a0a,0x4cd39),((()=>{'use strict';const c3=a0b;var a={0x33:(f,g)=>{const H=a0b;Object[H(0x219)](g,H(0x2af),{'value':!0x0}),g[H(0x1a9)]=void 0x0;class h{}h['AdPositions']={'PRE':H(0x281),'MID':H(0x259),'POST':'post'},g['default']=h;},0x90:(f,g)=>{const I=a0b;Object[I(0x219)](g,I(0x2af),{'value':!0x0}),g[I(0x1a9)]=void 0x0;class h{static[I(0x231)](...m){const J=I;j(m,h[J(0x16f)][J(0x11e)],J(0x121));}static['warn'](...m){const K=I;j(m,h['Levels'][K(0x276)],K(0x2a2));}static[I(0x26b)](...m){const L=I;j([]['slice']['call'](arguments),h['Levels'][L(0x193)],L(0x253));}static[I(0x154)](...m){const M=I;j(m,h[M(0x16f)][M(0x133)],'indigo');}static['debugCommonVideoEvents'](m,o,p){const N=I;try{if(h[N(0x17c)]<=h['Levels'][N(0x133)]){p=p||function(u){const O=N;h['debug'](O(0x284)+u['type']);};var q=['canplay',N(0x132),'waiting','ended',N(0x260),N(0x160),N(0x1e7),'resume',N(0x231),N(0x1c9),N(0x1f7),N(0x1e5),N(0x269),N(0x152),N(0x18a),N(0x1f2),N(0x28c),'loadedmetadata'];o&&(null===o[0x0]?(o[N(0x157)](),q=o):q=q['concat'](o));for(var r=0x0;r<q[N(0x28f)];r++)'function'==typeof m?m['call'](window,q[r],p):m['on']?m['on'](q[r],p):m[N(0x184)]?m[N(0x184)](q[r],p):m[N(0x243)]?m[N(0x243)](q[r],p):h[N(0x27d)](N(0x26a),m);}}catch(u){h[N(0x27d)](u);}}}function j(m,p,q){const P=I;p=p||h[P(0x16f)][P(0x193)],q=q||P(0x253);var u,v,w=h[P(0x1cc)];h[P(0x12e)]&&(w+='['+('0'+(u=new Date())[P(0x18b)]())[P(0x1a2)](-0x2)+':'+('0'+u['getMinutes']())[P(0x1a2)](-0x2)+':'+('0'+u['getSeconds']())['slice'](-0x2)+'.'+('00'+u['getMilliseconds']())[P(0x1a2)](-0x3)+']\x20'),w+=function(x){return l[x];}(p)+':',h[P(0x17c)]<=p&&p!==h[P(0x16f)][P(0x191)]&&(!h[P(0x272)]||'undefined'!=typeof document&&document[P(0x29c)]?k(m,w):(v=p===h[P(0x16f)]['ERROR']&&console[P(0x231)]?console[P(0x231)]:p===h['Levels'][P(0x276)]&&console[P(0x27d)]?console[P(0x27d)]:p===h[P(0x16f)][P(0x133)]&&console[P(0x154)]&&null==window[P(0x155)]?console[P(0x154)]:console[P(0x1b0)],w='%c'+w,m[P(0x196)](0x0,0x0,w,P(0x1ac)+q),v[P(0x19e)](console,m)));}function k(m,o){const Q=I;if(m instanceof Array){for(var p in m)k(m[p],o);}else Q(0x212)==typeof m?console['log'](o+'\x20'+m):(console[Q(0x1b0)](o+'↵'),console[Q(0x1b0)](m));}h['Levels']={'SILENT':0x5,'ERROR':0x4,'WARNING':0x3,'NOTICE':0x2,'DEBUG':0x1,'ALL':0x0},h['level']=h[I(0x16f)][I(0x11e)],h[I(0x272)]=!0x0,h[I(0x12e)]=!0x0,h[I(0x1cc)]='[nrvideo]';const l={0x4:'e',0x3:'w',0x2:'n',0x1:'d'};!(function(){const R=I;if('undefined'!=typeof window&&window[R(0x21d)]&&window[R(0x21d)][R(0x18e)]){var m=/\?.*&*nrvideo-debug=(.+)/i['exec'](window[R(0x21d)][R(0x18e)]);null!==m&&('true'===m[0x1]?h[R(0x17c)]=h[R(0x16f)][R(0x275)]:h[R(0x17c)]=m[0x1]),null!==/\?.*&*nrvideo-colors=false/i[R(0x15d)](window[R(0x21d)][R(0x18e)])&&(h['colorful']=!0x1);}}()),g[I(0x1a9)]=h;},0x92:(f,g)=>{const S=a0b;Object['defineProperty'](g,S(0x2af),{'value':!0x0}),g['default']=void 0x0,g[S(0x1a9)]=class{constructor(h){const T=S;this[T(0x246)]={};}['send'](h,j){const U=S;j=Object[U(0x2ad)](j||{},this[U(0x246)]);}[S(0x1fe)](h,j){this['_attributes'][h]=j;}[S(0x28d)](h){const V=S;this[V(0x246)]['append'](h);}};},0x12e:(f,g,h)=>{const W=a0b;Object[W(0x219)](g,W(0x2af),{'value':!0x0}),g[W(0x1a9)]=void 0x0;var j=p(h(0x14a)),k=p(h(0x238)),l=p(h(0x1c7)),m=p(h(0x33));function p(u){const X=W;return u&&u[X(0x2af)]?u:{'default':u};}class q extends k[W(0x1a9)]{constructor(u){const Y=W;super(),this['customData']={},this[Y(0x1ba)]=null,this[Y(0x173)]=null,this['_trackerReadyChrono']=new l[(Y(0x1a9))](),this[Y(0x288)]['start'](),this[Y(0x1ef)]=m['default'][Y(0x239)],this[Y(0x11f)]=m[Y(0x1a9)][Y(0x135)],u=u||{},this['setOptions'](u);}[W(0x22d)](u){const Z=W;u&&(u[Z(0x173)]&&(this[Z(0x173)]=u['parentTracker']),u[Z(0x134)]&&(this[Z(0x134)]=u[Z(0x134)]),u[Z(0x1ba)]&&(this[Z(0x1ba)]=u[Z(0x1ba)]));}[W(0x18a)](){const a0=W;this[a0(0x228)]();}[W(0x17f)](){}[W(0x228)](){}[W(0x19c)](){const a1=W;return this[a1(0x1a3)][a1(0x229)]?0x7d0:this[a1(0x1ba)]?this[a1(0x1ba)]:this[a1(0x173)]&&this[a1(0x173)][a1(0x1ba)]?this[a1(0x173)]['heartbeat']:0x7530;}[W(0x166)](){const a2=W;this[a2(0x1c4)]=setInterval(this[a2(0x12a)][a2(0x20d)](this),Math['max'](this[a2(0x19c)](),0x7d0));}[W(0x1fc)](){const a3=W;this[a3(0x1c4)]&&clearInterval(this[a3(0x1c4)]);}['sendHeartbeat'](u){const a4=W;this['sendVideoAction'](q['Events'][a4(0x1b2)],u);}[W(0x225)](u,v){const a5=W;(u=u||{})[a5(0x230)]=this[a5(0x14d)](),u[a5(0x224)]=this['getTrackerVersion'](),u[a5(0x258)]=j[a5(0x1a9)][a5(0x123)],u['timeSinceTrackerReady']=this[a5(0x288)][a5(0x1e9)]();for(let w in this[a5(0x134)])u[w]=this[a5(0x134)][w];return null!=document[a5(0x128)]&&(u['isBackgroundEvent']=document['hidden']),u;}[W(0x2a7)](){const a6=W;return j[a6(0x1a9)][a6(0x123)];}[W(0x14d)](){const a7=W;return a7(0x182);}[W(0x213)](u,v){const a8=W;this[a8(0x2ab)](a8(0x1a7),u,this[a8(0x225)](v));}[W(0x13e)](u,v){const a9=W;this[a9(0x2ab)](a9(0x17d),u,this['getAttributes'](v));}['sendVideoErrorAction'](u,v){const aa=W;let w=this[aa(0x1d7)]()?aa(0x245):aa(0x1bb);this[aa(0x2ab)]('VideoErrorAction',u,this['getAttributes'](v,w));}[W(0x1d3)](u,v){const ab=W;this['emit'](ab(0x172),u,this['getAttributes'](v,ab(0x1df)));}}q[W(0x1c3)]={'HEARTBEAT':W(0x1b2)},g[W(0x1a9)]=q;},0x148:(f,g,h)=>{const ac=a0b;Object[ac(0x219)](g,'__esModule',{'value':!0x0}),g[ac(0x1a9)]=void 0x0;var j=l(h(0x1c7)),k=l(h(0x90));function l(m){const ad=ac;return m&&m[ad(0x2af)]?m:{'default':m};}g[ac(0x1a9)]=class{constructor(){const ae=ac;this[ae(0x186)](),this[ae(0x282)]=Date['now'](),this['_hb']=!0x0,this['_acc']=0x0,this[ae(0x236)]=0x0;}['reset'](){const af=ac;this['_viewSession']=null,this[af(0x1e4)]=0x0,this[af(0x229)]=!0x1,this[af(0x223)]=0x0,this['numberOfAds']=0x0,this[af(0x27b)]=0x0,this[af(0x1d5)]=0x0,this[af(0x1b9)]=0x0,this[af(0x21a)]=!0x1,this[af(0x262)]=!0x1,this['resetFlags'](),this[af(0x194)]();}[ac(0x174)](){const ag=ac;this['isPlayerReady']=!0x1,this[ag(0x29a)]=!0x1,this[ag(0x1a6)]=!0x1,this[ag(0x136)]=!0x1,this[ag(0x22c)]=!0x1,this[ag(0x22a)]=!0x1,this[ag(0x131)]=!0x1;}['resetChronos'](){const ah=ac;this[ah(0x23b)]=new j[(ah(0x1a9))](),this[ah(0x264)]=new j[(ah(0x1a9))](),this['timeSincePaused']=new j['default'](),this[ah(0x218)]=new j[(ah(0x1a9))](),this['timeSinceBufferBegin']=new j[(ah(0x1a9))](),this[ah(0x265)]=new j['default'](),this[ah(0x181)]=new j['default'](),this[ah(0x295)]=new j['default'](),this[ah(0x16b)]=new j[(ah(0x1a9))](),this[ah(0x179)]=new j[(ah(0x1a9))](),this[ah(0x1c1)]=new j[(ah(0x1a9))](),this[ah(0x1b1)]=new j[(ah(0x1a9))](),this[ah(0x1e2)]=new j[(ah(0x1a9))](),this[ah(0x1a8)]=new j[(ah(0x1a9))](),this[ah(0x1cd)]={},this[ah(0x2a3)]=new j['default'](),this['bufferElapsedTime']=new j['default']();}[ac(0x1d7)](){return this['_isAd'];}[ac(0x211)](m){const ai=ac;this[ai(0x229)]=m;}[ac(0x151)](m){const aj=ac;this[aj(0x1cd)][m]=new j['default'](),this[aj(0x1cd)][m]['start']();}['removeTimeSinceAttribute'](m){const ak=ac;delete this[ak(0x1cd)][m];}[ac(0x24a)](){const al=ac;if(!this[al(0x1a1)]){let m=new Date()[al(0x19a)](),o=Math['random']()[al(0x1c2)](0x24)[al(0x220)](0x2)+Math[al(0x2ae)]()[al(0x1c2)](0x24)['substring'](0x2);this[al(0x1a1)]=m+'-'+o;}return this[al(0x1a1)];}[ac(0x1b7)](){return this['getViewSession']()+'-'+this['_viewCount'];}['getStateAttributes'](m){const am=ac;m=m||{},this[am(0x1d7)]()?(this['isRequested']&&(m[am(0x244)]=this[am(0x23b)][am(0x1e9)](),m[am(0x17b)]=this[am(0x295)][am(0x1e9)]()),this[am(0x1a6)]&&(m[am(0x1c6)]=this['timeSinceStarted'][am(0x1e9)]()),this[am(0x136)]&&(m[am(0x163)]=this[am(0x238)]['getDeltaTime']()),this[am(0x22a)]&&(m[am(0x22b)]=this['timeSinceBufferBegin']['getDeltaTime']()),this[am(0x22c)]&&(m[am(0x1ad)]=this[am(0x218)][am(0x1e9)]()),this[am(0x21a)]&&(m[am(0x171)]=this['timeSinceAdBreakStart'][am(0x1e9)]()),m[am(0x1bf)]=this[am(0x1bf)]):(this[am(0x29a)]&&(m[am(0x23b)]=this['timeSinceRequested'][am(0x1e9)](),m['timeSinceLastHeartbeat']=this[am(0x295)][am(0x1e9)]()),this['isStarted']&&(m[am(0x264)]=this[am(0x264)][am(0x1e9)]()),this['isPaused']&&(m[am(0x238)]=this['timeSincePaused'][am(0x1e9)]()),this[am(0x22a)]&&(m['timeSinceBufferBegin']=this[am(0x198)]['getDeltaTime']()),this[am(0x22c)]&&(m[am(0x218)]=this[am(0x218)][am(0x1e9)]()),m[am(0x1c1)]=this[am(0x1c1)][am(0x1e9)](),m[am(0x27b)]=this[am(0x27b)]),m[am(0x223)]=this[am(0x223)],this[am(0x1d7)]()||(this[am(0x1a8)]['startTime']>0x0?m['playtimeSinceLastEvent']=this[am(0x1a8)][am(0x1e9)]():m['playtimeSinceLastEvent']=0x0,this[am(0x131)]?this[am(0x1a8)][am(0x21b)]():this[am(0x1a8)][am(0x186)](),this['totalPlaytime']+=m[am(0x1a8)],m[am(0x1d5)]=this['totalPlaytime']);for(const [o,p]of Object[am(0x25a)](this['customTimeSinceAttributes']))m[o]=p[am(0x1e9)]();return m;}[ac(0x178)](m){const an=ac;let o='';return o=m?an(0x287):this[an(0x22c)]?an(0x1f7):this['isPaused']?an(0x1e7):an(0x271),k[an(0x1a9)]['debug'](an(0x2a5)+o),o;}[ac(0x29d)](){const ao=ac;this[ao(0x1e4)]++;}[ac(0x296)](){const ap=ac;return!this[ap(0x18f)]&&(this[ap(0x18f)]=!0x0,!0x0);}[ac(0x16d)](){const aq=ac;return!this[aq(0x29a)]&&(this['isRequested']=!0x0,this[aq(0x1c1)][aq(0x186)](),this[aq(0x23b)][aq(0x21b)](),!0x0);}['goStart'](){const ar=ac;return!(!this[ar(0x29a)]||this['isStarted']||(this[ar(0x1d7)]()?this[ar(0x1bf)]++:this['numberOfVideos']++,this[ar(0x1a6)]=!0x0,this['isPlaying']=!0x0,this[ar(0x264)]['start'](),this[ar(0x1a8)][ar(0x21b)](),0x0));}['goEnd'](){const as=ac;return!!this[as(0x29a)]&&(this[as(0x223)]=0x0,this['resetFlags'](),this[as(0x23b)][as(0x19f)](),this[as(0x264)][as(0x19f)](),this[as(0x1a8)][as(0x19f)](),!0x0);}[ac(0x1d0)](){const at=ac;return!(!this['isStarted']||this[at(0x136)]||(this[at(0x136)]=!0x0,this[at(0x131)]=!0x1,this[at(0x238)][at(0x21b)](),this[at(0x1a8)]['stop'](),this[at(0x1b1)][at(0x186)](),this[at(0x22a)]&&(this[at(0x236)]+=this[at(0x25c)]['getDeltaTime']()),this['elapsedTime'][at(0x21b)](),0x0));}[ac(0x1f4)](){const au=ac;return!(!this[au(0x1a6)]||!this[au(0x136)]||(this['isPaused']=!0x1,this['isPlaying']=!0x0,this['timeSincePaused'][au(0x19f)](),this['timeSinceResumed']['start'](),this[au(0x11d)]?(this['_acc']=this[au(0x2a3)][au(0x1e9)](),this[au(0x11d)]=!0x1):(this['isBuffering']&&this[au(0x25c)][au(0x21b)](),this[au(0x20f)]+=this[au(0x2a3)]['getDeltaTime']()),0x0));}[ac(0x256)](){const av=ac;return!(!this['isRequested']||this['isBuffering']||(this[av(0x22a)]=!0x0,this[av(0x131)]=!0x1,this[av(0x198)][av(0x21b)](),this['bufferElapsedTime']['start'](),0x0));}['goBufferEnd'](){const aw=ac;return!(!this[aw(0x29a)]||!this['isBuffering']||(this['isBuffering']=!0x1,this[aw(0x131)]=!0x0,this[aw(0x198)][aw(0x19f)](),this[aw(0x11d)]?(this['_bufferAcc']=this[aw(0x25c)][aw(0x1e9)](),this[aw(0x11d)]=!0x1):this[aw(0x236)]+=this[aw(0x25c)]['getDeltaTime'](),0x0));}[ac(0x18c)](){const ax=ac;return!(!this[ax(0x1a6)]||this['isSeeking']||(this['isSeeking']=!0x0,this[ax(0x131)]=!0x1,this[ax(0x218)]['start'](),this[ax(0x1e2)][ax(0x186)](),0x0));}[ac(0x289)](){const ay=ac;return!(!this[ay(0x1a6)]||!this[ay(0x22c)]||(this[ay(0x22c)]=!0x1,this[ay(0x131)]=!0x0,this[ay(0x218)][ay(0x19f)](),this[ay(0x1e2)][ay(0x21b)](),0x0));}[ac(0x1aa)](){const az=ac;return!this['isAdBreak']&&(this[az(0x21a)]=!0x0,this[az(0x265)][az(0x21b)](),!0x0);}[ac(0x164)](){const aA=ac;return!!this['isAdBreak']&&(this[aA(0x29a)]=!0x1,this['isAdBreak']=!0x1,this[aA(0x1b9)]=this['timeSinceAdBreakStart']['getDeltaTime'](),this[aA(0x265)][aA(0x19f)](),!0x0);}[ac(0x12b)](){const aB=ac;this[aB(0x181)][aB(0x21b)]();}[ac(0x1ed)](){const aC=ac;this[aC(0x295)]['start']();}[ac(0x1bd)](){const aD=ac;this['timeSinceLastRenditionChange'][aD(0x21b)]();}[ac(0x29b)](){const aE=ac;this[aE(0x179)][aE(0x21b)]();}[ac(0x17a)](){const aF=ac;this['isError']=!0x0,this[aF(0x223)]++;}[ac(0x286)](){const aG=ac;this[aG(0x1c1)][aG(0x21b)]();}};},0x14a:f=>{const aH=a0b;f[aH(0x15c)]=JSON[aH(0x144)]('{\x22name\x22:\x22@newrelic/video-core\x22,\x22version\x22:\x223.1.1\x22,\x22description\x22:\x22New\x20Relic\x20video\x20tracking\x20core\x20library\x22,\x22main\x22:\x22./dist/cjs/index.js\x22,\x22module\x22:\x22./dist/esm/index.js\x22,\x22scripts\x22:{\x22build\x22:\x22webpack\x20--mode\x20production\x22,\x22build:dev\x22:\x22webpack\x20--mode\x20development\x22,\x22watch\x22:\x22webpack\x20--mode\x20production\x20--progress\x20--color\x20--watch\x22,\x22watch:dev\x22:\x22webpack\x20--progress\x20--color\x20--watch\x22,\x22clean\x22:\x22rm\x20-rf\x20dist\x20coverage\x20doc\x22,\x22test\x22:\x22nyc\x20--reporter=html\x20--reporter=text\x20mocha\x20--require\x20@babel/register\x22,\x22doc\x22:\x22jsdoc\x20-c\x20jsdoc.json\x20-d\x20documentation\x22,\x22deploy\x22:\x22node\x20scripts/deploy.js\x22,\x22third-party-updates\x22:\x22oss\x20third-party\x20manifest\x20--includeOptDeps\x20&&\x20oss\x20third-party\x20notices\x20--includeOptDeps\x20&&\x20git\x20add\x20THIRD_PARTY_NOTICES.md\x20third_party_manifest.json\x22},\x22repository\x22:{\x22type\x22:\x22git\x22,\x22url\x22:\x22https://github.com/newrelic/video-core-js\x22},\x22author\x22:\x22Jordi\x20Aguilar\x22,\x22contributors\x22:[\x22Andreu\x20Santarén\x20Llop\x22],\x22license\x22:\x22Apache-2.0\x22,\x22devDependencies\x22:{\x22@babel/core\x22:\x22^7.24.5\x22,\x22@babel/plugin-transform-modules-commonjs\x22:\x22^7.24.1\x22,\x22@newrelic/newrelic-oss-cli\x22:\x22^0.1.2\x22,\x22@babel/preset-env\x22:\x22^7.24.5\x22,\x22@babel/register\x22:\x22^7.24.6\x22,\x22aws-sdk\x22:\x22^2.920.0\x22,\x22babel-loader\x22:\x22^9.1.3\x22,\x22chai\x22:\x22^4.3.4\x22,\x22diff\x22:\x22^5.0.0\x22,\x22jsdom\x22:\x22^25.0.1\x22,\x22mocha\x22:\x22^10.4.0\x22,\x22nyc\x22:\x22^15.1.0\x22,\x22sinon\x22:\x22^2.4.1\x22,\x22webpack\x22:\x22^5.91.0\x22,\x22webpack-cli\x22:\x22^4.9.2\x22,\x22webpack-obfuscator\x22:\x22^3.5.1\x22},\x22files\x22:[\x22THIRD_PARTY_NOTICES.md\x22,\x22dist\x22,\x22CHANGELOG.md\x22,\x22LICENSE\x22,\x22README.md\x22,\x22!test\x22],\x22publishConfig\x22:{\x22access\x22:\x22public\x22}}');},0x18f:(f,g,j)=>{const aI=a0b;Object[aI(0x219)](g,aI(0x2af),{'value':!0x0}),g[aI(0x1a9)]=void 0x0;var k=p(j(0x90)),m=p(j(0x92));function p(y){const aJ=aI;return y&&y[aJ(0x2af)]?y:{'default':y};}class q{static[aI(0x1e0)](y){const aK=aI;y['on']&&y[aK(0x2ab)]?(v[aK(0x2ac)](y),y['on']('*',x),'function'==typeof y[aK(0x1b3)]&&y[aK(0x1b3)]()):k[aK(0x1a9)][aK(0x231)](aK(0x277),y);}static[aI(0x241)](y){const aL=aI;y[aL(0x270)]('*',x),y['dispose']();let z=v[aL(0x1d4)](y);-0x1!==z&&v['splice'](z,0x1);}static[aI(0x247)](){return v;}static[aI(0x215)](){return u;}static[aI(0x137)](y){u=y;}static[aI(0x1c8)](y,z,A){const aM=aI;null!=q['getBackend']()&&q[aM(0x215)]()instanceof m[aM(0x1a9)]?q[aM(0x215)]()[aM(0x1c8)](y,z,A):aM(0x23d)!=typeof newrelic&&newrelic['recordCustomEvent']?(void 0x0!==A&&(A['timeSinceLoad']=window[aM(0x1da)][aM(0x1e6)]()/0x3e8),newrelic[aM(0x188)](y,{'actionName':z,...A})):w||(k[aM(0x1a9)][aM(0x231)](aM(0x283),'In\x20order\x20to\x20use\x20NewRelic\x20Video\x20you\x20will\x20need\x20New\x20Relic\x20Browser\x20Agent.'),w=!0x0);}static['sendError'](y){const aN=aI;q[aN(0x1c8)](aN(0x11e),y);}}let u,v=[],w=!0x1;function x(y){const aO=aI;let z=function(A){let B={};for(let C in A)null!==A[C]&&void 0x0!==A[C]&&(B[C]=A[C]);return B;}(y[aO(0x25b)]);k[aO(0x1a9)][aO(0x17c)]<=k[aO(0x1a9)]['Levels'][aO(0x133)]?k[aO(0x1a9)]['notice']('Sent',y['type'],z):k[aO(0x1a9)][aO(0x26b)]('Sent',y[aO(0x19b)]),q['send'](y[aO(0x1f0)],y['type'],z);}g[aI(0x1a9)]=q;},0x196:(f,g,h)=>{const aP=a0b;Object[aP(0x219)](g,aP(0x2af),{'value':!0x0}),g['default']=void 0x0;var j=l(h(0x92)),k=l(h(0x90));function l(o){const aQ=aP;return o&&o[aQ(0x2af)]?o:{'default':o};}class m extends j[aP(0x1a9)]{constructor(o,p){const aR=aP;super(),this['_accountId']=o,this[aR(0x234)]=p,this[aR(0x266)]='',this[aR(0x1f6)]=[],this[aR(0x167)]=!0x1,this['_lastTimestamp']=0x0,setInterval(()=>{const aS=aR;this[aS(0x120)](m['Source']['TIMER']);},0x2710);}[aP(0x1c8)](o,p,q){const aT=aP;if(this[aT(0x266)]=o,super['send'](p,q),this[aT(0x1f6)][aT(0x28f)]<0x1f4){(q=this[aT(0x15f)](q))[aT(0x1f0)]=this[aT(0x266)],q[aT(0x249)]=p;let u=Date[aT(0x1e6)]();u>this[aT(0x14b)]?(q[aT(0x1af)]=u,this[aT(0x14b)]=u):(this[aT(0x14b)]++,q['timestamp']=this['_lastTimestamp']),this[aT(0x1f6)][aT(0x2ac)](q);}}['generateAttributes'](o){const aU=aP;o[aU(0x1eb)]=window[aU(0x21d)][aU(0x14e)],o[aU(0x1d8)]=window['location'][aU(0x293)]+window[aU(0x21d)][aU(0x1d9)],o[aU(0x156)]=document[aU(0x18d)];let p='Unknown';-0x1!=navigator['userAgent'][aU(0x1d4)](aU(0x177))?p=aU(0x278):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x291))?p=aU(0x291):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x125))?p=aU(0x125):navigator[aU(0x21c)][aU(0x140)](/iPhone|iPad|iPod/i)?p=aU(0x23f):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x159))?p=aU(0x159):-0x1!=navigator[aU(0x21c)]['indexOf'](aU(0x28b))&&(p=aU(0x1dd)),o[aU(0x240)]=p;let q=aU(0x209);if(-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x203))?q=aU(0x203):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x1db))?q=aU(0x1db):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x202))?q='IE':-0x1!=navigator['userAgent'][aU(0x1d4)](aU(0x13c))?q='Microsoft\x20Edge':-0x1!=navigator[aU(0x21c)][aU(0x1d4)]('Safari')?q=aU(0x15e):-0x1!=navigator[aU(0x21c)][aU(0x1d4)](aU(0x1b8))&&(q=aU(0x1b8)),o[aU(0x24d)]=q,!o[aU(0x147)]){let u=aU(0x209);u=navigator['userAgent'][aU(0x140)](/Tablet|iPad/i)?aU(0x217):navigator['userAgent'][aU(0x140)](/Mobile|Windows Phone|Lumia|Android|webOS|iPhone|iPod|Blackberry|PlayBook|BB10|Opera Mini|\bCrMo\/|Opera Mobi/i)?aU(0x26c):null!=window[aU(0x155)]?aU(0x165):aU(0x129),o[aU(0x147)]=u;}return o;}[aP(0x120)](o){const aV=aP;o==m['Source']['TIMER']&&this[aV(0x167)]?k['default'][aV(0x154)](aV(0x221)):(this[aV(0x167)]=!0x0,this[aV(0x1f6)][aV(0x28f)]>0x0?(k[aV(0x1a9)][aV(0x154)](aV(0x13b),this[aV(0x1f6)]),this[aV(0x298)](this[aV(0x1f6)][aV(0x232)]())):this[aV(0x167)]=!0x1);}[aP(0x298)](o){const aW=aP,p={'method':aW(0x1ce),'headers':{'Content-Type':aW(0x1d1),'X-Insert-Key':this[aW(0x234)]},'body':JSON[aW(0x20a)](o)},q=aW(0x1f3)+this[aW(0x150)]+'/events';fetch(q,p)[aW(0x1cf)](u=>u[aW(0x185)]())[aW(0x1cf)](u=>{this['insightsRequestResponse'](u);})[aW(0x210)](u=>{const aX=aW;k[aX(0x1a9)][aX(0x231)](aX(0x183),u,o),this['_eventBuffer'][aX(0x2ac)](o),this[aX(0x167)]=!0x1;});}[aP(0x27a)](o){const aY=aP;this[aY(0x120)](m['Source']['FETCH']);}}m['Source']={'TIMER':aP(0x16a),'FETCH':'FETCH'},g[aP(0x1a9)]=m;},0x1c7:(f,g)=>{const aZ=a0b;Object['defineProperty'](g,'__esModule',{'value':!0x0}),g[aZ(0x1a9)]=void 0x0;class h{constructor(){const b0=aZ;this[b0(0x186)]();}['reset'](){const b1=aZ;this[b1(0x1ff)]=0x0,this['stopTime']=0x0,this[b1(0x162)]=0x0;}['getDeltaTime'](){const b2=aZ;return this['startTime']?this[b2(0x162)]+(new Date()[b2(0x19a)]()-this['startTime']):null;}[aZ(0x21b)](){const b3=aZ;this['startTime']=new Date()[b3(0x19a)](),this['stopTime']=0x0;}[aZ(0x19f)](){const b4=aZ;return this[b4(0x261)]=new Date()[b4(0x19a)](),this[b4(0x1e9)]();}[aZ(0x1be)](){const b5=aZ;var j=new h();return j['startTime']=this[b5(0x1ff)],j['stopTime']=this[b5(0x261)],j['offset']=this[b5(0x162)],j;}}g[aZ(0x1a9)]=h;},0x238:(f,g)=>{const b6=a0b;Object[b6(0x219)](g,b6(0x2af),{'value':!0x0}),g[b6(0x1a9)]=void 0x0,g['default']=class{['on'](h,j){const b7=b6;if(this[b7(0x267)]=this[b7(0x267)]||{},b7(0x122)==typeof j)return this[b7(0x267)][h]=this[b7(0x267)][h]||[],this[b7(0x267)][h]['push'](j),this;}['off'](h,j){const b8=b6;if(this[b8(0x267)]=this[b8(0x267)]||{},this[b8(0x267)][h]){var k=this['_listeners'][h]['indexOf'](j);-0x1!==k&&this[b8(0x267)][h][b8(0x196)](k,0x1);}return this;}[b6(0x2ab)](h,j,k){const b9=b6;return this[b9(0x267)]=this[b9(0x267)]||{},k=k||{},Array[b9(0x127)](this[b9(0x267)][j])&&this['_listeners'][j][b9(0x20e)](l=>{const ba=b9;l[ba(0x143)](this,{'eventType':h,'type':j,'data':k,'target':this});}),Array[b9(0x127)](this['_listeners']['*'])&&this['_listeners']['*'][b9(0x20e)](l=>{const bb=b9;l[bb(0x143)](this,{'eventType':h,'type':j,'data':k,'target':this});}),this;}};},0x319:(f,g,j)=>{const bc=a0b;Object[bc(0x219)](g,bc(0x2af),{'value':!0x0}),g[bc(0x1a9)]=void 0x0;var k=q(j(0x90)),l=q(j(0x12e)),m=q(j(0x148)),p=q(j(0x14a));function q(w){const bd=bc;return w&&w[bd(0x2af)]?w:{'default':w};}class u extends l[bc(0x1a9)]{constructor(w,x){const be=bc;super(),this[be(0x1a3)]=new m[(be(0x1a9))](),this[be(0x252)]=null,this['_lastBufferType']=null,this[be(0x1f1)]=null,x=x||{},this[be(0x22d)](x),w&&this[be(0x11b)](w,x[be(0x1a5)]),k[be(0x1a9)]['notice'](be(0x268)+this[be(0x14d)]()+'\x20v'+this[be(0x2a7)]()+be(0x138));}['setUserId'](w){const bf=bc;this[bf(0x1f1)]=w;}[bc(0x22d)](w){const bg=bc;w&&(w[bg(0x252)]&&this[bg(0x290)](w[bg(0x252)]),bg(0x1ee)==typeof w[bg(0x1d7)]&&this[bg(0x211)](w[bg(0x1d7)]),l[bg(0x1a9)][bg(0x273)][bg(0x22d)]['apply'](this,arguments));}[bc(0x11b)](w,x){const bh=bc;(this['player']||this[bh(0x1a5)])&&this[bh(0x18a)](),bh(0x23d)!=typeof document&&document[bh(0x118)]&&(bh(0x212)==typeof w&&(w=document[bh(0x118)](w)),'string'==typeof x&&(x=document[bh(0x118)](x))),x=x||w,this[bh(0x235)]=w,this['tag']=x,this['registerListeners']();}[bc(0x1d7)](){const bi=bc;return this['state'][bi(0x1d7)]();}[bc(0x211)](w){const bj=bc;this[bj(0x1a3)][bj(0x211)](w);}['setAdsTracker'](w){const bk=bc;this['disposeAdsTracker'](),w&&(this[bk(0x252)]=w,this[bk(0x252)][bk(0x211)](!0x0),this[bk(0x252)][bk(0x173)]=this,this['adsTracker']['on']('*',v[bk(0x20d)](this)));}[bc(0x24c)](){const bl=bc;this[bl(0x252)]&&(this[bl(0x252)]['off']('*',v),this[bl(0x252)][bl(0x18a)]());}[bc(0x18a)](){const bm=bc;this[bm(0x1fc)](),this[bm(0x24c)](),this['unregisterListeners'](),this[bm(0x235)]=null,this[bm(0x1a5)]=null;}['registerListeners'](){}[bc(0x228)](){}['getViewId'](){const bn=bc;return this[bn(0x173)]?this[bn(0x173)][bn(0x1b7)]():this[bn(0x1a3)]['getViewId']();}['getViewSession'](){const bo=bc;return this[bo(0x173)]?this[bo(0x173)]['getViewSession']():this[bo(0x1a3)][bo(0x24a)]();}[bc(0x214)](){return null;}['getTitle'](){return null;}[bc(0x27c)](){return null;}[bc(0x251)](){return null;}[bc(0x12d)](){const bp=bc;if(this[bp(0x1a5)]&&this[bp(0x1a5)]['webkitVideoDecodedByteCount']){let w;if(this[bp(0x126)]){w=this['tag']['webkitVideoDecodedByteCount'];let x=w-this['_lastWebkitBitrate'],y=this[bp(0x19c)]()/0x3e8;w=Math[bp(0x27e)](x/y*0x8);}return this[bp(0x126)]=this[bp(0x1a5)][bp(0x216)],w||null;}}['getRenditionName'](){return null;}[bc(0x1ca)](){return null;}[bc(0x2a4)](w){const bq=bc;let x,y=this['getRenditionBitrate']();return this[bq(0x1d7)]()?(x=this[bq(0x14c)],w&&(this[bq(0x14c)]=y)):(x=this[bq(0x124)],w&&(this['_lastRendition']=y)),y&&x?y>x?'up':y<x?bq(0x1a4):null:null;}[bc(0x1f5)](){const br=bc;return this['tag']?this['tag'][br(0x168)]:null;}[bc(0x25f)](){const bs=bc;return this['tag']?this['tag'][bs(0x20b)]:null;}[bc(0x1b5)](){const bt=bc;return this[bt(0x1a5)]?this[bt(0x1a5)][bt(0x279)]:null;}[bc(0x1cb)](){const bu=bc;return this[bu(0x1a5)]?this['tag'][bu(0x201)]:null;}[bc(0x205)](){return null;}[bc(0x24b)](){const bv=bc;return this[bv(0x1a5)]?this[bv(0x1a5)][bv(0x1de)]:null;}['getPlayrate'](){const bw=bc;return this[bw(0x1a5)]?this[bw(0x1a5)]['playbackRate']:null;}[bc(0x1dc)](){const bx=bc;return this[bx(0x1a5)]?this[bx(0x1a5)][bx(0x2a6)]:null;}['isFullscreen'](){return null;}[bc(0x1e8)](){return null;}[bc(0x299)](){const by=bc;return this[by(0x14d)]();}[bc(0x227)](){const bz=bc;return p[bz(0x1a9)]['version'];}[bc(0x24e)](){return null;}[bc(0x169)](){const bA=bc;return this[bA(0x1a5)]?this[bA(0x1a5)][bA(0x1ab)]:null;}['getPreload'](){const bB=bc;return this[bB(0x1a5)]?this['tag'][bB(0x1f8)]:null;}[bc(0x1ae)](){return null;}['getAdPosition'](){const bC=bc;return this['parentTracker']?this[bC(0x173)][bC(0x1a3)][bC(0x1a6)]?'mid':bC(0x281):null;}[bc(0x2a1)](){return null;}[bc(0x1b6)](){return null;}[bc(0x2b0)](){return null;}[bc(0x1ea)](){return null;}['getInstrumentationVersion'](){return null;}[bc(0x225)](w,x){const bD=bc;if(void 0x0===(w=l[bD(0x1a9)]['prototype'][bD(0x225)][bD(0x19e)](this,arguments))[bD(0x1d7)]&&(w['isAd']=this['isAd']()),w[bD(0x1b4)]=this[bD(0x24a)](),w['viewId']=this[bD(0x1b7)](),w['playerName']=this[bD(0x299)](),w['playerVersion']=this['getPlayerVersion'](),w['instrumentation.provider']=this[bD(0x2b0)](),w[bD(0x280)]=this[bD(0x1ea)](),w[bD(0x16e)]=this[bD(0x263)](),w[bD(0x15b)]=this[bD(0x1f1)],w[bD(0x12c)]='Browser',bD(0x1df)===x)return w;try{w[bD(0x1eb)]=window[bD(0x21d)][bD(0x14e)];}catch(y){}this[bD(0x1d7)]()?(w['adId']=this[bD(0x214)](),w[bD(0x28a)]=this[bD(0x23e)](),w[bD(0x237)]=this[bD(0x24b)](),w[bD(0x119)]=this[bD(0x1e8)](),w['adBitrate']=this['getBitrate']()||this[bD(0x12d)]()||this[bD(0x1ca)](),w[bD(0x207)]=this[bD(0x2a8)](),w['adRenditionBitrate']=this[bD(0x1ca)](),w[bD(0x170)]=this['getRenditionHeight'](),w[bD(0x1c7)]=this[bD(0x25f)](),w['adDuration']=this[bD(0x1b5)](),w[bD(0x141)]=this[bD(0x1cb)](),w['adLanguage']=this[bD(0x205)](),w[bD(0x176)]=this[bD(0x1dc)](),w['adFps']=this[bD(0x24e)](),w[bD(0x139)]=this[bD(0x28e)](),w[bD(0x1fd)]=this[bD(0x1b6)](),w[bD(0x13f)]=this['getAdPartner']()):(w['contentId']=this[bD(0x214)](),w[bD(0x1a0)]=this[bD(0x23e)](),w['contentSrc']=this[bD(0x24b)](),w[bD(0x1c0)]=this['getCdn'](),w[bD(0x25d)]=this[bD(0x1cb)](),w[bD(0x148)]=this[bD(0x27c)](),w[bD(0x24f)]=this[bD(0x251)]()||this['getWebkitBitrate']()||this[bD(0x1ca)](),w['contentRenditionName']=this[bD(0x2a8)](),w[bD(0x17e)]=this[bD(0x1ca)](),w[bD(0x14f)]=this['getRenditionHeight'](),w[bD(0x197)]=this[bD(0x25f)](),w[bD(0x20c)]=this[bD(0x1b5)](),w[bD(0x26e)]=this[bD(0x205)](),w[bD(0x222)]=this[bD(0x11c)](),w['contentIsFullscreen']=this['isFullscreen'](),w['contentIsMuted']=this['isMuted'](),w[bD(0x21e)]=this['isAutoplayed'](),w['contentPreload']=this[bD(0x208)](),w[bD(0x146)]=this[bD(0x24e)](),null!=this[bD(0x252)]&&this['adsTracker'][bD(0x1a3)][bD(0x1b9)]>0x0&&(w[bD(0x1b9)]=this['adsTracker'][bD(0x1a3)][bD(0x1b9)])),this[bD(0x1a3)][bD(0x22e)](w);for(let z in this[bD(0x134)])w[z]=this['customData'][z];return w;}[bc(0x1e3)](w,x,y){const bE=bc;y=y||{},this[bE(0x1d3)](w,y),this['state'][bE(0x151)](x);}[bc(0x250)](w){const bF=bc;this[bF(0x1a3)][bF(0x296)]()&&(w=w||{},this['sendVideoAction'](u['Events'][bF(0x26f)],w));}['sendRequest'](w){const bG=bc;if(this['state'][bG(0x16d)]()){let x;this[bG(0x1d7)]()?(x=u[bG(0x1c3)]['AD_REQUEST'],this[bG(0x13e)](x,w)):(x=u[bG(0x1c3)][bG(0x11a)],this[bG(0x213)](x,w));}}[bc(0x153)](w){const bH=bc;if(this[bH(0x1a3)][bH(0x257)]()){let x;this[bH(0x1d7)]()?(x=u[bH(0x1c3)][bH(0x187)],this[bH(0x173)]&&(this[bH(0x173)]['state'][bH(0x131)]=!0x1),this[bH(0x13e)](x,w)):(x=u[bH(0x1c3)][bH(0x204)],this[bH(0x213)](x,w)),this['startHeartbeat'](),this[bH(0x1a3)][bH(0x1ed)]();}}['sendEnd'](w){const bI=bc;if(this[bI(0x1a3)]['goEnd']()){let x;w=w||{},this[bI(0x1d7)]()?(x=u[bI(0x1c3)][bI(0x19d)],w[bI(0x244)]=this['state'][bI(0x23b)][bI(0x1e9)](),w[bI(0x1c6)]=this[bI(0x1a3)][bI(0x264)][bI(0x1e9)](),this[bI(0x173)]&&(this[bI(0x173)][bI(0x1a3)][bI(0x131)]=!0x0)):(x=u['Events']['CONTENT_END'],w[bI(0x23b)]=this[bI(0x1a3)][bI(0x23b)]['getDeltaTime'](),w[bI(0x264)]=this[bI(0x1a3)][bI(0x264)][bI(0x1e9)]()),this[bI(0x1fc)](),this[bI(0x1d7)]()?this[bI(0x13e)](x,w):this[bI(0x213)](x,w),this[bI(0x173)]&&this[bI(0x1d7)]()&&this['parentTracker'][bI(0x1a3)]['goLastAd'](),this[bI(0x1a3)]['goViewCountUp'](),this[bI(0x1a3)][bI(0x1d5)]=0x0;}}[bc(0x1fb)](w){const bJ=bc;if(this['state'][bJ(0x1d0)]()){let x=this[bJ(0x1d7)]()?u[bJ(0x1c3)][bJ(0x29f)]:u[bJ(0x1c3)][bJ(0x29e)];this[bJ(0x1d7)]()?this['sendVideoAdAction'](x,w):this[bJ(0x213)](x,w);}}[bc(0x12f)](w){const bK=bc;if(this[bK(0x1a3)][bK(0x1f4)]()){let x;w=w||{},this[bK(0x1d7)]()?(x=u[bK(0x1c3)]['AD_RESUME'],w[bK(0x163)]=this[bK(0x1a3)][bK(0x238)]['getDeltaTime']()):(x=u[bK(0x1c3)][bK(0x130)],w[bK(0x238)]=this[bK(0x1a3)]['timeSincePaused'][bK(0x1e9)]()),this[bK(0x1d7)]()?this[bK(0x13e)](x,w):this[bK(0x213)](x,w);}}[bc(0x192)](w){const bL=bc;if(this['state'][bL(0x256)]()){let x;w=w||{},x=this['isAd']()?u[bL(0x1c3)]['AD_BUFFER_START']:u[bL(0x1c3)]['CONTENT_BUFFER_START'],w=this[bL(0x158)](w),this[bL(0x226)]=w[bL(0x22f)],this['isAd']()?this[bL(0x13e)](x,w):this[bL(0x213)](x,w);}}['sendBufferEnd'](w){const bM=bc;if(this[bM(0x1a3)][bM(0x1e1)]()){let x;w=w||{},this[bM(0x1d7)]()?(x=u['Events'][bM(0x1c5)],w[bM(0x22b)]=this[bM(0x1a3)]['timeSinceBufferBegin'][bM(0x1e9)]()):(x=u[bM(0x1c3)][bM(0x26d)],w[bM(0x198)]=this[bM(0x1a3)][bM(0x198)]['getDeltaTime']()),w=this['buildBufferAttributes'](w),null!=this[bM(0x226)]&&(w[bM(0x22f)]=this['_lastBufferType']),this[bM(0x1d7)]()?this[bM(0x13e)](x,w):this[bM(0x213)](x,w),this[bM(0x1a3)]['initialBufferingHappened']=!0x0;}}[bc(0x158)](w){const bN=bc;return null==w[bN(0x264)]||w['timeSinceStarted']<0x64?w['isInitialBuffering']=!this[bN(0x1a3)][bN(0x262)]:w[bN(0x190)]=!0x1,w[bN(0x22f)]=this[bN(0x1a3)]['calculateBufferType'](w[bN(0x190)]),w[bN(0x1b1)]=this[bN(0x1a3)]['timeSinceResumed'][bN(0x1e9)](),w['timeSinceSeekEnd']=this['state'][bN(0x1e2)]['getDeltaTime'](),w;}[bc(0x189)](w){const bO=bc;if(this[bO(0x1a3)][bO(0x18c)]()){let x;x=this['isAd']()?u[bO(0x1c3)][bO(0x27f)]:u['Events']['CONTENT_SEEK_START'],this[bO(0x1d7)]()?this[bO(0x13e)](x,w):this['sendVideoAction'](x,w);}}[bc(0x292)](w){const bP=bc;if(this[bP(0x1a3)]['goSeekEnd']()){let x;w=w||{},this[bP(0x1d7)]()?(x=u['Events'][bP(0x248)],w[bP(0x1ad)]=this[bP(0x1a3)][bP(0x218)][bP(0x1e9)]()):(x=u['Events'][bP(0x297)],w[bP(0x218)]=this[bP(0x1a3)][bP(0x218)][bP(0x1e9)]()),this[bP(0x1d7)]()?this[bP(0x13e)](x,w):this['sendVideoAction'](x,w);}}['sendDownload'](w){const bQ=bc;(w=w||{})[bQ(0x1a3)]||k['default'][bQ(0x27d)](bQ(0x1d2)),this[bQ(0x213)](u[bQ(0x1c3)][bQ(0x23a)],w),this[bQ(0x1a3)]['goDownload']();}[bc(0x285)](w){const bR=bc;(w=w||{})[bR(0x1d7)]=this[bR(0x1d7)](),this[bR(0x1a3)][bR(0x17a)]();let x=this[bR(0x1d7)]()?u[bR(0x1c3)][bR(0x23c)]:u[bR(0x1c3)]['CONTENT_ERROR'];this[bR(0x161)](x,w);}[bc(0x294)](w){const bS=bc;let x;(w=w||{})[bS(0x16b)]=this[bS(0x1a3)][bS(0x16b)][bS(0x1e9)](),w[bS(0x157)]=this[bS(0x2a4)](!0x0),x=this[bS(0x1d7)]()?u[bS(0x1c3)][bS(0x13a)]:u[bS(0x1c3)][bS(0x21f)],this['isAd']()?this[bS(0x13e)](x,w):this[bS(0x213)](x,w),this[bS(0x1a3)]['goRenditionChange']();}[bc(0x12a)](w){const bT=bc;if(this[bT(0x1a3)][bT(0x29a)]){let x,y=this[bT(0x19c)]();this[bT(0x1a3)][bT(0x11d)]=!0x0,y=this[bT(0x254)](y),this['isAd']()?(x=u[bT(0x1c3)][bT(0x2aa)],'bitmovin-ads'===this[bT(0x299)]()?this[bT(0x13e)](x,w):this['sendVideoAdAction'](x,{'elapsedTime':y,...w})):(x=u[bT(0x1c3)][bT(0x255)],this[bT(0x213)](x,{'elapsedTime':y,...w})),this[bT(0x1a3)][bT(0x1ed)]();}}[bc(0x254)](w){const bU=bc;return this[bU(0x1a3)][bU(0x20f)]&&(w-=this['state'][bU(0x20f)],this[bU(0x1a3)][bU(0x20f)]=0x0),this[bU(0x1a3)][bU(0x136)]&&((w-=this[bU(0x1a3)][bU(0x2a3)]['getDeltaTime']())<0xa&&(w=0x0),this[bU(0x1a3)]['elapsedTime'][bU(0x21b)]()),this[bU(0x1a3)][bU(0x236)]?(w-=this[bU(0x1a3)]['_bufferAcc'],this[bU(0x1a3)]['_bufferAcc']=0x0):this['state'][bU(0x22a)]&&((w-=this[bU(0x1a3)][bU(0x25c)][bU(0x1e9)]())<0x5&&(w=0x0),this[bU(0x1a3)]['bufferElapsedTime'][bU(0x21b)]()),Math[bU(0x15a)](0x0,w);}[bc(0x2a0)](w){const bV=bc;this['isAd']()&&this[bV(0x1a3)][bV(0x1aa)]()&&(this['state'][bV(0x1b9)]=0x0,this[bV(0x173)]&&(this[bV(0x173)][bV(0x1a3)]['isPlaying']=!0x1),this[bV(0x13e)](u[bV(0x1c3)][bV(0x242)],w));}[bc(0x25e)](w){const bW=bc;this[bW(0x1d7)]()&&this[bW(0x1a3)][bW(0x164)]()&&((w=w||{})[bW(0x171)]=this['state']['timeSinceAdBreakStart'][bW(0x1e9)](),this['sendVideoAdAction'](u[bW(0x1c3)][bW(0x13d)],w),this['parentTracker']&&(this['parentTracker'][bW(0x1a3)]['isPlaying']=!0x0),this[bW(0x1fc)](),this[bW(0x173)]&&this[bW(0x1d7)]()&&this[bW(0x173)][bW(0x1a3)]['goLastAd']());}[bc(0x2b1)](w){const bX=bc;this['isAd']()&&((w=w||{})[bX(0x142)]||k['default']['warn'](bX(0x1bc)),w[bX(0x179)]=this[bX(0x1a3)][bX(0x179)][bX(0x1e9)](),this[bX(0x13e)](u['Events'][bX(0x149)],w),this[bX(0x1a3)]['goAdQuartile']());}['sendAdClick'](w){const bY=bc;this[bY(0x1d7)]()&&((w=w||{})['url']||k[bY(0x1a9)][bY(0x27d)](bY(0x1d6)),this['sendVideoAdAction'](u[bY(0x1c3)][bY(0x195)],w));}}function v(w){const bZ=bc;w['type']!==u[bZ(0x1c3)]['AD_ERROR']?this['sendVideoAdAction'](w[bZ(0x19b)],w[bZ(0x25b)]):this[bZ(0x161)](w['type'],w[bZ(0x25b)]);}u[bc(0x1c3)]={'PLAYER_READY':'PLAYER_READY','DOWNLOAD':bc(0x23a),'ERROR':bc(0x11e),'CONTENT_REQUEST':bc(0x11a),'CONTENT_START':bc(0x204),'CONTENT_END':'CONTENT_END','CONTENT_PAUSE':bc(0x29e),'CONTENT_RESUME':'CONTENT_RESUME','CONTENT_SEEK_START':'CONTENT_SEEK_START','CONTENT_SEEK_END':bc(0x297),'CONTENT_BUFFER_START':bc(0x16c),'CONTENT_BUFFER_END':bc(0x26d),'CONTENT_HEARTBEAT':'CONTENT_HEARTBEAT','CONTENT_RENDITION_CHANGE':bc(0x21f),'CONTENT_ERROR':bc(0x180),'AD_REQUEST':bc(0x274),'AD_START':bc(0x187),'AD_END':'AD_END','AD_PAUSE':bc(0x29f),'AD_RESUME':bc(0x200),'AD_SEEK_START':bc(0x27f),'AD_SEEK_END':bc(0x248),'AD_BUFFER_START':bc(0x1ec),'AD_BUFFER_END':bc(0x1c5),'AD_HEARTBEAT':bc(0x2aa),'AD_RENDITION_CHANGE':bc(0x13a),'AD_ERROR':bc(0x23c),'AD_BREAK_START':bc(0x242),'AD_BREAK_END':bc(0x13d),'AD_QUARTILE':bc(0x149),'AD_CLICK':bc(0x195)},g[bc(0x1a9)]=u;}},b={};function c(f){const c0=a0b;var g=b[f];if(void 0x0!==g)return g['exports'];var h=b[f]={'exports':{}};return a[f](h,h[c0(0x15c)],c),h[c0(0x15c)];}var d={};((()=>{const c1=a0b;var j=d;Object['defineProperty'](j,'__esModule',{'value':!0x0}),j[c1(0x1a9)]=void 0x0;var k=D(c(0x92)),m=D(c(0x196)),p=D(c(0x18f)),q=D(c(0x33)),v=D(c(0x1c7)),w=D(c(0x90)),x=D(c(0x238)),y=D(c(0x12e)),z=D(c(0x319)),B=D(c(0x148)),C=c(0x14a);function D(F){const c2=c1;return F&&F[c2(0x2af)]?F:{'default':F};}const E={'Constants':q[c1(0x1a9)],'Chrono':v[c1(0x1a9)],'Log':w[c1(0x1a9)],'Emitter':x['default'],'Tracker':y['default'],'VideoTracker':z['default'],'VideoTrackerState':B[c1(0x1a9)],'Core':p[c1(0x1a9)],'Backend':k['default'],'NRInsightsBackend':m['default'],'version':C[c1(0x123)]};j[c1(0x1a9)]=E;})()),module['exports'][c3(0x233)]=d;})()));function a0a(){const c4=['exports','exec','Safari','generateAttributes','playing','sendVideoErrorAction','offset','timeSinceAdPaused','goAdBreakEnd','Cast','startHeartbeat','_harvestLocked','videoHeight','isAutoplayed','TIMER','timeSinceLastRenditionChange','CONTENT_BUFFER_START','goRequest','instrumentation.version','Levels','adRenditionHeight','timeSinceAdBreakBegin','VideoCustomAction','parentTracker','resetFlags','6dyuLAd','adIsMuted','Win','calculateBufferType','timeSinceLastAdQuartile','goError','timeSinceLastAdHeartbeat','level','VideoAdAction','contentRenditionBitrate','registerListeners','CONTENT_ERROR','timeSinceLastDownload','base-tracker','Error:','addEventListener','json','reset','AD_START','recordCustomEvent','sendSeekStart','dispose','getDate','goSeekStart','referrer','search','isPlayerReady','isInitialBuffering','SILENT','sendBufferStart','NOTICE','resetChronos','AD_CLICK','splice','contentRenditionWidth','timeSinceBufferBegin','3015540XDPJJb','getTime','type','getHeartbeat','AD_END','apply','stop','contentTitle','_viewSession','slice','state','down','tag','isStarted','VideoAction','playtimeSinceLastEvent','default','goAdBreakStart','autoplay','color:\x20','timeSinceAdSeekBegin','getAdQuartile','timestamp','log','timeSinceResumed','HEARTBEAT','trackerInit','viewSession','getDuration','getAdCreativeId','getViewId','Opera','totalAdPlaytime','heartbeat','videoError','Called\x20sendAdQuartile\x20without\x20{\x20quartile:\x20xxxxx\x20}.','goRenditionChange','clone','numberOfAds','contentCdn','timeSinceLastAd','toString','Events','_heartbeatInterval','AD_BUFFER_END','timeSinceAdStarted','adRenditionWidth','send','abort','getRenditionBitrate','getPlayhead','prefix','customTimeSinceAttributes','POST','then','goPause','application/json','Called\x20sendDownload\x20without\x20{\x20state:\x20xxxxx\x20}.','sendVideoCustomAction','indexOf','totalPlaytime','Called\x20sendAdClick\x20without\x20{\x20url:\x20xxxxx\x20}.','isAd','currentUrl','pathname','performance','Firefox','isMuted','UNIX','currentSrc','customAction','addTracker','goBufferEnd','timeSinceSeekEnd','sendCustom','_viewCount','seeking','now','pause','getCdn','getDeltaTime','getInstrumentationName','pageUrl','AD_BUFFER_START','goHeartbeat','boolean','_actionTable','eventType','_userId','loadeddata','https://insights-collector.newrelic.com/v1/accounts/','goResume','getRenditionHeight','_eventBuffer','seek','preload','323938OVtpWT','2562928oAVQBE','sendPause','stopHeartbeat','adCreativeId','setAttribute','startTime','AD_RESUME','currentTime','MSIE','Chrome','CONTENT_START','getLanguage','1078892WFpcvM','adRenditionName','getPreload','Unknown','stringify','videoWidth','contentDuration','bind','forEach','_acc','catch','setIsAd','string','sendVideoAction','getVideoId','getBackend','webkitVideoDecodedByteCount','Tablet','timeSinceSeekBegin','defineProperty','isAdBreak','start','userAgent','location','contentIsAutoplayed','CONTENT_RENDITION_CHANGE','substring','Harvest\x20still\x20locked,\x20abort','contentPlayrate','numberOfErrors','trackerVersion','getAttributes','_lastBufferType','getPlayerVersion','unregisterListeners','_isAd','isBuffering','timeSinceAdBufferBegin','isSeeking','setOptions','getStateAttributes','bufferType','trackerName','error','pop','nrvideo','_apiKey','player','_bufferAcc','adSrc','timeSincePaused','ACTION_TABLE','DOWNLOAD','timeSinceRequested','AD_ERROR','undefined','getTitle','iOS','userAgentOS','removeTracker','AD_BREAK_START','addEventHandler','timeSinceAdRequested','adError','_attributes','getTrackers','AD_SEEK_END','actionName','getViewSession','getSrc','disposeAdsTracker','userAgentName','getFps','contentBitrate','sendPlayerReady','getBitrate','adsTracker','darkcyan','adjustElapsedTimeForPause','CONTENT_HEARTBEAT','goBufferStart','goStart','coreVersion','mid','entries','data','bufferElapsedTime','contentPlayhead','sendAdBreakEnd','getRenditionWidth','play','stopTime','initialBufferingHappened','getInstrumentationVersion','timeSinceStarted','timeSinceAdBreakStart','_eventType','_listeners','Tracker\x20','seeked','debugCommonVideoEvents:\x20No\x20common\x20listener\x20function\x20found\x20for\x20','notice','Mobile','CONTENT_BUFFER_END','contentLanguage','PLAYER_READY','off','connection','colorful','prototype','AD_REQUEST','ALL','WARNING','Tried\x20to\x20load\x20a\x20non-tracker.','Windows','duration','insightsRequestResponse','numberOfVideos','isLive','warn','round','AD_SEEK_START','instrumentation.name','pre','_createdAt','newrelic.recordCustomEvent()\x20is\x20not\x20available.','Event:\x20','sendError','goLastAd','initial','_trackerReadyChrono','goSeekEnd','adTitle','X11','loadstart','setAttributes','getAdPosition','length','setAdsTracker','Android','sendSeekEnd','origin','sendRenditionChanged','timeSinceLastHeartbeat','goPlayerReady','CONTENT_SEEK_END','pushEventToInsights','getPlayerName','isRequested','goAdQuartile','documentMode','goViewCountUp','CONTENT_PAUSE','AD_PAUSE','sendAdBreakStart','getAdPartner','darkorange','elapsedTime','getRenditionShift','Buffer\x20Type\x20=\x20','muted','getTrackerVersion','getRenditionName','112224gGpuda','AD_HEARTBEAT','emit','push','assign','random','__esModule','getInstrumentationProvider','sendAdQuartile','1154205WJhdTO','getElementById','adCdn','CONTENT_REQUEST','setPlayer','getPlayrate','_hb','ERROR','_actionAdTable','harvestHandler','darkred','function','version','_lastRendition','Mac','_lastWebkitBitrate','isArray','hidden','Desktop','sendHeartbeat','goDownload','src','getWebkitBitrate','includeTime','sendResume','CONTENT_RESUME','isPlaying','buffering','DEBUG','customData','ACTION_AD_TABLE','isPaused','setBackend','\x20is\x20ready.','adPosition','AD_RENDITION_CHANGE','Push\x20events\x20to\x20Insights\x20=\x20','Edge','AD_BREAK_END','sendVideoAdAction','adPartner','match','adPlayhead','quartile','call','parse','9096624vXHLhc','contentFps','deviceType','contentIsLive','AD_QUARTILE','7dFdtFo','_lastTimestamp','_lastAdRendition','getTrackerName','href','contentRenditionHeight','_accountId','setTimeSinceAttribute','stalled','sendStart','debug','cast','referrerUrl','shift','buildBufferAttributes','Linux','max','enduser.id'];a0a=function(){return c4;};return a0a();}
@@ -1,6 +0,0 @@
1
- /*!
2
- * @license Apache-2.0
3
- * @newrelic/video-core 3.1.1
4
- * Copyright New Relic <http://newrelic.com/>
5
- * @author Jordi Aguilar
6
- */