PageSourceSearch

https://www.theverhaegen.com/wp-includes/js/mediaelement/mediaelement-and-player.js?ver=4.2.17

js theverhaegen.com collected 2026-09-26 15:11:38 UTC 265,827 bytes, 8,540 lines download raw bytes

vendor: 80,336 bytes, lines 1-2325
1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(_dereq_,module,exports){
12
13},{}],2:[function(_dereq_,module,exports){
14(function (global){
15var topLevel = typeof global !== 'undefined' ? global :
16    typeof window !== 'undefined' ? window : {}
17var minDoc = _dereq_(1);
18
19var doccy;
20
21if (typeof document !== 'undefined') {
22    doccy = document;
23} else {
24    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
25
26    if (!doccy) {
27        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
28    }
29}
30
31module.exports = doccy;
32
33}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
34},{"1":1}],3:[function(_dereq_,module,exports){
35(function (global){
36var win;
37
38if (typeof window !== "undefined") {
39    win = window;
40} else if (typeof global !== "undefined") {
41    win = global;
42} else if (typeof self !== "undefined"){
43    win = self;
44} else {
45    win = {};
46}
47
48module.exports = win;
49
50}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
51},{}],4:[function(_dereq_,module,exports){
52(function (root) {
53
54  // Store setTimeout reference so promise-polyfill will be unaffected by
55  // other code modifying setTimeout (like sinon.useFakeTimers())
56  var setTimeoutFunc = setTimeout;
57
58  function noop() {}
59  
60  // Polyfill for Function.prototype.bind
61  function bind(fn, thisArg) {
62    return function () {
63      fn.apply(thisArg, arguments);
64    };
65  }
66
67  function Promise(fn) {
68    if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
69    if (typeof fn !== 'function') throw new TypeError('not a function');
70    this._state = 0;
71    this._handled = false;
72    this._value = undefined;
73    this._deferreds = [];
74
75    doResolve(fn, this);
76  }
77
78  function handle(self, deferred) {
79    while (self._state === 3) {
80      self = self._value;
81    }
82    if (self._state === 0) {
83      self._deferreds.push(deferred);
84      return;
85    }
86    self._handled = true;
87    Promise._immediateFn(function () {
88      var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
89      if (cb === null) {
90        (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
91        return;
92      }
93      var ret;
94      try {
95        ret = cb(self._value);
96      } catch (e) {
97        reject(deferred.promise, e);
98        return;
99      }
100      resolve(deferred.promise, ret);
101    });
102  }
103
104  function resolve(self, newValue) {
105    try {
106      // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
107      if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
108      if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
109        var then = newValue.then;
110        if (newValue instanceof Promise) {
111          self._state = 3;
112          self._value = newValue;
113          finale(self);
114          return;
115        } else if (typeof then === 'function') {
116          doResolve(bind(then, newValue), self);
117          return;
118        }
119      }
120      self._state = 1;
121      self._value = newValue;
122      finale(self);
123    } catch (e) {
124      reject(self, e);
125    }
126  }
127
128  function reject(self, newValue) {
129    self._state = 2;
130    self._value = newValue;
131    finale(self);
132  }
133
134  function finale(self) {
135    if (self._state === 2 && self._deferreds.length === 0) {
136      Promise._immediateFn(function() {
137        if (!self._handled) {
138          Promise._unhandledRejectionFn(self._value);
139        }
140      });
141    }
142
143    for (var i = 0, len = self._deferreds.length; i < len; i++) {
144      handle(self, self._deferreds[i]);
145    }
146    self._deferreds = null;
147  }
148
149  function Handler(onFulfilled, onRejected, promise) {
150    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
151    this.onRejected = typeof onRejected === 'function' ? onRejected : null;
152    this.promise = promise;
153  }
154
155  /**
156   * Take a potentially misbehaving resolver function and make sure
157   * onFulfilled and onRejected are only called once.
158   *
159   * Makes no guarantees about asynchrony.
160   */
161  function doResolve(fn, self) {
162    var done = false;
163    try {
164      fn(function (value) {
165        if (done) return;
166        done = true;
167        resolve(self, value);
168      }, function (reason) {
169        if (done) return;
170        done = true;
171        reject(self, reason);
172      });
173    } catch (ex) {
174      if (done) return;
175      done = true;
176      reject(self, ex);
177    }
178  }
179
180  Promise.prototype['catch'] = function (onRejected) {
181    return this.then(null, onRejected);
182  };
183
184  Promise.prototype.then = function (onFulfilled, onRejected) {
185    var prom = new (this.constructor)(noop);
186
187    handle(this, new Handler(onFulfilled, onRejected, prom));
188    return prom;
189  };
190
191  Promise.all = function (arr) {
192    var args = Array.prototype.slice.call(arr);
193
194    return new Promise(function (resolve, reject) {
195      if (args.length === 0) return resolve([]);
196      var remaining = args.length;
197
198      function res(i, val) {
199        try {
200          if (val && (typeof val === 'object' || typeof val === 'function')) {
201            var then = val.then;
202            if (typeof then === 'function') {
203              then.call(val, function (val) {
204                res(i, val);
205              }, reject);
206              return;
207            }
208          }
209          args[i] = val;
210          if (--remaining === 0) {
211            resolve(args);
212          }
213        } catch (ex) {
214          reject(ex);
215        }
216      }
217
218      for (var i = 0; i < args.length; i++) {
219        res(i, args[i]);
220      }
221    });
222  };
223
224  Promise.resolve = function (value) {
225    if (value && typeof value === 'object' && value.constructor === Promise) {
226      return value;
227    }
228
229    return new Promise(function (resolve) {
230      resolve(value);
231    });
232  };
233
234  Promise.reject = function (value) {
235    return new Promise(function (resolve, reject) {
236      reject(value);
237    });
238  };
239
240  Promise.race = function (values) {
241    return new Promise(function (resolve, reject) {
242      for (var i = 0, len = values.length; i < len; i++) {
243        values[i].then(resolve, reject);
244      }
245    });
246  };
247
248  // Use polyfill for setImmediate for performance gains
249  Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
250    function (fn) {
251      setTimeoutFunc(fn, 0);
252    };
253
254  Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
255    if (typeof console !== 'undefined' && console) {
256      console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
257    }
258  };
259
260  /**
261   * Set the immediate function to execute callbacks
262   * @param fn {function} Function to execute
263   * @deprecated
264   */
265  Promise._setImmediateFn = function _setImmediateFn(fn) {
266    Promise._immediateFn = fn;
267  };
268
269  /**
270   * Change the function to execute on unhandled rejection
271   * @param {function} fn Function to execute on unhandled rejection
272   * @deprecated
273   */
274  Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
275    Promise._unhandledRejectionFn = fn;
276  };
277  
278  if (typeof module !== 'undefined' && module.exports) {
279    module.exports = Promise;
280  } else if (!root.Promise) {
281    root.Promise = Promise;
282  }
283
284})(this);
285
286},{}],5:[function(_dereq_,module,exports){
287'use strict';
288
289Object.defineProperty(exports, "__esModule", {
290	value: true
291});
292
293var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
294
295var _mejs = _dereq_(7);
296
297var _mejs2 = _interopRequireDefault(_mejs);
298
299var _en = _dereq_(15);
300
301var _general = _dereq_(27);
302
303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
304
305var i18n = { lang: 'en', en: _en.EN };
306
307i18n.language = function () {
308	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
309		args[_key] = arguments[_key];
310	}
311
312	if (args !== null && args !== undefined && args.length) {
313
314		if (typeof args[0] !== 'string') {
315			throw new TypeError('Language code must be a string value');
316		}
317
318		if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
319			throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
320		}
321
322		i18n.lang = args[0];
323
324		if (i18n[args[0]] === undefined) {
325			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
326			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
327		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
328			i18n[args[0]] = args[1];
329		}
330	}
331
332	return i18n.lang;
333};
334
335i18n.t = function (message) {
336	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
338
339	if (typeof message === 'string' && message.length) {
340
341		var str = void 0,
342		    pluralForm = void 0;
343
344		var language = i18n.language();
345
346		var _plural = function _plural(input, number, form) {
347
348			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
349				return input;
350			}
351
352			var _pluralForms = function () {
353				return [function () {
354					return arguments.length <= 1 ? undefined : arguments[1];
355				}, function () {
356					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
357				}, function () {
358					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
359				}, function () {
360					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
361						return arguments.length <= 1 ? undefined : arguments[1];
362					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
363						return arguments.length <= 2 ? undefined : arguments[2];
364					} else {
365						return arguments.length <= 3 ? undefined : arguments[3];
366					}
367				}, function () {
368					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
369						return arguments.length <= 1 ? undefined : arguments[1];
370					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
371						return arguments.length <= 2 ? undefined : arguments[2];
372					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
373						return arguments.length <= 3 ? undefined : arguments[3];
374					} else {
375						return arguments.length <= 4 ? undefined : arguments[4];
376					}
377				}, function () {
378					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
379						return arguments.length <= 1 ? undefined : arguments[1];
380					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
381						return arguments.length <= 2 ? undefined : arguments[2];
382					} else {
383						return arguments.length <= 3 ? undefined : arguments[3];
384					}
385				}, function () {
386					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
387						return arguments.length <= 1 ? undefined : arguments[1];
388					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
389						return arguments.length <= 2 ? undefined : arguments[2];
390					} else {
391						return [3];
392					}
393				}, function () {
394					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
395						return arguments.length <= 1 ? undefined : arguments[1];
396					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
397						return arguments.length <= 2 ? undefined : arguments[2];
398					} else {
399						return arguments.length <= 3 ? undefined : arguments[3];
400					}
401				}, function () {
402					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
403						return arguments.length <= 1 ? undefined : arguments[1];
404					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
405						return arguments.length <= 2 ? undefined : arguments[2];
406					} else {
407						return arguments.length <= 3 ? undefined : arguments[3];
408					}
409				}, function () {
410					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
411						return arguments.length <= 1 ? undefined : arguments[1];
412					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
413						return arguments.length <= 2 ? undefined : arguments[2];
414					} else {
415						return arguments.length <= 3 ? undefined : arguments[3];
416					}
417				}, function () {
418					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
419						return arguments.length <= 2 ? undefined : arguments[2];
420					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
421						return arguments.length <= 3 ? undefined : arguments[3];
422					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
423						return arguments.length <= 4 ? undefined : arguments[4];
424					} else {
425						return arguments.length <= 1 ? undefined : arguments[1];
426					}
427				}, function () {
428					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
429						return arguments.length <= 1 ? undefined : arguments[1];
430					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
431						return arguments.length <= 2 ? undefined : arguments[2];
432					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
433						return arguments.length <= 3 ? undefined : arguments[3];
434					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
435						return arguments.length <= 4 ? undefined : arguments[4];
436					} else {
437						return arguments.length <= 5 ? undefined : arguments[5];
438					}
439				}, function () {
440					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
441						return arguments.length <= 1 ? undefined : arguments[1];
442					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
443						return arguments.length <= 2 ? undefined : arguments[2];
444					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
445						return arguments.length <= 3 ? undefined : arguments[3];
446					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
447						return arguments.length <= 4 ? undefined : arguments[4];
448					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
449						return arguments.length <= 5 ? undefined : arguments[5];
450					} else {
451						return arguments.length <= 6 ? undefined : arguments[6];
452					}
453				}, function () {
454					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
455						return arguments.length <= 1 ? undefined : arguments[1];
456					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
457						return arguments.length <= 2 ? undefined : arguments[2];
458					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
459						return arguments.length <= 3 ? undefined : arguments[3];
460					} else {
461						return arguments.length <= 4 ? undefined : arguments[4];
462					}
463				}, function () {
464					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
465						return arguments.length <= 1 ? undefined : arguments[1];
466					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
467						return arguments.length <= 2 ? undefined : arguments[2];
468					} else {
469						return arguments.length <= 3 ? undefined : arguments[3];
470					}
471				}, function () {
472					return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
473				}, function () {
474					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
475						return arguments.length <= 1 ? undefined : arguments[1];
476					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
477						return arguments.length <= 2 ? undefined : arguments[2];
478					} else {
479						return arguments.length <= 3 ? undefined : arguments[3];
480					}
481				}, function () {
482					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
483						return arguments.length <= 1 ? undefined : arguments[1];
484					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
485						return arguments.length <= 2 ? undefined : arguments[2];
486					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
487						return arguments.length <= 3 ? undefined : arguments[3];
488					} else {
489						return arguments.length <= 4 ? undefined : arguments[4];
490					}
491				}, function () {
492					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
493				}, function () {
494					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
495						return arguments.length <= 1 ? undefined : arguments[1];
496					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
497						return arguments.length <= 2 ? undefined : arguments[2];
498					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
499						return arguments.length <= 3 ? undefined : arguments[3];
500					} else {
501						return arguments.length <= 4 ? undefined : arguments[4];
502					}
503				}, function () {
504					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
505						return arguments.length <= 1 ? undefined : arguments[1];
506					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
507						return arguments.length <= 2 ? undefined : arguments[2];
508					} else {
509						return arguments.length <= 3 ? undefined : arguments[3];
510					}
511				}];
512			}();
513
514			return _pluralForms[form].apply(null, [number].concat(input));
515		};
516
517		if (i18n[language] !== undefined) {
518			str = i18n[language][message];
519			if (pluralParam !== null && typeof pluralParam === 'number') {
520				pluralForm = i18n[language]['mejs.plural-form'];
521				str = _plural.apply(null, [str, pluralParam, pluralForm]);
522			}
523		}
524
525		if (!str && i18n.en) {
526			str = i18n.en[message];
527			if (pluralParam !== null && typeof pluralParam === 'number') {
528				pluralForm = i18n.en['mejs.plural-form'];
529				str = _plural.apply(null, [str, pluralParam, pluralForm]);
530			}
531		}
532
533		str = str || message;
534
535		if (pluralParam !== null && typeof pluralParam === 'number') {
536			str = str.replace('%1', pluralParam);
537		}
538
539		return (0, _general.escapeHTML)(str);
540	}
541
542	return message;
543};
544
545_mejs2.default.i18n = i18n;
546
547if (typeof mejsL10n !== 'undefined') {
548	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
549}
550
551exports.default = i18n;
552
553},{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){
554'use strict';
555
556Object.defineProperty(exports, "__esModule", {
557	value: true
558});
559
560var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
561
562var _window = _dereq_(3);
563
564var _window2 = _interopRequireDefault(_window);
565
566var _document = _dereq_(2);
567
568var _document2 = _interopRequireDefault(_document);
569
570var _mejs = _dereq_(7);
571
572var _mejs2 = _interopRequireDefault(_mejs);
573
574var _general = _dereq_(27);
575
576var _media2 = _dereq_(28);
577
578var _renderer = _dereq_(8);
579
580var _constants = _dereq_(25);
581
582function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
583
584function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
585
586var MediaElement = function MediaElement(idOrNode, options, sources) {
587	var _this = this;
588
589	_classCallCheck(this, MediaElement);
590
591	var t = this;
592
593	sources = Array.isArray(sources) ? sources : null;
594
595	t.defaults = {
596		renderers: [],
597
598		fakeNodeName: 'mediaelementwrapper',
599
600		pluginPath: 'build/',
601
602		shimScriptAccess: 'sameDomain'
603	};
604
605	options = Object.assign(t.defaults, options);
606
607	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
608
609	var id = idOrNode,
610	    error = false;
611
612	if (typeof idOrNode === 'string') {
613		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
614	} else {
615		t.mediaElement.originalNode = idOrNode;
616		id = idOrNode.id;
617	}
618
619	if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
620		return null;
621	}
622
623	t.mediaElement.options = options;
624	id = id || 'mejs_' + Math.random().toString().slice(2);
625
626	t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
627
628	var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
629	if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
630		t.mediaElement.originalNode.setAttribute('preload', 'none');
631	}
632
633	t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
634
635	t.mediaElement.appendChild(t.mediaElement.originalNode);
636
637	var processURL = function processURL(url, type) {
638		if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
639			var xhr = new XMLHttpRequest();
640			xhr.onreadystatechange = function () {
641				if (this.readyState === 4 && this.status === 200) {
642					var _url = _window2.default.URL || _window2.default.webkitURL,
643					    blobUrl = _url.createObjectURL(this.response);
644					t.mediaElement.originalNode.setAttribute('src', blobUrl);
645					return blobUrl;
646				}
647				return url;
648			};
649			xhr.open('GET', url);
650			xhr.responseType = 'blob';
651			xhr.send();
652		}
653
654		return url;
655	};
656
657	var mediaFiles = void 0;
658
659	if (sources !== null) {
660		mediaFiles = sources;
661	} else if (t.mediaElement.originalNode !== null) {
662
663		mediaFiles = [];
664
665		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
666			case 'iframe':
667				mediaFiles.push({
668					type: '',
669					src: t.mediaElement.originalNode.getAttribute('src')
670				});
671				break;
672			case 'audio':
673			case 'video':
674				var _sources = t.mediaElement.originalNode.children.length,
675				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
676
677				if (nodeSource) {
678					var node = t.mediaElement.originalNode,
679					    type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
680					mediaFiles.push({
681						type: type,
682						src: processURL(nodeSource, type)
683					});
684				}
685
686				for (var i = 0; i < _sources; i++) {
687					var n = t.mediaElement.originalNode.children[i];
688					if (n.tagName.toLowerCase() === 'source') {
689						var src = n.getAttribute('src'),
690						    _type = (0, _media2.formatType)(src, n.getAttribute('type'));
691						mediaFiles.push({ type: _type, src: processURL(src, _type) });
692					}
693				}
694				break;
695		}
696	}
697
698	t.mediaElement.id = id;
699	t.mediaElement.renderers = {};
700	t.mediaElement.events = {};
701	t.mediaElement.promises = [];
702	t.mediaElement.renderer = null;
703	t.mediaElement.rendererName = null;
704
705	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
706
707		var t = _this,
708		    media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
709
710		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
711			t.mediaElement.renderer.pause();
712			if (t.mediaElement.renderer.stop) {
713				t.mediaElement.renderer.stop();
714			}
715			t.mediaElement.renderer.show();
716			t.mediaElement.renderer.setSrc(media);
717			return true;
718		}
719
720		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
721			t.mediaElement.renderer.pause();
722			if (t.mediaElement.renderer.stop) {
723				t.mediaElement.renderer.stop();
724			}
725			t.mediaElement.renderer.hide();
726		}
727
728		var newRenderer = t.mediaElement.renderers[rendererName],
729		    newRendererType = null;
730
731		if (newRenderer !== undefined && newRenderer !== null) {
732			newRenderer.show();
733			newRenderer.setSrc(media);
734			t.mediaElement.renderer = newRenderer;
735			t.mediaElement.rendererName = rendererName;
736			return true;
737		}
738
739		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
740
741		for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
742			var index = rendererArray[_i];
743
744			if (index === rendererName) {
745				var rendererList = _renderer.renderer.renderers;
746				newRendererType = rendererList[index];
747
748				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
749				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
750				newRenderer.name = rendererName;
751
752				t.mediaElement.renderers[newRendererType.name] = newRenderer;
753				t.mediaElement.renderer = newRenderer;
754				t.mediaElement.rendererName = rendererName;
755				newRenderer.show();
756				return true;
757			}
758		}
759
760		return false;
761	};
762
763	t.mediaElement.setSize = function (width, height) {
764		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
765			t.mediaElement.renderer.setSize(width, height);
766		}
767	};
768
769	t.mediaElement.generateError = function (message, urlList) {
770		message = message || '';
771		urlList = Array.isArray(urlList) ? urlList : [];
772		var event = (0, _general.createEvent)('error', t.mediaElement);
773		event.message = message;
774		event.urls = urlList;
775		t.mediaElement.dispatchEvent(event);
776		error = true;
777	};
778
779	var props = _mejs2.default.html5media.properties,
780	    methods = _mejs2.default.html5media.methods,
781	    addProperty = function addProperty(obj, name, onGet, onSet) {
782		var oldValue = obj[name];
783		var getFn = function getFn() {
784			return onGet.apply(obj, [oldValue]);
785		},
786		    setFn = function setFn(newValue) {
787			oldValue = onSet.apply(obj, [newValue]);
788			return oldValue;
789		};
790
791		Object.defineProperty(obj, name, {
792			get: getFn,
793			set: setFn
794		});
795	},
796	    assignGettersSetters = function assignGettersSetters(propName) {
797		if (propName !== 'src') {
798
799			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
800			    getFn = function getFn() {
801				return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
802			},
803			    setFn = function setFn(value) {
804				if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
805					t.mediaElement.renderer['set' + capName](value);
806				}
807			};
808
809			addProperty(t.mediaElement, propName, getFn, setFn);
810			t.mediaElement['get' + capName] = getFn;
811			t.mediaElement['set' + capName] = setFn;
812		}
813	},
814	    getSrc = function getSrc() {
815		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
816	},
817	    setSrc = function setSrc(value) {
818		var mediaFiles = [];
819
820		if (typeof value === 'string') {
821			mediaFiles.push({
822				src: value,
823				type: value ? (0, _media2.getTypeFromFile)(value) : ''
824			});
825		} else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
826			var _src = (0, _media2.absolutizeUrl)(value.src),
827			    _type2 = value.type,
828			    media = Object.assign(value, {
829				src: _src,
830				type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
831			});
832			mediaFiles.push(media);
833		} else if (Array.isArray(value)) {
834			for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
835
836				var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
837				    _type3 = value[_i2].type,
838				    _media = Object.assign(value[_i2], {
839					src: _src2,
840					type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
841				});
842
843				mediaFiles.push(_media);
844			}
845		}
846
847		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
848		    event = void 0;
849
850		if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) {
851			t.mediaElement.pause();
852			event = (0, _general.createEvent)('pause', t.mediaElement);
853			t.mediaElement.dispatchEvent(event);
854		}
855		t.mediaElement.originalNode.src = mediaFiles[0].src || '';
856
857		if (renderInfo === null && mediaFiles[0].src) {
858			t.mediaElement.generateError('No renderer found', mediaFiles);
859			return;
860		}
861
862		var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === '');
863		return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
864	},
865	    triggerAction = function triggerAction(methodName, args) {
866		try {
867			if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) {
868				var response = t.mediaElement.renderer[methodName](args);
869				if (response && typeof response.then === 'function') {
870					response.catch(function () {
871						if (t.mediaElement.paused) {
872							setTimeout(function () {
873								var tmpResponse = t.mediaElement.renderer.play();
874								if (tmpResponse !== undefined) {
875									tmpResponse.catch(function () {
876										if (!t.mediaElement.renderer.paused) {
877											t.mediaElement.renderer.pause();
878										}
879									});
880								}
881							}, 150);
882						}
883					});
884				}
885			} else {
886				t.mediaElement.renderer[methodName](args);
887			}
888		} catch (e) {
889			t.mediaElement.generateError(e, mediaFiles);
890		}
891	},
892	    assignMethods = function assignMethods(methodName) {
893		t.mediaElement[methodName] = function () {
894			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
895				args[_key] = arguments[_key];
896			}
897
898			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
899				if (t.mediaElement.promises.length) {
900					Promise.all(t.mediaElement.promises).then(function () {
901						triggerAction(methodName, args);
902					}).catch(function (e) {
903						t.mediaElement.generateError(e, mediaFiles);
904					});
905				} else {
906					triggerAction(methodName, args);
907				}
908			}
909			return null;
910		};
911	};
912
913	addProperty(t.mediaElement, 'src', getSrc, setSrc);
914	t.mediaElement.getSrc = getSrc;
915	t.mediaElement.setSrc = setSrc;
916
917	for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
918		assignGettersSetters(props[_i3]);
919	}
920
921	for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
922		assignMethods(methods[_i4]);
923	}
924
925	t.mediaElement.addEventListener = function (eventName, callback) {
926		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
927
928		t.mediaElement.events[eventName].push(callback);
929	};
930	t.mediaElement.removeEventListener = function (eventName, callback) {
931		if (!eventName) {
932			t.mediaElement.events = {};
933			return true;
934		}
935
936		var callbacks = t.mediaElement.events[eventName];
937
938		if (!callbacks) {
939			return true;
940		}
941
942		if (!callback) {
943			t.mediaElement.events[eventName] = [];
944			return true;
945		}
946
947		for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
948			if (callbacks[_i5] === callback) {
949				t.mediaElement.events[eventName].splice(_i5, 1);
950				return true;
951			}
952		}
953		return false;
954	};
955
956	t.mediaElement.dispatchEvent = function (event) {
957		var callbacks = t.mediaElement.events[event.type];
958		if (callbacks) {
959			for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
960				callbacks[_i6].apply(null, [event]);
961			}
962		}
963	};
964
965	t.mediaElement.destroy = function () {
966		var mediaElement = t.mediaElement.originalNode.cloneNode(true);
967		var wrapper = t.mediaElement.parentElement;
968		mediaElement.removeAttribute('id');
969		mediaElement.remove();
970		t.mediaElement.remove();
971		wrapper.appendChild(mediaElement);
972	};
973
974	if (mediaFiles.length) {
975		t.mediaElement.src = mediaFiles;
976	}
977
978	if (t.mediaElement.promises.length) {
979		Promise.all(t.mediaElement.promises).then(function () {
980			if (t.mediaElement.options.success) {
981				t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
982			}
983		}).catch(function () {
984			if (error && t.mediaElement.options.error) {
985				t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
986			}
987		});
988	} else {
989		if (t.mediaElement.options.success) {
990			t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
991		}
992
993		if (error && t.mediaElement.options.error) {
994			t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
995		}
996	}
997
998	return t.mediaElement;
999};
1000
1001_window2.default.MediaElement = MediaElement;
1002_mejs2.default.MediaElement = MediaElement;
1003
1004exports.default = MediaElement;
1005
1006},{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
1007'use strict';
1008
1009Object.defineProperty(exports, "__esModule", {
1010	value: true
1011});
1012
1013var _window = _dereq_(3);
1014
1015var _window2 = _interopRequireDefault(_window);
1016
1017function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1018
1019var mejs = {};
1020
1021mejs.version = '4.2.17';
1022
1023mejs.html5media = {
1024	properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1025	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1026
1027	methods: ['load', 'play', 'pause', 'canPlayType'],
1028
1029	events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1030
1031	mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1032};
1033
1034_window2.default.mejs = mejs;
1035
1036exports.default = mejs;
1037
1038},{"3":3}],8:[function(_dereq_,module,exports){
1039'use strict';
1040
1041Object.defineProperty(exports, "__esModule", {
1042	value: true
1043});
1044exports.renderer = undefined;
1045
1046var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1047
1048var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1049
1050var _mejs = _dereq_(7);
1051
1052var _mejs2 = _interopRequireDefault(_mejs);
1053
1054function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1055
1056function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1057
1058var Renderer = function () {
1059	function Renderer() {
1060		_classCallCheck(this, Renderer);
1061
1062		this.renderers = {};
1063		this.order = [];
1064	}
1065
1066	_createClass(Renderer, [{
1067		key: 'add',
1068		value: function add(renderer) {
1069			if (renderer.name === undefined) {
1070				throw new TypeError('renderer must contain at least `name` property');
1071			}
1072
1073			this.renderers[renderer.name] = renderer;
1074			this.order.push(renderer.name);
1075		}
1076	}, {
1077		key: 'select',
1078		value: function select(mediaFiles) {
1079			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1080
1081			var renderersLength = renderers.length;
1082
1083			renderers = renderers.length ? renderers : this.order;
1084
1085			if (!renderersLength) {
1086				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1087				    rendererRanking = function rendererRanking(renderer) {
1088					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1089						if (rendererIndicator[i].test(renderer)) {
1090							return i;
1091						}
1092					}
1093					return rendererIndicator.length;
1094				};
1095
1096				renderers.sort(function (a, b) {
1097					return rendererRanking(a) - rendererRanking(b);
1098				});
1099			}
1100
1101			for (var i = 0, total = renderers.length; i < total; i++) {
1102				var key = renderers[i],
1103				    _renderer = this.renderers[key];
1104
1105				if (_renderer !== null && _renderer !== undefined) {
1106					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1107						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1108							return {
1109								rendererName: _renderer.name,
1110								src: mediaFiles[j].src
1111							};
1112						}
1113					}
1114				}
1115			}
1116
1117			return null;
1118		}
1119	}, {
1120		key: 'order',
1121		set: function set(order) {
1122			if (!Array.isArray(order)) {
1123				throw new TypeError('order must be an array of strings.');
1124			}
1125
1126			this._order = order;
1127		},
1128		get: function get() {
1129			return this._order;
1130		}
1131	}, {
1132		key: 'renderers',
1133		set: function set(renderers) {
1134			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1135				throw new TypeError('renderers must be an array of objects.');
1136			}
1137
1138			this._renderers = renderers;
1139		},
1140		get: function get() {
1141			return this._renderers;
1142		}
1143	}]);
1144
1145	return Renderer;
1146}();
1147
1148var renderer = exports.renderer = new Renderer();
1149
1150_mejs2.default.Renderers = renderer;
1151
1152},{"7":7}],9:[function(_dereq_,module,exports){
1153'use strict';
1154
1155var _window = _dereq_(3);
1156
1157var _window2 = _interopRequireDefault(_window);
1158
1159var _document = _dereq_(2);
1160
1161var _document2 = _interopRequireDefault(_document);
1162
1163var _i18n = _dereq_(5);
1164
1165var _i18n2 = _interopRequireDefault(_i18n);
1166
1167var _player = _dereq_(16);
1168
1169var _player2 = _interopRequireDefault(_player);
1170
1171var _constants = _dereq_(25);
1172
1173var Features = _interopRequireWildcard(_constants);
1174
1175var _general = _dereq_(27);
1176
1177var _dom = _dereq_(26);
1178
1179var _media = _dereq_(28);
1180
1181function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1182
1183function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1184
1185Object.assign(_player.config, {
1186	usePluginFullScreen: true,
1187
1188	fullscreenText: null,
1189
1190	useFakeFullscreen: false
1191});
1192
1193Object.assign(_player2.default.prototype, {
1194	isFullScreen: false,
1195
1196	isNativeFullScreen: false,
1197
1198	isInIframe: false,
1199
1200	isPluginClickThroughCreated: false,
1201
1202	fullscreenMode: '',
1203
1204	containerSizeTimeout: null,
1205
1206	buildfullscreen: function buildfullscreen(player) {
1207		if (!player.isVideo) {
1208			return;
1209		}
1210
1211		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1212
1213		player.detectFullscreenMode();
1214
1215		var t = this,
1216		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1217		    fullscreenBtn = _document2.default.createElement('div');
1218
1219		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1220		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1221		t.addControlElement(fullscreenBtn, 'fullscreen');
1222
1223		fullscreenBtn.addEventListener('click', function () {
1224			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1225
1226			if (isFullScreen) {
1227				player.exitFullScreen();
1228			} else {
1229				player.enterFullScreen();
1230			}
1231		});
1232
1233		player.fullscreenBtn = fullscreenBtn;
1234
1235		t.options.keyActions.push({
1236			keys: [70],
1237			action: function action(player, media, key, event) {
1238				if (!event.ctrlKey) {
1239					if (typeof player.enterFullScreen !== 'undefined') {
1240						if (player.isFullScreen) {
1241							player.exitFullScreen();
1242						} else {
1243							player.enterFullScreen();
1244						}
1245					}
1246				}
1247			}
1248		});
1249
1250		t.exitFullscreenCallback = function (e) {
1251			var key = e.which || e.keyCode || 0;
1252			if (t.options.enableKeyboard && key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1253				player.exitFullScreen();
1254			}
1255		};
1256
1257		t.globalBind('keydown', t.exitFullscreenCallback);
1258
1259		t.normalHeight = 0;
1260		t.normalWidth = 0;
1261
1262		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1263			var fullscreenChanged = function fullscreenChanged() {
1264				if (player.isFullScreen) {
1265					if (Features.isFullScreen()) {
1266						player.isNativeFullScreen = true;
1267
1268						player.setControlsSize();
1269					} else {
1270						player.isNativeFullScreen = false;
1271
1272						player.exitFullScreen();
1273					}
1274				}
1275			};
1276
1277			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1278		}
1279	},
1280	cleanfullscreen: function cleanfullscreen(player) {
1281		player.exitFullScreen();
1282		player.globalUnbind('keydown', player.exitFullscreenCallback);
1283	},
1284	detectFullscreenMode: function detectFullscreenMode() {
1285		var t = this,
1286		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1287
1288		var mode = '';
1289
1290		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1291			mode = 'native-native';
1292		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1293			mode = 'plugin-native';
1294		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1295			mode = 'plugin-click';
1296		}
1297
1298		t.fullscreenMode = mode;
1299		return mode;
1300	},
1301	enterFullScreen: function enterFullScreen() {
1302		var t = this,
1303		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1304		    containerStyles = getComputedStyle(t.getElement(t.container));
1305
1306		if (!t.isVideo) {
1307			return;
1308		}
1309
1310		if (t.options.useFakeFullscreen === false && (Features.IS_IOS || Features.IS_SAFARI) && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1311			t.media.originalNode.webkitEnterFullscreen();
1312			return;
1313		}
1314
1315		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1316		(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1317
1318		t.normalHeight = parseFloat(containerStyles.height);
1319		t.normalWidth = parseFloat(containerStyles.width);
1320
1321		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1322			Features.requestFullScreen(t.getElement(t.container));
1323
1324			if (t.isInIframe) {
1325				setTimeout(function checkFullscreen() {
1326
1327					if (t.isNativeFullScreen) {
1328						var percentErrorMargin = 0.002,
1329						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1330						    screenWidth = screen.width,
1331						    absDiff = Math.abs(screenWidth - windowWidth),
1332						    marginError = screenWidth * percentErrorMargin;
1333
1334						if (absDiff > marginError) {
1335							t.exitFullScreen();
1336						} else {
1337							setTimeout(checkFullscreen, 500);
1338						}
1339					}
1340				}, 1000);
1341			}
1342		}
1343
1344		t.getElement(t.container).style.width = '100%';
1345		t.getElement(t.container).style.height = '100%';
1346
1347		t.containerSizeTimeout = setTimeout(function () {
1348			t.getElement(t.container).style.width = '100%';
1349			t.getElement(t.container).style.height = '100%';
1350			t.setControlsSize();
1351		}, 500);
1352
1353		if (isNative) {
1354			t.node.style.width = '100%';
1355			t.node.style.height = '100%';
1356		} else {
1357			var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1358			    _total = elements.length;
1359			for (var i = 0; i < _total; i++) {
1360				elements[i].style.width = '100%';
1361				elements[i].style.height = '100%';
1362			}
1363		}
1364
1365		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1366			t.media.setSize(screen.width, screen.height);
1367		}
1368
1369		var layers = t.getElement(t.layers).children,
1370		    total = layers.length;
1371		for (var _i = 0; _i < total; _i++) {
1372			layers[_i].style.width = '100%';
1373			layers[_i].style.height = '100%';
1374		}
1375
1376		if (t.fullscreenBtn) {
1377			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1378			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1379		}
1380
1381		t.setControlsSize();
1382		t.isFullScreen = true;
1383
1384		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1385		    captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1386		if (captionText) {
1387			captionText.style.fontSize = zoomFactor * 100 + '%';
1388			captionText.style.lineHeight = 'normal';
1389			t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px';
1390		}
1391		var event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container));
1392		t.getElement(t.container).dispatchEvent(event);
1393	},
1394	exitFullScreen: function exitFullScreen() {
1395		var t = this,
1396		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1397
1398		if (!t.isVideo) {
1399			return;
1400		}
1401
1402		clearTimeout(t.containerSizeTimeout);
1403
1404		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1405			Features.cancelFullScreen();
1406		}
1407
1408		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1409		(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1410
1411		if (t.options.setDimensions) {
1412			t.getElement(t.container).style.width = t.normalWidth + 'px';
1413			t.getElement(t.container).style.height = t.normalHeight + 'px';
1414
1415			if (isNative) {
1416				t.node.style.width = t.normalWidth + 'px';
1417				t.node.style.height = t.normalHeight + 'px';
1418			} else {
1419				var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1420				    _total2 = elements.length;
1421				for (var i = 0; i < _total2; i++) {
1422					elements[i].style.width = t.normalWidth + 'px';
1423					elements[i].style.height = t.normalHeight + 'px';
1424				}
1425			}
1426
1427			if (typeof t.media.setSize === 'function') {
1428				t.media.setSize(t.normalWidth, t.normalHeight);
1429			}
1430
1431			var layers = t.getElement(t.layers).children,
1432			    total = layers.length;
1433			for (var _i2 = 0; _i2 < total; _i2++) {
1434				layers[_i2].style.width = t.normalWidth + 'px';
1435				layers[_i2].style.height = t.normalHeight + 'px';
1436			}
1437		}
1438
1439		if (t.fullscreenBtn) {
1440			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1441			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1442		}
1443
1444		t.setControlsSize();
1445		t.isFullScreen = false;
1446
1447		var captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1448		if (captionText) {
1449			captionText.style.fontSize = '';
1450			captionText.style.lineHeight = '';
1451			t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1452		}
1453		var event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container));
1454		t.getElement(t.container).dispatchEvent(event);
1455	}
1456});
1457
1458},{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){
1459'use strict';
1460
1461var _document = _dereq_(2);
1462
1463var _document2 = _interopRequireDefault(_document);
1464
1465var _player = _dereq_(16);
1466
1467var _player2 = _interopRequireDefault(_player);
1468
1469var _i18n = _dereq_(5);
1470
1471var _i18n2 = _interopRequireDefault(_i18n);
1472
1473var _general = _dereq_(27);
1474
1475var _dom = _dereq_(26);
1476
1477function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1478
1479Object.assign(_player.config, {
1480	playText: null,
1481
1482	pauseText: null
1483});
1484
1485Object.assign(_player2.default.prototype, {
1486	buildplaypause: function buildplaypause(player, controls, layers, media) {
1487		var t = this,
1488		    op = t.options,
1489		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1490		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1491		    play = _document2.default.createElement('div');
1492
1493		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1494		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1495		play.addEventListener('click', function () {
1496			if (t.paused) {
1497				t.play();
1498			} else {
1499				t.pause();
1500			}
1501		});
1502
1503		var playBtn = play.querySelector('button');
1504		t.addControlElement(play, 'playpause');
1505
1506		function togglePlayPause(which) {
1507			if ('play' === which) {
1508				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1509				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1510				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1511				playBtn.setAttribute('title', pauseTitle);
1512				playBtn.setAttribute('aria-label', pauseTitle);
1513			} else {
1514
1515				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1516				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1517				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
1518				playBtn.setAttribute('title', playTitle);
1519				playBtn.setAttribute('aria-label', playTitle);
1520			}
1521		}
1522
1523		togglePlayPause('pse');
1524
1525		media.addEventListener('loadedmetadata', function () {
1526			if (media.rendererName.indexOf('flash') === -1) {
1527				togglePlayPause('pse');
1528			}
1529		});
1530		media.addEventListener('play', function () {
1531			togglePlayPause('play');
1532		});
1533		media.addEventListener('playing', function () {
1534			togglePlayPause('play');
1535		});
1536		media.addEventListener('pause', function () {
1537			togglePlayPause('pse');
1538		});
1539		media.addEventListener('ended', function () {
1540			if (!player.options.loop) {
1541				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1542				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1543				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1544				playBtn.setAttribute('title', playTitle);
1545				playBtn.setAttribute('aria-label', playTitle);
1546			}
1547		});
1548	}
1549});
1550
1551},{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){
1552'use strict';
1553
1554var _document = _dereq_(2);
1555
1556var _document2 = _interopRequireDefault(_document);
1557
1558var _player = _dereq_(16);
1559
1560var _player2 = _interopRequireDefault(_player);
1561
1562var _i18n = _dereq_(5);
1563
1564var _i18n2 = _interopRequireDefault(_i18n);
1565
1566var _constants = _dereq_(25);
1567
1568var _time = _dereq_(30);
1569
1570var _dom = _dereq_(26);
1571
1572function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1573
1574Object.assign(_player.config, {
1575	enableProgressTooltip: true,
1576
1577	useSmoothHover: true,
1578
1579	forceLive: false
1580});
1581
1582Object.assign(_player2.default.prototype, {
1583	buildprogress: function buildprogress(player, controls, layers, media) {
1584
1585		var lastKeyPressTime = 0,
1586		    mouseIsDown = false,
1587		    startedPaused = false;
1588
1589		var t = this,
1590		    autoRewindInitial = player.options.autoRewind,
1591		    tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1592		    rail = _document2.default.createElement('div');
1593
1594		rail.className = t.options.classPrefix + 'time-rail';
1595		rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1596
1597		t.addControlElement(rail, 'progress');
1598
1599		t.options.keyActions.push({
1600			keys: [37, 227],
1601			action: function action(player) {
1602				if (!isNaN(player.duration) && player.duration > 0) {
1603					if (player.isVideo) {
1604						player.showControls();
1605						player.startControlsTimer();
1606					}
1607
1608					var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1609					if (timeSlider) {
1610						timeSlider.focus();
1611					}
1612
1613					var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1614
1615					if (!player.paused) {
1616						player.pause();
1617					}
1618
1619					setTimeout(function () {
1620						player.setCurrentTime(newTime);
1621					}, 0);
1622
1623					setTimeout(function () {
1624						player.play();
1625					}, 0);
1626				}
1627			}
1628		}, {
1629			keys: [39, 228],
1630			action: function action(player) {
1631
1632				if (!isNaN(player.duration) && player.duration > 0) {
1633					if (player.isVideo) {
1634						player.showControls();
1635						player.startControlsTimer();
1636					}
1637
1638					var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1639					if (timeSlider) {
1640						timeSlider.focus();
1641					}
1642
1643					var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1644
1645					if (!player.paused) {
1646						player.pause();
1647					}
1648
1649					setTimeout(function () {
1650						player.setCurrentTime(newTime);
1651					}, 0);
1652
1653					setTimeout(function () {
1654						player.play();
1655					}, 0);
1656				}
1657			}
1658		});
1659
1660		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1661		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1662		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1663		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1664		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1665		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1666		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1667		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1668		t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1669		t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1670		t.newTime = 0;
1671		t.forcedHandlePause = false;
1672		t.setTransformStyle = function (element, value) {
1673			element.style.transform = value;
1674			element.style.webkitTransform = value;
1675			element.style.MozTransform = value;
1676			element.style.msTransform = value;
1677			element.style.OTransform = value;
1678		};
1679
1680		t.buffer.style.display = 'none';
1681
1682		var handleMouseMove = function handleMouseMove(e) {
1683			var totalStyles = getComputedStyle(t.total),
1684			    offsetStyles = (0, _dom.offset)(t.total),
1685			    width = t.total.offsetWidth,
1686			    transform = function () {
1687				if (totalStyles.webkitTransform !== undefined) {
1688					return 'webkitTransform';
1689				} else if (totalStyles.mozTransform !== undefined) {
1690					return 'mozTransform ';
1691				} else if (totalStyles.oTransform !== undefined) {
1692					return 'oTransform';
1693				} else if (totalStyles.msTransform !== undefined) {
1694					return 'msTransform';
1695				} else {
1696					return 'transform';
1697				}
1698			}(),
1699			    cssMatrix = function () {
1700				if ('WebKitCSSMatrix' in window) {
1701					return 'WebKitCSSMatrix';
1702				} else if ('MSCSSMatrix' in window) {
1703					return 'MSCSSMatrix';
1704				} else if ('CSSMatrix' in window) {
1705					return 'CSSMatrix';
1706				}
1707			}();
1708
1709			var percentage = 0,
1710			    leftPos = 0,
1711			    pos = 0,
1712			    x = void 0;
1713
1714			if (e.originalEvent && e.originalEvent.changedTouches) {
1715				x = e.originalEvent.changedTouches[0].pageX;
1716			} else if (e.changedTouches) {
1717				x = e.changedTouches[0].pageX;
1718			} else {
1719				x = e.pageX;
1720			}
1721
1722			if (t.getDuration()) {
1723				if (x < offsetStyles.left) {
1724					x = offsetStyles.left;
1725				} else if (x > width + offsetStyles.left) {
1726					x = width + offsetStyles.left;
1727				}
1728
1729				pos = x - offsetStyles.left;
1730				percentage = pos / width;
1731				t.newTime = percentage * t.getDuration();
1732
1733				if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1734					t.setCurrentRailHandle(t.newTime);
1735					t.updateCurrent(t.newTime);
1736				}
1737
1738				if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1739					if (pos < 0) {
1740						pos = 0;
1741					}
1742					if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1743						var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1744						    handleLocation = matrix.m41,
1745						    hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1746
1747						t.hovered.style.left = handleLocation + 'px';
1748						t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1749						t.hovered.setAttribute('pos', pos);
1750
1751						if (hoverScaleX >= 0) {
1752							(0, _dom.removeClass)(t.hovered, 'negative');
1753						} else {
1754							(0, _dom.addClass)(t.hovered, 'negative');
1755						}
1756					}
1757
1758					if (t.timefloat) {
1759						var half = t.timefloat.offsetWidth / 2,
1760						    offsetContainer = mejs.Utils.offset(t.getElement(t.container)),
1761						    tooltipStyles = getComputedStyle(t.timefloat);
1762
1763						if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1764							leftPos = half;
1765						} else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) {
1766							leftPos = t.total.offsetWidth - half;
1767						} else {
1768							leftPos = pos;
1769						}
1770
1771						if ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) {
1772							leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1773						}
1774
1775						t.timefloat.style.left = leftPos + 'px';
1776						t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat);
1777						t.timefloat.style.display = 'block';
1778					}
1779				}
1780			} else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1781				leftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1782				t.timefloat.style.left = leftPos + 'px';
1783				t.timefloat.style.left = leftPos + 'px';
1784				t.timefloat.style.display = 'block';
1785			}
1786		},
1787		    updateSlider = function updateSlider() {
1788			var seconds = t.getCurrentTime(),
1789			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
1790			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat),
1791			    duration = t.getDuration();
1792
1793			t.slider.setAttribute('role', 'slider');
1794			t.slider.tabIndex = 0;
1795
1796			if (media.paused) {
1797				t.slider.setAttribute('aria-label', timeSliderText);
1798				t.slider.setAttribute('aria-valuemin', 0);
1799				t.slider.setAttribute('aria-valuemax', isNaN(duration) ? 0 : duration);
1800				t.slider.setAttribute('aria-valuenow', seconds);
1801				t.slider.setAttribute('aria-valuetext', time);
1802			} else {
1803				t.slider.removeAttribute('aria-label');
1804				t.slider.removeAttribute('aria-valuemin');
1805				t.slider.removeAttribute('aria-valuemax');
1806				t.slider.removeAttribute('aria-valuenow');
1807				t.slider.removeAttribute('aria-valuetext');
1808			}
1809		},
1810		    restartPlayer = function restartPlayer() {
1811			if (new Date() - lastKeyPressTime >= 1000) {
1812				t.play();
1813			}
1814		},
1815		    handleMouseup = function handleMouseup() {
1816			if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1817				t.setCurrentTime(t.newTime);
1818				t.setCurrentRailHandle(t.newTime);
1819				t.updateCurrent(t.newTime);
1820			}
1821			if (t.forcedHandlePause) {
1822				t.slider.focus();
1823				t.play();
1824			}
1825			t.forcedHandlePause = false;
1826		};
1827
1828		t.slider.addEventListener('focus', function () {
1829			player.options.autoRewind = false;
1830		});
1831		t.slider.addEventListener('blur', function () {
1832			player.options.autoRewind = autoRewindInitial;
1833		});
1834		t.slider.addEventListener('keydown', function (e) {
1835			if (new Date() - lastKeyPressTime >= 1000) {
1836				startedPaused = t.paused;
1837			}
1838
1839			if (t.options.enableKeyboard && t.options.keyActions.length) {
1840
1841				var keyCode = e.which || e.keyCode || 0,
1842				    duration = t.getDuration(),
1843				    seekForward = player.options.defaultSeekForwardInterval(media),
1844				    seekBackward = player.options.defaultSeekBackwardInterval(media);
1845
1846				var seekTime = t.getCurrentTime();
1847				var volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
1848
1849				if (keyCode === 38 || keyCode === 40) {
1850					if (volume) {
1851						volume.style.display = 'block';
1852					}
1853					if (t.isVideo) {
1854						t.showControls();
1855						t.startControlsTimer();
1856					}
1857
1858					var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1859					    mutePlayer = newVolume <= 0;
1860					t.setVolume(newVolume);
1861					t.setMuted(mutePlayer);
1862					return;
1863				} else {
1864					if (volume) {
1865						volume.style.display = 'none';
1866					}
1867				}
1868
1869				switch (keyCode) {
1870					case 37:
1871						if (t.getDuration() !== Infinity) {
1872							seekTime -= seekBackward;
1873						}
1874						break;
1875					case 39:
1876						if (t.getDuration() !== Infinity) {
1877							seekTime += seekForward;
1878						}
1879						break;
1880					case 36:
1881						seekTime = 0;
1882						break;
1883					case 35:
1884						seekTime = duration;
1885						break;
1886					case 13:
1887					case 32:
1888						if (_constants.IS_FIREFOX) {
1889							if (t.paused) {
1890								t.play();
1891							} else {
1892								t.pause();
1893							}
1894						}
1895						return;
1896					default:
1897						return;
1898				}
1899
1900				seekTime = seekTime < 0 || isNaN(seekTime) ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1901				lastKeyPressTime = new Date();
1902				if (!startedPaused) {
1903					player.pause();
1904				}
1905
1906				setTimeout(function () {
1907					t.setCurrentTime(seekTime);
1908				}, 0);
1909
1910				if (seekTime < t.getDuration() && !startedPaused) {
1911					setTimeout(restartPlayer, 1100);
1912				}
1913
1914				player.showControls();
1915
1916				e.preventDefault();
1917				e.stopPropagation();
1918			}
1919		});
1920
1921		var events = ['mousedown', 'touchstart'];
1922
1923		t.slider.addEventListener('dragstart', function () {
1924			return false;
1925		});
1926
1927		for (var i = 0, total = events.length; i < total; i++) {
1928			t.slider.addEventListener(events[i], function (e) {
1929				t.forcedHandlePause = false;
1930				if (t.getDuration() !== Infinity) {
1931					if (e.which === 1 || e.which === 0) {
1932						if (!t.paused) {
1933							t.pause();
1934							t.forcedHandlePause = true;
1935						}
1936
1937						mouseIsDown = true;
1938						handleMouseMove(e);
1939						var endEvents = ['mouseup', 'touchend'];
1940
1941						for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1942							t.getElement(t.container).addEventListener(endEvents[j], function (event) {
1943								var target = event.target;
1944								if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1945									handleMouseMove(event);
1946								}
1947							});
1948						}
1949						t.globalBind('mouseup.dur touchend.dur', function () {
1950							handleMouseup();
1951							mouseIsDown = false;
1952							if (t.timefloat) {
1953								t.timefloat.style.display = 'none';
1954							}
1955						});
1956					}
1957				}
1958			}, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1959		}
1960		t.slider.addEventListener('mouseenter', function (e) {
1961			if (e.target === t.slider && t.getDuration() !== Infinity) {
1962				t.getElement(t.container).addEventListener('mousemove', function (event) {
1963					var target = event.target;
1964					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1965						handleMouseMove(event);
1966					}
1967				});
1968				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1969					t.timefloat.style.display = 'block';
1970				}
1971				if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1972					(0, _dom.removeClass)(t.hovered, 'no-hover');
1973				}
1974			}
1975		});
1976		t.slider.addEventListener('mouseleave', function () {
1977			if (t.getDuration() !== Infinity) {
1978				if (!mouseIsDown) {
1979					if (t.timefloat) {
1980						t.timefloat.style.display = 'none';
1981					}
1982					if (t.hovered && t.options.useSmoothHover) {
1983						(0, _dom.addClass)(t.hovered, 'no-hover');
1984					}
1985				}
1986			}
1987		});
1988
1989		t.broadcastCallback = function (e) {
1990			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1991			if (!t.options.forceLive && t.getDuration() !== Infinity) {
1992				if (broadcast) {
1993					t.slider.style.display = '';
1994					broadcast.remove();
1995				}
1996
1997				player.setProgressRail(e);
1998				if (!t.forcedHandlePause) {
1999					player.setCurrentRail(e);
2000				}
2001				updateSlider();
2002			} else if (!broadcast && t.options.forceLive) {
2003				var label = _document2.default.createElement('span');
2004				label.className = t.options.classPrefix + 'broadcast';
2005				label.innerText = _i18n2.default.t('mejs.live-broadcast');
2006				t.slider.style.display = 'none';
2007				t.rail.appendChild(label);
2008			}
2009		};
2010
2011		media.addEventListener('progress', t.broadcastCallback);
2012		media.addEventListener('timeupdate', t.broadcastCallback);
2013		media.addEventListener('play', function () {
2014			t.buffer.style.display = 'none';
2015		});
2016		media.addEventListener('playing', function () {
2017			t.buffer.style.display = 'none';
2018		});
2019		media.addEventListener('seeking', function () {
2020			t.buffer.style.display = '';
2021		});
2022		media.addEventListener('seeked', function () {
2023			t.buffer.style.display = 'none';
2024		});
2025		media.addEventListener('pause', function () {
2026			t.buffer.style.display = 'none';
2027		});
2028		media.addEventListener('waiting', function () {
2029			t.buffer.style.display = '';
2030		});
2031		media.addEventListener('loadeddata', function () {
2032			t.buffer.style.display = '';
2033		});
2034		media.addEventListener('canplay', function () {
2035			t.buffer.style.display = 'none';
2036		});
2037		media.addEventListener('error', function () {
2038			t.buffer.style.display = 'none';
2039		});
2040
2041		t.getElement(t.container).addEventListener('controlsresize', function (e) {
2042			if (t.getDuration() !== Infinity) {
2043				player.setProgressRail(e);
2044				if (!t.forcedHandlePause) {
2045					player.setCurrentRail(e);
2046				}
2047			}
2048		});
2049	},
2050	cleanprogress: function cleanprogress(player, controls, layers, media) {
2051		media.removeEventListener('progress', player.broadcastCallback);
2052		media.removeEventListener('timeupdate', player.broadcastCallback);
2053		if (player.rail) {
2054			player.rail.remove();
2055		}
2056	},
2057	setProgressRail: function setProgressRail(e) {
2058		var t = this,
2059		    target = e !== undefined ? e.detail.target || e.target : t.media;
2060
2061		var percent = null;
2062
2063		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2064			percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2065		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2066				percent = target.bufferedBytes / target.bytesTotal;
2067			} else if (e && e.lengthComputable && e.total !== 0) {
2068					percent = e.loaded / e.total;
2069				}
2070
2071		if (percent !== null) {
2072			percent = Math.min(1, Math.max(0, percent));
2073
2074			if (t.loaded) {
2075				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2076			}
2077		}
2078	},
2079	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2080		var t = this;
2081		t.setCurrentRailMain(t, fakeTime);
2082	},
2083	setCurrentRail: function setCurrentRail() {
2084		var t = this;
2085		t.setCurrentRailMain(t);
2086	},
2087	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2088		if (t.getCurrentTime() !== undefined && t.getDuration()) {
2089			var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2090
2091			if (t.total && t.handle) {
2092				var tW = parseFloat(getComputedStyle(t.total).width);
2093
2094				var newWidth = Math.round(tW * nTime / t.getDuration()),
2095				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2096
2097				handlePos = handlePos < 0 ? 0 : handlePos;
2098				t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2099				t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2100
2101				if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2102					var pos = parseInt(t.hovered.getAttribute('pos'), 10);
2103					pos = isNaN(pos) ? 0 : pos;
2104
2105					var hoverScaleX = pos / tW - handlePos / tW;
2106
2107					t.hovered.style.left = handlePos + 'px';
2108					t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2109
2110					if (hoverScaleX >= 0) {
2111						(0, _dom.removeClass)(t.hovered, 'negative');
2112					} else {
2113						(0, _dom.addClass)(t.hovered, 'negative');
2114					}
2115				}
2116			}
2117		}
2118	}
2119});
2120
2121},{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){
2122'use strict';
2123
2124var _document = _dereq_(2);
2125
2126var _document2 = _interopRequireDefault(_document);
2127
2128var _player = _dereq_(16);
2129
2130var _player2 = _interopRequireDefault(_player);
2131
2132var _time = _dereq_(30);
2133
2134var _dom = _dereq_(26);
2135
2136function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2137
2138Object.assign(_player.config, {
2139	duration: 0,
2140
2141	timeAndDurationSeparator: '<span> | </span>'
2142});
2143
2144Object.assign(_player2.default.prototype, {
2145	buildcurrent: function buildcurrent(player, controls, layers, media) {
2146		var t = this,
2147		    time = _document2.default.createElement('div');
2148
2149		time.className = t.options.classPrefix + 'time';
2150		time.setAttribute('role', 'timer');
2151		time.setAttribute('aria-live', 'off');
2152		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>';
2153
2154		t.addControlElement(time, 'current');
2155		player.updateCurrent();
2156		t.updateTimeCallback = function () {
2157			if (t.controlsAreVisible) {
2158				player.updateCurrent();
2159			}
2160		};
2161		media.addEventListener('timeupdate', t.updateTimeCallback);
2162	},
2163	cleancurrent: function cleancurrent(player, controls, layers, media) {
2164		media.removeEventListener('timeupdate', player.updateTimeCallback);
2165	},
2166	buildduration: function buildduration(player, controls, layers, media) {
2167		var t = this,
2168		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2169
2170		if (currTime) {
2171			controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2172		} else {
2173			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2174				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2175			}
2176
2177			var duration = _document2.default.createElement('div');
2178			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2179			duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2180
2181			t.addControlElement(duration, 'duration');
2182		}
2183
2184		t.updateDurationCallback = function () {
2185			if (t.controlsAreVisible) {
2186				player.updateDuration();
2187			}
2188		};
2189
2190		media.addEventListener('timeupdate', t.updateDurationCallback);
2191	},
2192	cleanduration: function cleanduration(player, controls, layers, media) {
2193		media.removeEventListener('timeupdate', player.updateDurationCallback);
2194	},
2195	updateCurrent: function updateCurrent() {
2196		var t = this;
2197
2198		var currentTime = t.getCurrentTime();
2199
2200		if (isNaN(currentTime)) {
2201			currentTime = 0;
2202		}
2203
2204		var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2205
2206		if (timecode.length > 5) {
2207			(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2208		} else {
2209			(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2210		}
2211
2212		if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) {
2213			t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2214		}
2215	},
2216	updateDuration: function updateDuration() {
2217		var t = this;
2218
2219		var duration = t.getDuration();
2220
2221		if (t.media !== undefined && (isNaN(duration) || duration === Infinity || duration < 0)) {
2222			t.media.duration = t.options.duration = duration = 0;
2223		}
2224
2225		if (t.options.duration > 0) {
2226			duration = t.options.duration;
2227		}
2228
2229		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2230
2231		if (timecode.length > 5) {
2232			(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2233		} else {
2234			(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2235		}
2236
2237		if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2238			t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2239		}
2240	}
2241});
2242
2243},{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){
2244'use strict';
2245
2246var _document = _dereq_(2);
2247
2248var _document2 = _interopRequireDefault(_document);
2249
2250var _mejs = _dereq_(7);
2251
2252var _mejs2 = _interopRequireDefault(_mejs);
2253
2254var _i18n = _dereq_(5);
2255
2256var _i18n2 = _interopRequireDefault(_i18n);
2257
2258var _player = _dereq_(16);
2259
2260var _player2 = _interopRequireDefault(_player);
2261
2262var _time = _dereq_(30);
2263
2264var _general = _dereq_(27);
2265
2266var _dom = _dereq_(26);
2267
2268function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2269
2270Object.assign(_player.config, {
2271	startLanguage: '',
2272
2273	tracksText: null,
2274
2275	chaptersText: null,
2276
2277	tracksAriaLive: false,
2278
2279	hideCaptionsButtonWhenEmpty: true,
2280
2281	toggleCaptionsButtonWhenOnlyOne: false,
2282
2283	slidesSelector: ''
2284});
2285
2286Object.assign(_player2.default.prototype, {
2287	hasChapters: false,
2288
2289	buildtracks: function buildtracks(player, controls, layers, media) {
2290
2291		this.findTracks();
2292
2293		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2294			return;
2295		}
2296
2297		var t = this,
2298		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2299		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2300		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2301		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2302
2303		if (t.domNode.textTracks) {
2304			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2305				t.domNode.textTracks[i].mode = 'hidden';
2306			}
2307		}
2308
2309		t.cleartracks(player);
2310
2311		player.captions = _document2.default.createElement('div');
2312		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2313		player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2314		player.captions.style.display = 'none';
2315		layers.insertBefore(player.captions, layers.firstChild);
2316
2317		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2318
2319		player.captionsButton = _document2.default.createElement('div');
2320		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2321		player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2322
2323		t.addControlElement(player.captionsButton, 'tracks');
2324
2325		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2326
2327		player.chaptersButton = _document2.default.createElement('div');
2328		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2329		player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2330
2331		var subtitleCount = 0;
2332
2333		for (var _i = 0; _i < total; _i++) {
2334			var kind = player.tracks[_i].kind,
2335			    src = player.tracks[_i].src;
2336			if (src.trim()) {
2337				if (kind === 'subtitles' || kind === 'captions') {
2338					subtitleCount++;
2339				} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2340					player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2341				}
2342			}
2343		}
2344
2345		player.trackToLoad = -1;
2346		player.selectedTrack = null;
2347		player.isLoadingTrack = false;
2348
2349		for (var _i2 = 0; _i2 < total; _i2++) {
2350			var _kind = player.tracks[_i2].kind;
2351			if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2352				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2353			}
2354		}
2355
2356		player.loadNextTrack();
2357
2358		var inEvents = ['mouseenter', 'focusin'],
2359		    outEvents = ['mouseleave', 'focusout'];
2360
2361		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2362			player.captionsButton.addEventListener('click', function (e) {
2363				var trackId = 'none';
2364				if (player.selectedTrack === null) {
2365					trackId = player.tracks[0].trackId;
2366				}
2367				var keyboard = e.keyCode || e.which;
2368				player.setTrack(trackId, typeof keyboard !== 'undefined');
2369			});
2370		} else {
2371			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2372			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
2373
2374			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2375				player.captionsButton.addEventListener(inEvents[_i3], function () {
2376					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2377				});
2378			}
2379
2380			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2381				player.captionsButton.addEventListener(outEvents[_i4], function () {
2382					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2383				});
2384			}
2385
2386			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2387				captions[_i5].addEventListener('click', function (e) {
2388					var keyboard = e.keyCode || e.which;
2389					player.setTrack(this.value, typeof keyboard !== 'undefined');
2390				});
2391			}
2392
2393			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2394				labels[_i6].addEventListener('click', function (e) {
2395					var radio = (0, _dom.siblings)(this, function (el) {
2396						return el.tagName === 'INPUT';
2397					})[0],
2398					    event = (0, _general.createEvent)('click', radio);
2399					radio.dispatchEvent(event);
2400					e.preventDefault();
2401				});
2402			}
2403
2404			player.captionsButton.addEventListener('keydown', function (e) {
2405				e.stopPropagation();
2406			});
2407		}
2408
2409		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2410			player.chaptersButton.addEventListener(inEvents[_i7], function () {
2411				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2412					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2413				}
2414			});
2415		}
2416
2417		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2418			player.chaptersButton.addEventListener(outEvents[_i8], function () {
2419				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2420			});
2421		}
2422
2423		player.chaptersButton.addEventListener('keydown', function (e) {
2424			e.stopPropagation();
2425		});
2426
2427		if (!player.options.alwaysShowControls) {
2428			player.getElement(player.container).addEventListener('controlsshown', function () {
2429				(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2430			});
2431
2432			player.getElement(player.container).addEventListener('controlshidden', function () {
2433				if (!media.paused) {
2434					(0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2435				}
2436			});
2437		} else {
2438			(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2439		}
2440
2441		media.addEventListener('timeupdate', function () {
2442			player.displayCaptions();
2443		});
2444
2445		if (player.options.slidesSelector !== '') {
2446			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2447
2448			media.addEventListener('timeupdate', function () {
2449				player.displaySlides();
2450			});
2451		}
2452	},
2453	cleartracks: function cleartracks(player) {
2454		if (player) {
2455			if (player.captions) {
2456				player.captions.remove();
2457			}
2458			if (player.chapters) {
2459				player.chapters.remove();
2460			}
2461			if (player.captionsText) {
2462				player.captionsText.remove();
2463			}
2464			if (player.captionsButton) {
2465				player.captionsButton.remove();
2466			}
2467			if (player.chaptersButton) {
2468				player.chaptersButton.remove();
2469			}
2470		}
2471	},
2472	rebuildtracks: function rebuildtracks() {
2473		var t = this;
2474		t.findTracks();
2475		t.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
2476	},
2477	findTracks: function findTracks() {
2478		var t = this,
2479		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2480		    total = tracktags.length;
2481
2482		t.tracks = [];
2483		for (var i = 0; i < total; i++) {
2484			var track = tracktags[i],
2485			    srclang = track.getAttribute('srclang').toLowerCase() || '',
2486			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2487			t.tracks.push({
2488				trackId: trackId,
2489				srclang: srclang,
2490				src: track.getAttribute('src'),
2491				kind: track.getAttribute('kind'),
2492				label: track.getAttribute('label') || '',
2493				entries: [],
2494				isLoaded: false
2495			});
2496		}
2497	},
2498	setTrack: function setTrack(trackId, setByKeyboard) {
2499
2500		var t = this,
2501		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2502		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2503		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2504
2505		for (var i = 0, total = radios.length; i < total; i++) {
2506			radios[i].checked = false;
2507		}
2508
2509		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2510			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2511		}
2512
2513		track.checked = true;
2514		var labels = (0, _dom.siblings)(track, function (el) {
2515			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2516		});
2517		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2518			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2519		}
2520
2521		if (trackId === 'none') {
2522			t.selectedTrack = null;
2523			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2524		} else {
2525			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2526				var _track = t.tracks[_i11];
2527				if (_track.trackId === trackId) {
2528					if (t.selectedTrack === null) {
2529						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2530					}
2531					t.selectedTrack = _track;
2532					t.captions.setAttribute('lang', t.selectedTrack.srclang);
2533					t.displayCaptions();
2534					break;
2535				}
2536			}
2537		}
2538
2539		var event = (0, _general.createEvent)('captionschange', t.media);
2540		event.detail.caption = t.selectedTrack;
2541		t.media.dispatchEvent(event);
2542
2543		if (!setByKeyboard) {
2544			setTimeout(function () {
2545				t.getElement(t.container).focus();
2546			}, 500);
2547		}
2548	},
2549	loadNextTrack: function loadNextTrack() {
2550		var t = this;
2551
2552		t.trackToLoad++;
2553		if (t.trackToLoad < t.tracks.length) {
2554			t.isLoadingTrack = true;
2555			t.loadTrack(t.trackToLoad);
2556		} else {
2557			t.isLoadingTrack = false;
2558			t.checkForTracks();
2559		}
2560	},
2561	loadTrack: function loadTrack(index) {
2562		var t = this,
2563		    track = t.tracks[index];
2564
2565		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2566			(0, _dom.ajax)(track.src, 'text', function (d) {
2567				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2568
2569				track.isLoaded = true;
2570				t.enableTrackButton(track);
2571				t.loadNextTrack();
2572
2573				if (track.kind === 'slides') {
2574					t.setupSlides(track);
2575				} else if (track.kind === 'chapters' && !t.hasChapters) {
2576						t.drawChapters(track);
2577						t.hasChapters = true;
2578					}
2579			}, function () {
2580				t.removeTrackButton(track.trackId);
2581				t.loadNextTrack();
2582			});
2583		}
2584	},
2585	enableTrackButton: function enableTrackButton(track) {
2586		var t = this,
2587		    lang = track.srclang,
2588		    target = _document2.default.getElementById('' + track.trackId);
2589
2590		if (!target) {
2591			return;
2592		}
2593
2594		var label = track.label;
2595
2596		if (label === '') {
2597			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2598		}
2599		target.disabled = false;
2600		var targetSiblings = (0, _dom.siblings)(target, function (el) {
2601			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2602		});
2603		for (var i = 0, total = targetSiblings.length; i < total; i++) {
2604			targetSiblings[i].innerHTML = label;
2605		}
2606
2607		if (t.options.startLanguage === lang) {
2608			target.checked = true;
2609			var event = (0, _general.createEvent)('click', target);
2610			target.dispatchEvent(event);
2611		}
2612	},
2613	removeTrackButton: function removeTrackButton(trackId) {
2614		var element = _document2.default.getElementById('' + trackId);
2615		if (element) {
2616			var button = element.closest('li');
2617			if (button) {
2618				button.remove();
2619			}
2620		}
2621	},
2622	addTrackButton: function addTrackButton(trackId, lang, label) {
2623		var t = this;
2624		if (label === '') {
2625			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2626		}
2627
2628		t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2629	},
2630	checkForTracks: function checkForTracks() {
2631		var t = this;
2632
2633		var hasSubtitles = false;
2634
2635		if (t.options.hideCaptionsButtonWhenEmpty) {
2636			for (var i = 0, total = t.tracks.length; i < total; i++) {
2637				var kind = t.tracks[i].kind;
2638				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2639					hasSubtitles = true;
2640					break;
2641				}
2642			}
2643
2644			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2645			t.setControlsSize();
2646		}
2647	},
2648	displayCaptions: function displayCaptions() {
2649		if (this.tracks === undefined) {
2650			return;
2651		}
2652
2653		var t = this,
2654		    track = t.selectedTrack,
2655		    sanitize = function sanitize(html) {
2656			var div = _document2.default.createElement('div');
2657			div.innerHTML = html;
2658
2659			var scripts = div.getElementsByTagName('script');
2660			var i = scripts.length;
2661			while (i--) {
2662				scripts[i].remove();
2663			}
2664
2665			var allElements = div.getElementsByTagName('*');
2666			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2667				var attributesObj = allElements[_i12].attributes,
2668				    attributes = Array.prototype.slice.call(attributesObj);
2669
2670				for (var j = 0, total = attributes.length; j < total; j++) {
2671					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2672						allElements[_i12].remove();
2673					} else if (attributes[j].name === 'style') {
2674						allElements[_i12].removeAttribute(attributes[j].name);
2675					}
2676				}
2677			}
2678			return div.innerHTML;
2679		};
2680
2681		if (track !== null && track.isLoaded) {
2682			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2683			if (i > -1) {
2684				var text = track.entries[i].text;
2685				if (typeof t.options.captionTextPreprocessor === 'function') text = t.options.captionTextPreprocessor(text);
2686				t.captionsText.innerHTML = sanitize(text);
2687				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2688				t.captions.style.display = '';
2689				t.captions.style.height = '0px';
2690				return;
2691			}
2692			t.captions.style.display = 'none';
2693		} else {
2694			t.captions.style.display = 'none';
2695		}
2696	},
2697	setupSlides: function setupSlides(track) {
2698		var t = this;
2699		t.slides = track;
2700		t.slides.entries.imgs = [t.slides.entries.length];
2701		t.showSlide(0);
2702	},
2703	showSlide: function showSlide(index) {
2704		var _this = this;
2705
2706		var t = this;
2707
2708		if (t.tracks === undefined || t.slidesContainer === undefined) {
2709			return;
2710		}
2711
2712		var url = t.slides.entries[index].text;
2713
2714		var img = t.slides.entries[index].imgs;
2715
2716		if (img === undefined || img.fadeIn === undefined) {
2717			var image = _document2.default.createElement('img');
2718			image.src = url;
2719			image.addEventListener('load', function () {
2720				var self = _this,
2721				    visible = (0, _dom.siblings)(self, function (el) {
2722					return visible(el);
2723				});
2724				self.style.display = 'none';
2725				t.slidesContainer.innerHTML += self.innerHTML;
2726				(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2727				for (var i = 0, total = visible.length; i < total; i++) {
2728					(0, _dom.fadeOut)(visible[i], 400);
2729				}
2730			});
2731			t.slides.entries[index].imgs = img = image;
2732		} else if (!(0, _dom.visible)(img)) {
2733			var _visible = (0, _dom.siblings)(self, function (el) {
2734				return _visible(el);
2735			});
2736			(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2737			for (var i = 0, total = _visible.length; i < total; i++) {
2738				(0, _dom.fadeOut)(_visible[i]);
2739			}
2740		}
2741	},
2742	displaySlides: function displaySlides() {
2743		var t = this;
2744
2745		if (this.slides === undefined) {
2746			return;
2747		}
2748
2749		var slides = t.slides,
2750		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2751
2752		if (i > -1) {
2753			t.showSlide(i);
2754		}
2755	},
2756	drawChapters: function drawChapters(chapters) {
2757		var t = this,
vendor: 4,204 bytes, lines 2758-2894
2758		    total = chapters.entries.length;
2759
2760		if (!total) {
2761			return;
2762		}
2763
2764		t.chaptersButton.querySelector('ul').innerHTML = '';
2765
2766		for (var i = 0; i < total; i++) {
2767			t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2768		}
2769
2770		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2771		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2772
2773		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2774			radios[_i13].disabled = false;
2775			radios[_i13].checked = false;
2776			radios[_i13].addEventListener('click', function (e) {
2777				var self = this,
2778				    listItems = t.chaptersButton.querySelectorAll('li'),
2779				    label = (0, _dom.siblings)(self, function (el) {
2780					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2781				})[0];
2782
2783				self.checked = true;
2784				self.parentNode.setAttribute('aria-checked', true);
2785				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2786				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2787
2788				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2789					listItems[_i14].setAttribute('aria-checked', false);
2790				}
2791
2792				var keyboard = e.keyCode || e.which;
2793				if (typeof keyboard === 'undefined') {
2794					setTimeout(function () {
2795						t.getElement(t.container).focus();
2796					}, 500);
2797				}
2798
2799				t.media.setCurrentTime(parseFloat(self.value));
2800				if (t.media.paused) {
2801					t.media.play();
2802				}
2803			});
2804		}
2805
2806		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2807			labels[_i15].addEventListener('click', function (e) {
2808				var radio = (0, _dom.siblings)(this, function (el) {
2809					return el.tagName === 'INPUT';
2810				})[0],
2811				    event = (0, _general.createEvent)('click', radio);
2812				radio.dispatchEvent(event);
2813				e.preventDefault();
2814			});
2815		}
2816	},
2817	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2818		var lo = 0,
2819		    hi = tracks.length - 1,
2820		    mid = void 0,
2821		    start = void 0,
2822		    stop = void 0;
2823
2824		while (lo <= hi) {
2825			mid = lo + hi >> 1;
2826			start = tracks[mid].start;
2827			stop = tracks[mid].stop;
2828
2829			if (currentTime >= start && currentTime < stop) {
2830				return mid;
2831			} else if (start < currentTime) {
2832				lo = mid + 1;
2833			} else if (start > currentTime) {
2834				hi = mid - 1;
2835			}
2836		}
2837
2838		return -1;
2839	}
2840});
2841
2842_mejs2.default.language = {
2843	codes: {
2844		af: 'mejs.afrikaans',
2845		sq: 'mejs.albanian',
2846		ar: 'mejs.arabic',
2847		be: 'mejs.belarusian',
2848		bg: 'mejs.bulgarian',
2849		ca: 'mejs.catalan',
2850		zh: 'mejs.chinese',
2851		'zh-cn': 'mejs.chinese-simplified',
2852		'zh-tw': 'mejs.chines-traditional',
2853		hr: 'mejs.croatian',
2854		cs: 'mejs.czech',
2855		da: 'mejs.danish',
2856		nl: 'mejs.dutch',
2857		en: 'mejs.english',
2858		et: 'mejs.estonian',
2859		fl: 'mejs.filipino',
2860		fi: 'mejs.finnish',
2861		fr: 'mejs.french',
2862		gl: 'mejs.galician',
2863		de: 'mejs.german',
2864		el: 'mejs.greek',
2865		ht: 'mejs.haitian-creole',
2866		iw: 'mejs.hebrew',
2867		hi: 'mejs.hindi',
2868		hu: 'mejs.hungarian',
2869		is: 'mejs.icelandic',
2870		id: 'mejs.indonesian',
2871		ga: 'mejs.irish',
2872		it: 'mejs.italian',
2873		ja: 'mejs.japanese',
2874		ko: 'mejs.korean',
2875		lv: 'mejs.latvian',
2876		lt: 'mejs.lithuanian',
2877		mk: 'mejs.macedonian',
2878		ms: 'mejs.malay',
2879		mt: 'mejs.maltese',
2880		no: 'mejs.norwegian',
2881		fa: 'mejs.persian',
2882		pl: 'mejs.polish',
2883		pt: 'mejs.portuguese',
2884		ro: 'mejs.romanian',
2885		ru: 'mejs.russian',
2886		sr: 'mejs.serbian',
2887		sk: 'mejs.slovak',
2888		sl: 'mejs.slovenian',
2889		es: 'mejs.spanish',
2890		sw: 'mejs.swahili',
2891		sv: 'mejs.swedish',
2892		tl: 'mejs.tagalog',
2893		th: 'mejs.thai',
2894		tr: 'mejs.turkish',
2895		uk: 'mejs.ukrainian',
2896		vi: 'mejs.vietnamese',
2897		cy: 'mejs.welsh',
2898		yi: 'mejs.yiddish'
2899	}
2900};
2901
2902_mejs2.default.TrackFormatParser = {
2903	webvtt: {
2904		pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2905
2906		parse: function parse(trackText) {
2907			var lines = trackText.split(/\r?\n/),
2908			    entries = [];
2909
2910			var timecode = void 0,
2911			    text = void 0,
2912			    identifier = void 0;
2913
2914			for (var i = 0, total = lines.length; i < total; i++) {
2915				timecode = this.pattern.exec(lines[i]);
2916
2917				if (timecode && i < lines.length) {
2918					if (i - 1 >= 0 && lines[i - 1] !== '') {
2919						identifier = lines[i - 1];
2920					}
2921					i++;
2922
2923					text = lines[i];
2924					i++;
2925					while (lines[i] !== '' && i < lines.length) {
2926						text = text + '\n' + lines[i];
2927						i++;
2928					}
2929					text = text === null ? '' : text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2930					entries.push({
2931						identifier: identifier,
2932						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2933						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2934						text: text,
2935						settings: timecode[5]
2936					});
2937				}
2938				identifier = '';
2939			}
2940			return entries;
2941		}
2942	},
2943
2944	dfxp: {
2945		parse: function parse(trackText) {
2946			var trackElem = _document2.default.adoptNode(new DOMParser().parseFromString(trackText, 'application/xml').documentElement),
2947			    container = trackElem.querySelector('div'),
2948			    lines = container.querySelectorAll('p'),
2949			    styleNode = _document2.default.getElementById(container.getAttribute('style')),
2950			    entries = [];
2951
2952			var styles = void 0;
2953
2954			if (styleNode) {
2955				styleNode.removeAttribute('id');
2956				var attributes = styleNode.attributes;
2957				if (attributes.length) {
2958					styles = {};
2959					for (var i = 0, total = attributes.length; i < total; i++) {
2960						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2961					}
2962				}
2963			}
2964
2965			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2966				var style = void 0,
2967				    _temp = {
2968					start: null,
2969					stop: null,
2970					style: null,
2971					text: null
2972				};
2973
2974				if (lines[_i16].getAttribute('begin')) {
2975					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('begin'));
2976				}
2977				if (!_temp.start && lines[_i16 - 1].getAttribute('end')) {
2978					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16 - 1].getAttribute('end'));
2979				}
2980				if (lines[_i16].getAttribute('end')) {
2981					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('end'));
2982				}
2983				if (!_temp.stop && lines[_i16 + 1].getAttribute('begin')) {
2984					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16 + 1].getAttribute('begin'));
2985				}
2986
2987				if (styles) {
2988					style = '';
2989					for (var _style in styles) {
2990						style += _style + ': ' + styles[_style] + ';';
2991					}
2992				}
2993				if (style) {
2994					_temp.style = style;
2995				}
2996				if (_temp.start === 0) {
2997					_temp.start = 0.200;
2998				}
2999				_temp.text = lines[_i16].innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
3000				entries.push(_temp);
3001			}
3002			return entries;
3003		}
3004	}
3005};
3006
3007},{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){
3008'use strict';
3009
3010var _document = _dereq_(2);
3011
3012var _document2 = _interopRequireDefault(_document);
3013
3014var _player = _dereq_(16);
3015
3016var _player2 = _interopRequireDefault(_player);
3017
3018var _i18n = _dereq_(5);
3019
3020var _i18n2 = _interopRequireDefault(_i18n);
3021
3022var _constants = _dereq_(25);
3023
3024var _general = _dereq_(27);
3025
3026var _dom = _dereq_(26);
3027
3028function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3029
3030Object.assign(_player.config, {
3031	muteText: null,
3032
3033	unmuteText: null,
3034
3035	allyVolumeControlText: null,
3036
3037	hideVolumeOnTouchDevices: true,
3038
3039	audioVolume: 'horizontal',
3040
3041	videoVolume: 'vertical',
3042
3043	startVolume: 0.8
3044});
3045
3046Object.assign(_player2.default.prototype, {
3047	buildvolume: function buildvolume(player, controls, layers, media) {
3048		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
3049			return;
3050		}
3051
3052		var t = this,
3053		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
3054		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
3055		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
3056		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
3057		    mute = _document2.default.createElement('div');
3058
3059		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
3060		mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
3061
3062		t.addControlElement(mute, 'volume');
3063
3064		t.options.keyActions.push({
3065			keys: [38],
3066			action: function action(player) {
3067				var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3068				if (volumeSlider && volumeSlider.matches(':focus')) {
3069					volumeSlider.style.display = 'block';
3070				}
3071				if (player.isVideo) {
3072					player.showControls();
3073					player.startControlsTimer();
3074				}
3075
3076				var newVolume = Math.min(player.volume + 0.1, 1);
3077				player.setVolume(newVolume);
3078				if (newVolume > 0) {
3079					player.setMuted(false);
3080				}
3081			}
3082		}, {
3083			keys: [40],
3084			action: function action(player) {
3085				var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3086				if (volumeSlider) {
3087					volumeSlider.style.display = 'block';
3088				}
3089
3090				if (player.isVideo) {
3091					player.showControls();
3092					player.startControlsTimer();
3093				}
3094
3095				var newVolume = Math.max(player.volume - 0.1, 0);
3096				player.setVolume(newVolume);
3097
3098				if (newVolume <= 0.1) {
3099					player.setMuted(true);
3100				}
3101			}
3102		}, {
3103			keys: [77],
3104			action: function action(player) {
3105				var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3106				if (volumeSlider) {
3107					volumeSlider.style.display = 'block';
3108				}
3109
3110				if (player.isVideo) {
3111					player.showControls();
3112					player.startControlsTimer();
3113				}
3114				if (player.media.muted) {
3115					player.setMuted(false);
3116				} else {
3117					player.setMuted(true);
3118				}
3119			}
3120		});
3121
3122		if (mode === 'horizontal') {
3123			var anchor = _document2.default.createElement('a');
3124			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3125			anchor.href = 'javascript:void(0);';
3126			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3127			anchor.setAttribute('aria-valuemin', 0);
3128			anchor.setAttribute('aria-valuemax', 100);
3129			anchor.setAttribute('aria-valuenow', 100);
3130			anchor.setAttribute('role', 'slider');
3131			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen
vendor: 6,665 bytes, lines 3131-3318
3131">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3132			mute.parentNode.insertBefore(anchor, mute.nextSibling);
3133		}
3134
3135		var mouseIsDown = false,
3136		    mouseIsOver = false,
3137		    modified = false,
3138		    updateVolumeSlider = function updateVolumeSlider() {
3139			var volume = Math.floor(media.volume * 100);
3140			volumeSlider.setAttribute('aria-valuenow', volume);
3141			volumeSlider.setAttribute('aria-valuetext', volume + '%');
3142		};
3143
3144		var volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3145		    volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3146		    volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3147		    volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3148		    positionVolumeHandle = function positionVolumeHandle(volume) {
3149
3150			if (volume === null || isNaN(volume) || volume === undefined) {
3151				return;
3152			}
3153
3154			volume = Math.max(0, volume);
3155			volume = Math.min(volume, 1);
3156
3157			if (volume === 0) {
3158				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3159				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3160				var button = mute.firstElementChild;
3161				button.setAttribute('title', unmuteText);
3162				button.setAttribute('aria-label', unmuteText);
3163			} else {
3164				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3165				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3166				var _button = mute.firstElementChild;
3167				_button.setAttribute('title', muteText);
3168				_button.setAttribute('aria-label', muteText);
3169			}
3170
3171			var volumePercentage = volume * 100 + '%',
3172			    volumeStyles = getComputedStyle(volumeHandle);
3173
3174			if (mode === 'vertical') {
3175				volumeCurrent.style.bottom = 0;
3176				volumeCurrent.style.height = volumePercentage;
3177				volumeHandle.style.bottom = volumePercentage;
3178				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3179			} else {
3180				volumeCurrent.style.left = 0;
3181				volumeCurrent.style.width = volumePercentage;
3182				volumeHandle.style.left = volumePercentage;
3183				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3184			}
3185		},
3186		    handleVolumeMove = function handleVolumeMove(e) {
3187			var totalOffset = (0, _dom.offset)(volumeTotal),
3188			    volumeStyles = getComputedStyle(volumeTotal);
3189
3190			modified = true;
3191
3192			var volume = null;
3193
3194			if (mode === 'vertical') {
3195				var railHeight = parseFloat(volumeStyles.height),
3196				    newY = e.pageY - totalOffset.top;
3197
3198				volume = (railHeight - newY) / railHeight;
3199
3200				if (totalOffset.top === 0 || totalOffset.left === 0) {
3201					return;
3202				}
3203			} else {
3204				var railWidth = parseFloat(volumeStyles.width),
3205				    newX = e.pageX - totalOffset.left;
3206
3207				volume = newX / railWidth;
3208			}
3209
3210			volume = Math.max(0, volume);
3211			volume = Math.min(volume, 1);
3212
3213			positionVolumeHandle(volume);
3214
3215			t.setMuted(volume === 0);
3216			t.setVolume(volume);
3217
3218			e.preventDefault();
3219			e.stopPropagation();
3220		},
3221		    toggleMute = function toggleMute() {
3222			if (t.muted) {
3223				positionVolumeHandle(0);
3224				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3225				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3226			} else {
3227
3228				positionVolumeHandle(media.volume);
3229				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3230				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3231			}
3232		};
3233
3234		player.getElement(player.container).addEventListener('keydown', function (e) {
3235			var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3236			if (!hasFocus && mode === 'vertical') {
3237				volumeSlider.style.display = 'none';
3238			}
3239		});
3240
3241		mute.addEventListener('mouseenter', function (e) {
3242			if (e.target === mute) {
3243				volumeSlider.style.display = 'block';
3244				mouseIsOver = true;
3245				e.preventDefault();
3246				e.stopPropagation();
3247			}
3248		});
3249		mute.addEventListener('focusin', function () {
3250			volumeSlider.style.display = 'block';
3251			mouseIsOver = true;
3252		});
3253
3254		mute.addEventListener('focusout', function (e) {
3255			if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3256				volumeSlider.style.display = 'none';
3257			}
3258		});
3259		mute.addEventListener('mouseleave', function () {
3260			mouseIsOver = false;
3261			if (!mouseIsDown && mode === 'vertical') {
3262				volumeSlider.style.display = 'none';
3263			}
3264		});
3265		mute.addEventListener('focusout', function () {
3266			mouseIsOver = false;
3267		});
3268		mute.addEventListener('keydown', function (e) {
3269			if (t.options.enableKeyboard && t.options.keyActions.length) {
3270				var keyCode = e.which || e.keyCode || 0,
3271				    volume = media.volume;
3272
3273				switch (keyCode) {
3274					case 38:
3275						volume = Math.min(volume + 0.1, 1);
3276						break;
3277					case 40:
3278						volume = Math.max(0, volume - 0.1);
3279						break;
3280					default:
3281						return true;
3282				}
3283
3284				mouseIsDown = false;
3285				positionVolumeHandle(volume);
3286				media.setVolume(volume);
3287
3288				e.preventDefault();
3289				e.stopPropagation();
3290			}
3291		});
3292		mute.querySelector('button').addEventListener('click', function () {
3293			media.setMuted(!media.muted);
3294			var event = (0, _general.createEvent)('volumechange', media);
3295			media.dispatchEvent(event);
3296		});
3297
3298		volumeSlider.addEventListener('dragstart', function () {
3299			return false;
3300		});
3301
3302		volumeSlider.addEventListener('mouseover', function () {
3303			mouseIsOver = true;
3304		});
3305		volumeSlider.addEventListener('focusin', function () {
3306			volumeSlider.style.display = 'block';
3307			mouseIsOver = true;
3308		});
3309		volumeSlider.addEventListener('focusout', function () {
3310			mouseIsOver = false;
3311			if (!mouseIsDown && mode === 'vertical') {
3312				volumeSlider.style.display = 'none';
3313			}
3314		});
3315		volumeSlider.addEventListener('mousedown', function (e) {
3316			handleVolumeMove(e);
3317			t.globalBind('mousemove.vol', function (event) {
3318				var target = event.target;
vendor: 71,810 bytes, lines 3319-5748
3319				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3320					handleVolumeMove(event);
3321				}
3322			});
3323			t.globalBind('mouseup.vol', function () {
3324				mouseIsDown = false;
3325				if (!mouseIsOver && mode === 'vertical') {
3326					volumeSlider.style.display = 'none';
3327				}
3328			});
3329			mouseIsDown = true;
3330			e.preventDefault();
3331			e.stopPropagation();
3332		});
3333
3334		media.addEventListener('volumechange', function (e) {
3335			if (!mouseIsDown) {
3336				toggleMute();
3337			}
3338			updateVolumeSlider(e);
3339		});
3340
3341		var rendered = false;
3342		media.addEventListener('rendererready', function () {
3343			if (!modified) {
3344				setTimeout(function () {
3345					rendered = true;
3346					if (player.options.startVolume === 0 || media.originalNode.muted) {
3347						media.setMuted(true);
3348					}
3349					media.setVolume(player.options.startVolume);
3350					t.setControlsSize();
3351				}, 250);
3352			}
3353		});
3354
3355		media.addEventListener('loadedmetadata', function () {
3356			setTimeout(function () {
3357				if (!modified && !rendered) {
3358					if (player.options.startVolume === 0 || media.originalNode.muted) {
3359						media.setMuted(true);
3360					}
3361					if (player.options.startVolume === 0) {
3362						player.options.startVolume = 0;
3363					}
3364					media.setVolume(player.options.startVolume);
3365					t.setControlsSize();
3366				}
3367				rendered = false;
3368			}, 250);
3369		});
3370
3371		if (player.options.startVolume === 0 || media.originalNode.muted) {
3372			media.setMuted(true);
3373			if (player.options.startVolume === 0) {
3374				player.options.startVolume = 0;
3375			}
3376			toggleMute();
3377		}
3378
3379		t.getElement(t.container).addEventListener('controlsresize', function () {
3380			toggleMute();
3381		});
3382	}
3383});
3384
3385},{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){
3386'use strict';
3387
3388Object.defineProperty(exports, "__esModule", {
3389	value: true
3390});
3391var EN = exports.EN = {
3392	'mejs.plural-form': 1,
3393
3394	'mejs.download-file': 'Download File',
3395
3396	'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
3397
3398	'mejs.fullscreen': 'Fullscreen',
3399
3400	'mejs.play': 'Play',
3401	'mejs.pause': 'Pause',
3402
3403	'mejs.time-slider': 'Time Slider',
3404	'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3405	'mejs.live-broadcast': 'Live Broadcast',
3406
3407	'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3408	'mejs.unmute': 'Unmute',
3409	'mejs.mute': 'Mute',
3410	'mejs.volume-slider': 'Volume Slider',
3411
3412	'mejs.video-player': 'Video Player',
3413	'mejs.audio-player': 'Audio Player',
3414
3415	'mejs.captions-subtitles': 'Captions/Subtitles',
3416	'mejs.captions-chapters': 'Chapters',
3417	'mejs.none': 'None',
3418	'mejs.afrikaans': 'Afrikaans',
3419	'mejs.albanian': 'Albanian',
3420	'mejs.arabic': 'Arabic',
3421	'mejs.belarusian': 'Belarusian',
3422	'mejs.bulgarian': 'Bulgarian',
3423	'mejs.catalan': 'Catalan',
3424	'mejs.chinese': 'Chinese',
3425	'mejs.chinese-simplified': 'Chinese (Simplified)',
3426	'mejs.chinese-traditional': 'Chinese (Traditional)',
3427	'mejs.croatian': 'Croatian',
3428	'mejs.czech': 'Czech',
3429	'mejs.danish': 'Danish',
3430	'mejs.dutch': 'Dutch',
3431	'mejs.english': 'English',
3432	'mejs.estonian': 'Estonian',
3433	'mejs.filipino': 'Filipino',
3434	'mejs.finnish': 'Finnish',
3435	'mejs.french': 'French',
3436	'mejs.galician': 'Galician',
3437	'mejs.german': 'German',
3438	'mejs.greek': 'Greek',
3439	'mejs.haitian-creole': 'Haitian Creole',
3440	'mejs.hebrew': 'Hebrew',
3441	'mejs.hindi': 'Hindi',
3442	'mejs.hungarian': 'Hungarian',
3443	'mejs.icelandic': 'Icelandic',
3444	'mejs.indonesian': 'Indonesian',
3445	'mejs.irish': 'Irish',
3446	'mejs.italian': 'Italian',
3447	'mejs.japanese': 'Japanese',
3448	'mejs.korean': 'Korean',
3449	'mejs.latvian': 'Latvian',
3450	'mejs.lithuanian': 'Lithuanian',
3451	'mejs.macedonian': 'Macedonian',
3452	'mejs.malay': 'Malay',
3453	'mejs.maltese': 'Maltese',
3454	'mejs.norwegian': 'Norwegian',
3455	'mejs.persian': 'Persian',
3456	'mejs.polish': 'Polish',
3457	'mejs.portuguese': 'Portuguese',
3458	'mejs.romanian': 'Romanian',
3459	'mejs.russian': 'Russian',
3460	'mejs.serbian': 'Serbian',
3461	'mejs.slovak': 'Slovak',
3462	'mejs.slovenian': 'Slovenian',
3463	'mejs.spanish': 'Spanish',
3464	'mejs.swahili': 'Swahili',
3465	'mejs.swedish': 'Swedish',
3466	'mejs.tagalog': 'Tagalog',
3467	'mejs.thai': 'Thai',
3468	'mejs.turkish': 'Turkish',
3469	'mejs.ukrainian': 'Ukrainian',
3470	'mejs.vietnamese': 'Vietnamese',
3471	'mejs.welsh': 'Welsh',
3472	'mejs.yiddish': 'Yiddish'
3473};
3474
3475},{}],16:[function(_dereq_,module,exports){
3476'use strict';
3477
3478Object.defineProperty(exports, "__esModule", {
3479	value: true
3480});
3481exports.config = undefined;
3482
3483var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3484
3485var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3486
3487var _window = _dereq_(3);
3488
3489var _window2 = _interopRequireDefault(_window);
3490
3491var _document = _dereq_(2);
3492
3493var _document2 = _interopRequireDefault(_document);
3494
3495var _mejs = _dereq_(7);
3496
3497var _mejs2 = _interopRequireDefault(_mejs);
3498
3499var _mediaelement = _dereq_(6);
3500
3501var _mediaelement2 = _interopRequireDefault(_mediaelement);
3502
3503var _default = _dereq_(17);
3504
3505var _default2 = _interopRequireDefault(_default);
3506
3507var _i18n = _dereq_(5);
3508
3509var _i18n2 = _interopRequireDefault(_i18n);
3510
3511var _constants = _dereq_(25);
3512
3513var _general = _dereq_(27);
3514
3515var _time = _dereq_(30);
3516
3517var _media = _dereq_(28);
3518
3519var _dom = _dereq_(26);
3520
3521var dom = _interopRequireWildcard(_dom);
3522
3523function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3524
3525function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3526
3527function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3528
3529_mejs2.default.mepIndex = 0;
3530
3531_mejs2.default.players = {};
3532
3533var config = exports.config = {
3534	poster: '',
3535
3536	showPosterWhenEnded: false,
3537
3538	showPosterWhenPaused: false,
3539
3540	defaultVideoWidth: 480,
3541
3542	defaultVideoHeight: 270,
3543
3544	videoWidth: -1,
3545
3546	videoHeight: -1,
3547
3548	defaultAudioWidth: 400,
3549
3550	defaultAudioHeight: 40,
3551
3552	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3553		return media.getDuration() * 0.05;
3554	},
3555
3556	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3557		return media.getDuration() * 0.05;
3558	},
3559
3560	setDimensions: true,
3561
3562	audioWidth: -1,
3563
3564	audioHeight: -1,
3565
3566	loop: false,
3567
3568	autoRewind: true,
3569
3570	enableAutosize: true,
3571
3572	timeFormat: '',
3573
3574	alwaysShowHours: false,
3575
3576	showTimecodeFrameCount: false,
3577
3578	framesPerSecond: 25,
3579
3580	alwaysShowControls: false,
3581
3582	hideVideoControlsOnLoad: false,
3583
3584	hideVideoControlsOnPause: false,
3585
3586	clickToPlayPause: true,
3587
3588	controlsTimeoutDefault: 1500,
3589
3590	controlsTimeoutMouseEnter: 2500,
3591
3592	controlsTimeoutMouseLeave: 1000,
3593
3594	iPadUseNativeControls: false,
3595
3596	iPhoneUseNativeControls: false,
3597
3598	AndroidUseNativeControls: false,
3599
3600	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3601
3602	useDefaultControls: false,
3603
3604	isVideo: true,
3605
3606	stretching: 'auto',
3607
3608	classPrefix: 'mejs__',
3609
3610	enableKeyboard: true,
3611
3612	pauseOtherPlayers: true,
3613
3614	secondsDecimalLength: 0,
3615
3616	customError: null,
3617
3618	keyActions: [{
3619		keys: [32, 179],
3620		action: function action(player) {
3621
3622			if (!_constants.IS_FIREFOX) {
3623				if (player.paused || player.ended) {
3624					player.play();
3625				} else {
3626					player.pause();
3627				}
3628			}
3629		}
3630	}]
3631};
3632
3633_mejs2.default.MepDefaults = config;
3634
3635var MediaElementPlayer = function () {
3636	function MediaElementPlayer(node, o) {
3637		_classCallCheck(this, MediaElementPlayer);
3638
3639		var t = this,
3640		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3641
3642		if (!(t instanceof MediaElementPlayer)) {
3643			return new MediaElementPlayer(element, o);
3644		}
3645
3646		t.node = t.media = element;
3647
3648		if (!t.node) {
3649			return;
3650		}
3651
3652		if (t.media.player) {
3653			return t.media.player;
3654		}
3655
3656		t.hasFocus = false;
3657
3658		t.controlsAreVisible = true;
3659
3660		t.controlsEnabled = true;
3661
3662		t.controlsTimer = null;
3663
3664		t.currentMediaTime = 0;
3665
3666		t.proxy = null;
3667
3668		if (o === undefined) {
3669			var options = t.node.getAttribute('data-mejsoptions');
3670			o = options ? JSON.parse(options) : {};
3671		}
3672
3673		t.options = Object.assign({}, config, o);
3674
3675		if (t.options.loop && !t.media.getAttribute('loop')) {
3676			t.media.loop = true;
3677			t.node.loop = true;
3678		} else if (t.media.loop) {
3679			t.options.loop = true;
3680		}
3681
3682		if (!t.options.timeFormat) {
3683			t.options.timeFormat = 'mm:ss';
3684			if (t.options.alwaysShowHours) {
3685				t.options.timeFormat = 'hh:mm:ss';
3686			}
3687			if (t.options.showTimecodeFrameCount) {
3688				t.options.timeFormat += ':ff';
3689			}
3690		}
3691
3692		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3693
3694		t.id = 'mep_' + _mejs2.default.mepIndex++;
3695
3696		_mejs2.default.players[t.id] = t;
3697
3698		t.init();
3699
3700		return t;
3701	}
3702
3703	_createClass(MediaElementPlayer, [{
3704		key: 'getElement',
3705		value: function getElement(element) {
3706			return element;
3707		}
3708	}, {
3709		key: 'init',
3710		value: function init() {
3711			var t = this,
3712			    playerOptions = Object.assign({}, t.options, {
3713				success: function success(media, domNode) {
3714					t._meReady(media, domNode);
3715				},
3716				error: function error(e) {
3717					t._handleError(e);
3718				}
3719			}),
3720			    tagName = t.node.tagName.toLowerCase();
3721
3722			t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3723			t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3724			t.mediaFiles = null;
3725			t.trackFiles = null;
3726
3727			if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3728				t.node.setAttribute('controls', true);
3729
3730				if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3731					t.play();
3732				}
3733			} else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3734				t.node.removeAttribute('controls');
3735				var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3736
3737				var offscreen = _document2.default.createElement('span');
3738				offscreen.className = t.options.classPrefix + 'offscreen';
3739				offscreen.innerText = videoPlayerTitle;
3740				t.media.parentNode.insertBefore(offscreen, t.media);
3741
3742				t.container = _document2.default.createElement('div');
3743				t.getElement(t.container).id = t.id;
3744				t.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3745				t.getElement(t.container).tabIndex = 0;
3746				t.getElement(t.container).setAttribute('role', 'application');
3747				t.getElement(t.container).setAttribute('aria-label', videoPlayerTitle);
3748				t.getElement(t.container).innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3749				t.getElement(t.container).addEventListener('focus', function (e) {
3750					if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3751						t.showControls(true);
3752
3753						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3754						    button = t.getElement(t.container).querySelector(btnSelector);
3755
3756						button.focus();
3757					}
3758				});
3759				t.node.parentNode.insertBefore(t.getElement(t.container), t.node);
3760
3761				if (!t.options.features.length && !t.options.useDefaultControls) {
3762					t.getElement(t.container).style.background = 'transparent';
3763					t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3764				}
3765
3766				if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) {
3767					t.outerContainer = t.media.parentNode;
3768
3769					var wrapper = _document2.default.createElement('div');
3770					wrapper.className = t.options.classPrefix + 'fill-container';
3771					t.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container));
3772					wrapper.appendChild(t.getElement(t.container));
3773				}
3774
3775				if (_constants.IS_ANDROID) {
3776					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'android');
3777				}
3778				if (_constants.IS_IOS) {
3779					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios');
3780				}
3781				if (_constants.IS_IPAD) {
3782					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad');
3783				}
3784				if (_constants.IS_IPHONE) {
3785					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone');
3786				}
3787				dom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3788
3789				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3790
3791				t.media.player = t;
3792
3793				t.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls');
3794				t.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers');
3795
3796				var tagType = t.isVideo ? 'video' : 'audio',
3797				    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3798
3799				if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3800					t.width = t.options[tagType + 'Width'];
3801				} else if (t.node.style.width !== '' && t.node.style.width !== null) {
3802					t.width = t.node.style.width;
3803				} else if (t.node.getAttribute('width')) {
3804					t.width = t.node.getAttribute('width');
3805				} else {
3806					t.width = t.options['default' + capsTagName + 'Width'];
3807				}
3808
3809				if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3810					t.height = t.options[tagType + 'Height'];
3811				} else if (t.node.style.height !== '' && t.node.style.height !== null) {
3812					t.height = t.node.style.height;
3813				} else if (t.node.getAttribute('height')) {
3814					t.height = t.node.getAttribute('height');
3815				} else {
3816					t.height = t.options['default' + capsTagName + 'Height'];
3817				}
3818
3819				t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3820
3821				t.setPlayerSize(t.width, t.height);
3822
3823				playerOptions.pluginWidth = t.width;
3824				playerOptions.pluginHeight = t.height;
3825			} else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3826					t.node.style.display = 'none';
3827				}
3828
3829			_mejs2.default.MepDefaults = playerOptions;
3830
3831			new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3832
3833			if (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3834				var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3835				t.getElement(t.container).dispatchEvent(event);
3836			}
3837		}
3838	}, {
3839		key: 'showControls',
3840		value: function showControls(doAnimation) {
3841			var t = this;
3842
3843			doAnimation = doAnimation === undefined || doAnimation;
3844
3845			if (t.controlsAreVisible || !t.isVideo) {
3846				return;
3847			}
3848
3849			if (doAnimation) {
3850				(function () {
3851					dom.fadeIn(t.getElement(t.controls), 200, function () {
3852						dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3853						var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3854						t.getElement(t.container).dispatchEvent(event);
3855					});
3856
3857					var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3858
3859					var _loop = function _loop(i, total) {
3860						dom.fadeIn(controls[i], 200, function () {
3861							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3862						});
3863					};
3864
3865					for (var i = 0, total = controls.length; i < total; i++) {
3866						_loop(i, total);
3867					}
3868				})();
3869			} else {
3870				dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3871				t.getElement(t.controls).style.display = '';
3872				t.getElement(t.controls).style.opacity = 1;
3873
3874				var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3875				for (var i = 0, total = controls.length; i < total; i++) {
3876					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3877					controls[i].style.display = '';
3878				}
3879
3880				var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3881				t.getElement(t.container).dispatchEvent(event);
3882			}
3883
3884			t.controlsAreVisible = true;
3885			t.setControlsSize();
3886		}
3887	}, {
3888		key: 'hideControls',
3889		value: function hideControls(doAnimation, forceHide) {
3890			var t = this;
3891
3892			doAnimation = doAnimation === undefined || doAnimation;
3893
3894			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3895				return;
3896			}
3897
3898			if (doAnimation) {
3899				(function () {
3900					dom.fadeOut(t.getElement(t.controls), 200, function () {
3901						dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3902						t.getElement(t.controls).style.display = '';
3903						var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3904						t.getElement(t.container).dispatchEvent(event);
3905					});
3906
3907					var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3908
3909					var _loop2 = function _loop2(i, total) {
3910						dom.fadeOut(controls[i], 200, function () {
3911							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3912							controls[i].style.display = '';
3913						});
3914					};
3915
3916					for (var i = 0, total = controls.length; i < total; i++) {
3917						_loop2(i, total);
3918					}
3919				})();
3920			} else {
3921				dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3922				t.getElement(t.controls).style.display = '';
3923				t.getElement(t.controls).style.opacity = 0;
3924
3925				var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3926				for (var i = 0, total = controls.length; i < total; i++) {
3927					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3928					controls[i].style.display = '';
3929				}
3930
3931				var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3932				t.getElement(t.container).dispatchEvent(event);
3933			}
3934
3935			t.controlsAreVisible = false;
3936		}
3937	}, {
3938		key: 'startControlsTimer',
3939		value: function startControlsTimer(timeout) {
3940			var t = this;
3941
3942			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3943
3944			t.killControlsTimer('start');
3945
3946			t.controlsTimer = setTimeout(function () {
3947				t.hideControls();
3948				t.killControlsTimer('hide');
3949			}, timeout);
3950		}
3951	}, {
3952		key: 'killControlsTimer',
3953		value: function killControlsTimer() {
3954			var t = this;
3955
3956			if (t.controlsTimer !== null) {
3957				clearTimeout(t.controlsTimer);
3958				delete t.controlsTimer;
3959				t.controlsTimer = null;
3960			}
3961		}
3962	}, {
3963		key: 'disableControls',
3964		value: function disableControls() {
3965			var t = this;
3966
3967			t.killControlsTimer();
3968			t.controlsEnabled = false;
3969			t.hideControls(false, true);
3970		}
3971	}, {
3972		key: 'enableControls',
3973		value: function enableControls() {
3974			var t = this;
3975
3976			t.controlsEnabled = true;
3977			t.showControls(false);
3978		}
3979	}, {
3980		key: '_setDefaultPlayer',
3981		value: function _setDefaultPlayer() {
3982			var t = this;
3983			if (t.proxy) {
3984				t.proxy.pause();
3985			}
3986			t.proxy = new _default2.default(t);
3987			t.media.addEventListener('loadedmetadata', function () {
3988				if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3989					t.setCurrentTime(t.currentMediaTime);
3990					if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3991						t.play();
3992					}
3993				}
3994			});
3995		}
3996	}, {
3997		key: '_meReady',
3998		value: function _meReady(media, domNode) {
3999			var t = this,
4000			    autoplayAttr = domNode.getAttribute('autoplay'),
4001			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
4002			    isNative = media.rendererName !== null && /(native|html5)/i.test(media.rendererName);
4003
4004			if (t.getElement(t.controls)) {
4005				t.enableControls();
4006			}
4007
4008			if (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) {
4009				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
4010			}
4011
4012			if (t.created) {
4013				return;
4014			}
4015
4016			t.created = true;
4017			t.media = media;
4018			t.domNode = domNode;
4019
4020			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
4021				if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
4022					if (autoplay && isNative) {
4023						t.play();
4024					}
4025
4026					if (t.options.success) {
4027
4028						if (typeof t.options.success === 'string') {
4029							_window2.default[t.options.success](t.media, t.domNode, t);
4030						} else {
4031							t.options.success(t.media, t.domNode, t);
4032						}
4033					}
4034
4035					return;
4036				}
4037
4038				t.featurePosition = {};
4039
4040				t._setDefaultPlayer();
4041
4042				t.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4043				t.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4044				t.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4045
4046				if (t.options.useDefaultControls) {
4047					var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4048					t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4049						return defaultControls.indexOf(item) === -1;
4050					}));
4051				}
4052
4053				t.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4054
4055				var event = (0, _general.createEvent)('controlsready', t.getElement(t.container));
4056				t.getElement(t.container).dispatchEvent(event);
4057
4058				t.setPlayerSize(t.width, t.height);
4059				t.setControlsSize();
4060
4061				if (t.isVideo) {
4062					t.clickToPlayPauseCallback = function () {
4063
4064						if (t.options.clickToPlayPause) {
4065							var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4066							    pressed = button.getAttribute('aria-pressed');
4067
4068							if (t.paused && pressed) {
4069								t.pause();
4070							} else if (t.paused) {
4071								t.play();
4072							} else {
4073								t.pause();
4074							}
4075
4076							button.setAttribute('aria-pressed', !pressed);
4077							t.getElement(t.container).focus();
4078						}
4079					};
4080
4081					t.createIframeLayer();
4082
4083					t.media.addEventListener('click', t.clickToPlayPauseCallback);
4084
4085					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4086						t.node.addEventListener('touchstart', function () {
4087							if (t.controlsAreVisible) {
4088								t.hideControls(false);
4089							} else {
4090								if (t.controlsEnabled) {
4091									t.showControls(false);
4092								}
4093							}
4094						}, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4095					} else {
4096						t.getElement(t.container).addEventListener('mouseenter', function () {
4097							if (t.controlsEnabled) {
4098								if (!t.options.alwaysShowControls) {
4099									t.killControlsTimer('enter');
4100									t.showControls();
4101									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4102								}
4103							}
4104						});
4105						t.getElement(t.container).addEventListener('mousemove', function () {
4106							if (t.controlsEnabled) {
4107								if (!t.controlsAreVisible) {
4108									t.showControls();
4109								}
4110								if (!t.options.alwaysShowControls) {
4111									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4112								}
4113							}
4114						});
4115						t.getElement(t.container).addEventListener('mouseleave', function () {
4116							if (t.controlsEnabled) {
4117								if (!t.paused && !t.options.alwaysShowControls) {
4118									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4119								}
4120							}
4121						});
4122					}
4123
4124					if (t.options.hideVideoControlsOnLoad) {
4125						t.hideControls(false);
4126					}
4127
4128					if (t.options.enableAutosize) {
4129						t.media.addEventListener('loadedmetadata', function (e) {
4130							var target = e !== undefined ? e.detail.target || e.target : t.media;
4131							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4132								t.setPlayerSize(target.videoWidth, target.videoHeight);
4133								t.setControlsSize();
4134								t.media.setSize(target.videoWidth, target.videoHeight);
4135							}
4136						});
4137					}
4138				}
4139
4140				t.media.addEventListener('play', function () {
4141					t.hasFocus = true;
4142
4143					for (var playerIndex in _mejs2.default.players) {
4144						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4145							var p = _mejs2.default.players[playerIndex];
4146
4147							if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended && p.options.ignorePauseOtherPlayersOption !== true) {
4148								p.pause();
4149								p.hasFocus = false;
4150							}
4151						}
4152					}
4153
4154					if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4155						t.hideControls();
4156					}
4157				});
4158
4159				t.media.addEventListener('ended', function () {
4160					if (t.options.autoRewind) {
4161						try {
4162							t.setCurrentTime(0);
4163
4164							setTimeout(function () {
4165								var loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading');
4166								if (loadingElement && loadingElement.parentNode) {
4167									loadingElement.parentNode.style.display = 'none';
4168								}
4169							}, 20);
4170						} catch (exp) {
4171							
4172						}
4173					}
4174
4175					if (typeof t.media.renderer.stop === 'function') {
4176						t.media.renderer.stop();
4177					} else {
4178						t.pause();
4179					}
4180
4181					if (t.setProgressRail) {
4182						t.setProgressRail();
4183					}
4184					if (t.setCurrentRail) {
4185						t.setCurrentRail();
4186					}
4187
4188					if (t.options.loop) {
4189						t.play();
4190					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4191						t.showControls();
4192					}
4193				});
4194
4195				t.media.addEventListener('loadedmetadata', function () {
4196
4197					(0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4198
4199					if (t.updateDuration) {
4200						t.updateDuration();
4201					}
4202					if (t.updateCurrent) {
4203						t.updateCurrent();
4204					}
4205
4206					if (!t.isFullScreen) {
4207						t.setPlayerSize(t.width, t.height);
4208						t.setControlsSize();
4209					}
4210				});
4211
4212				var duration = null;
4213				t.media.addEventListener('timeupdate', function () {
4214					if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4215						duration = t.getDuration();
4216						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4217
4218						if (t.updateDuration) {
4219							t.updateDuration();
4220						}
4221						if (t.updateCurrent) {
4222							t.updateCurrent();
4223						}
4224
4225						t.setControlsSize();
4226					}
4227				});
4228
4229				t.getElement(t.container).addEventListener('click', function (e) {
4230					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4231				});
4232
4233				t.getElement(t.container).addEventListener('focusin', function (e) {
4234					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4235					if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4236						t.killControlsTimer('enter');
4237						t.showControls();
4238						t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4239					}
4240				});
4241
4242				t.getElement(t.container).addEventListener('focusout', function (e) {
4243					setTimeout(function () {
4244						if (e.relatedTarget) {
4245							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4246								t.keyboardAction = false;
4247								if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4248									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4249								}
4250							}
4251						}
4252					}, 0);
4253				});
4254
4255				setTimeout(function () {
4256					t.setPlayerSize(t.width, t.height);
4257					t.setControlsSize();
4258				}, 0);
4259
4260				t.globalResizeCallback = function () {
4261					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4262						t.setPlayerSize(t.width, t.height);
4263					}
4264
4265					t.setControlsSize();
4266				};
4267
4268				t.globalBind('resize', t.globalResizeCallback);
4269			}
4270
4271			if (autoplay && isNative) {
4272				t.play();
4273			}
4274
4275			if (t.options.success) {
4276				if (typeof t.options.success === 'string') {
4277					_window2.default[t.options.success](t.media, t.domNode, t);
4278				} else {
4279					t.options.success(t.media, t.domNode, t);
4280				}
4281			}
4282		}
4283	}, {
4284		key: '_handleError',
4285		value: function _handleError(e, media, node) {
4286			var t = this,
4287			    play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play');
4288
4289			if (play) {
4290				play.style.display = 'none';
4291			}
4292
4293			if (t.options.error) {
4294				t.options.error(e, media, node);
4295			}
4296
4297			if (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4298				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4299			}
4300
4301			var errorContainer = _document2.default.createElement('div');
4302			errorContainer.className = t.options.classPrefix + 'cannotplay';
4303			errorContainer.style.width = '100%';
4304			errorContainer.style.height = '100%';
4305
4306			var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4307			    imgError = '';
4308
4309			if (!errorContent) {
4310				var poster = t.media.originalNode.getAttribute('poster');
4311				if (poster) {
4312					imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4313				}
4314
4315				if (e.message) {
4316					errorContent = '<p>' + e.message + '</p>';
4317				}
4318
4319				if (e.urls) {
4320					for (var i = 0, total = e.urls.length; i < total; i++) {
4321						var url = e.urls[i];
4322						errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4323					}
4324				}
4325			}
4326
4327			if (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4328				errorContainer.innerHTML = errorContent;
4329				t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4330				t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4331			}
4332
4333			if (t.controlsEnabled) {
4334				t.disableControls();
4335			}
4336		}
4337	}, {
4338		key: 'setPlayerSize',
4339		value: function setPlayerSize(width, height) {
4340			var t = this;
4341
4342			if (!t.options.setDimensions) {
4343				return false;
4344			}
4345
4346			if (typeof width !== 'undefined') {
4347				t.width = width;
4348			}
4349
4350			if (typeof height !== 'undefined') {
4351				t.height = height;
4352			}
4353
4354			switch (t.options.stretching) {
4355				case 'fill':
4356					if (t.isVideo) {
4357						t.setFillMode();
4358					} else {
4359						t.setDimensions(t.width, t.height);
4360					}
4361					break;
4362				case 'responsive':
4363					t.setResponsiveMode();
4364					break;
4365				case 'none':
4366					t.setDimensions(t.width, t.height);
4367					break;
4368
4369				default:
4370					if (t.hasFluidMode() === true) {
4371						t.setResponsiveMode();
4372					} else {
4373						t.setDimensions(t.width, t.height);
4374					}
4375					break;
4376			}
4377		}
4378	}, {
4379		key: 'hasFluidMode',
4380		value: function hasFluidMode() {
4381			var t = this;
4382
4383			return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4384		}
4385	}, {
4386		key: 'setResponsiveMode',
4387		value: function setResponsiveMode() {
4388			var t = this,
4389			    parent = function () {
4390
4391				var parentEl = void 0,
4392				    el = t.getElement(t.container);
4393
4394				while (el) {
4395					try {
4396						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4397							return _window2.default.frameElement;
4398						} else {
4399							parentEl = el.parentElement;
4400						}
4401					} catch (e) {
4402						parentEl = el.parentElement;
4403					}
4404
4405					if (parentEl && dom.visible(parentEl)) {
4406						return parentEl;
4407					}
4408					el = parentEl;
4409				}
4410
4411				return null;
4412			}(),
4413			    parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4414			    nativeWidth = function () {
4415				if (t.isVideo) {
4416					if (t.node.videoWidth && t.node.videoWidth > 0) {
4417						return t.node.videoWidth;
4418					} else if (t.node.getAttribute('width')) {
4419						return t.node.getAttribute('width');
4420					} else {
4421						return t.options.defaultVideoWidth;
4422					}
4423				} else {
4424					return t.options.defaultAudioWidth;
4425				}
4426			}(),
4427			    nativeHeight = function () {
4428				if (t.isVideo) {
4429					if (t.node.videoHeight && t.node.videoHeight > 0) {
4430						return t.node.videoHeight;
4431					} else if (t.node.getAttribute('height')) {
4432						return t.node.getAttribute('height');
4433					} else {
4434						return t.options.defaultVideoHeight;
4435					}
4436				} else {
4437					return t.options.defaultAudioHeight;
4438				}
4439			}(),
4440			    aspectRatio = function () {
4441				if (!t.options.enableAutosize) {
4442					return t.initialAspectRatio;
4443				}
4444				var ratio = 1;
4445				if (!t.isVideo) {
4446					return ratio;
4447				}
4448
4449				if (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) {
4450					ratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth;
4451				} else {
4452					ratio = t.initialAspectRatio;
4453				}
4454
4455				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4456					ratio = 1;
4457				}
4458
4459				return ratio;
4460			}(),
4461			    parentHeight = parseFloat(parentStyles.height);
4462
4463			var newHeight = void 0,
4464			    parentWidth = parseFloat(parentStyles.width);
4465
4466			if (t.isVideo) {
4467				if (t.height === '100%') {
4468					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4469				} else {
4470					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4471				}
4472			} else {
4473				newHeight = nativeHeight;
4474			}
4475
4476			if (isNaN(newHeight)) {
4477				newHeight = parentHeight;
4478			}
4479
4480			if (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') {
4481				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4482				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4483			}
4484
4485			if (newHeight && parentWidth) {
4486				t.getElement(t.container).style.width = parentWidth + 'px';
4487				t.getElement(t.container).style.height = newHeight + 'px';
4488
4489				t.node.style.width = '100%';
4490				t.node.style.height = '100%';
4491
4492				if (t.isVideo && t.media.setSize) {
4493					t.media.setSize(parentWidth, newHeight);
4494				}
4495
4496				var layerChildren = t.getElement(t.layers).children;
4497				for (var i = 0, total = layerChildren.length; i < total; i++) {
4498					layerChildren[i].style.width = '100%';
4499					layerChildren[i].style.height = '100%';
4500				}
4501			}
4502		}
4503	}, {
4504		key: 'setFillMode',
4505		value: function setFillMode() {
4506			var t = this;
4507			var isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null;
4508			var parent = function () {
4509				var parentEl = void 0,
4510				    el = t.getElement(t.container);
4511
4512				while (el) {
4513					try {
4514						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4515							return _window2.default.frameElement;
4516						} else {
4517							parentEl = el.parentElement;
4518						}
4519					} catch (e) {
4520						parentEl = el.parentElement;
4521					}
4522
4523					if (parentEl && dom.visible(parentEl)) {
4524						return parentEl;
4525					}
4526					el = parentEl;
4527				}
4528
4529				return null;
4530			}();
4531			var parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null);
4532
4533			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4534				t.node.style.height = 'auto';
4535			}
4536			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4537				t.node.style.maxWidth = 'none';
4538			}
4539
4540			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4541				t.node.style.maxHeight = 'none';
4542			}
4543
4544			if (t.node.currentStyle) {
4545				if (t.node.currentStyle.height === '100%') {
4546					t.node.currentStyle.height = 'auto';
4547				}
4548				if (t.node.currentStyle.maxWidth === '100%') {
4549					t.node.currentStyle.maxWidth = 'none';
4550				}
4551				if (t.node.currentStyle.maxHeight === '100%') {
4552					t.node.currentStyle.maxHeight = 'none';
4553				}
4554			}
4555
4556			if (!isIframe && !parseFloat(parentStyles.width)) {
4557				parent.style.width = t.media.offsetWidth + 'px';
4558			}
4559
4560			if (!isIframe && !parseFloat(parentStyles.height)) {
4561				parent.style.height = t.media.offsetHeight + 'px';
4562			}
4563
4564			parentStyles = getComputedStyle(parent);
4565
4566			var parentWidth = parseFloat(parentStyles.width),
4567			    parentHeight = parseFloat(parentStyles.height);
4568
4569			t.setDimensions('100%', '100%');
4570
4571			var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
4572			if (poster) {
4573				poster.style.display = '';
4574			}
4575
4576			var targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'),
4577			    initHeight = t.height,
4578			    initWidth = t.width,
4579			    scaleX1 = parentWidth,
4580			    scaleY1 = initHeight * parentWidth / initWidth,
4581			    scaleX2 = initWidth * parentHeight / initHeight,
4582			    scaleY2 = parentHeight,
4583			    bScaleOnWidth = scaleX2 > parentWidth === false,
4584			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4585			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4586			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4587			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4588
4589			for (var i = 0, total = targetElement.length; i < total; i++) {
4590				targetElement[i].style.height = height;
4591				targetElement[i].style.width = width;
4592				if (t.media.setSize) {
4593					t.media.setSize(width, height);
4594				}
4595
4596				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
4597				targetElement[i].style.marginTop = 0;
4598			}
4599		}
4600	}, {
4601		key: 'setDimensions',
4602		value: function setDimensions(width, height) {
4603			var t = this;
4604
4605			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4606			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4607
4608			t.getElement(t.container).style.width = width;
4609			t.getElement(t.container).style.height = height;
4610
4611			var layers = t.getElement(t.layers).children;
4612			for (var i = 0, total = layers.length; i < total; i++) {
4613				layers[i].style.width = width;
4614				layers[i].style.height = height;
4615			}
4616		}
4617	}, {
4618		key: 'setControlsSize',
4619		value: function setControlsSize() {
4620			var t = this;
4621
4622			if (!dom.visible(t.getElement(t.container))) {
4623				return;
4624			}
4625
4626			if (t.rail && dom.visible(t.rail)) {
4627				var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4628				    totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4629				    railStyles = getComputedStyle(t.rail),
4630				    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4631
4632				var siblingsWidth = 0;
4633
4634				var siblings = dom.siblings(t.rail, function (el) {
4635					return el !== t.rail;
4636				}),
4637				    total = siblings.length;
4638				for (var i = 0; i < total; i++) {
4639					siblingsWidth += siblings[i].offsetWidth;
4640				}
4641
4642				siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4643
4644				t.getElement(t.container).style.minWidth = siblingsWidth + 'px';
4645
4646				var event = (0, _general.createEvent)('controlsresize', t.getElement(t.container));
4647				t.getElement(t.container).dispatchEvent(event);
4648			} else {
4649				var children = t.getElement(t.controls).children;
4650				var minWidth = 0;
4651
4652				for (var _i = 0, _total = children.length; _i < _total; _i++) {
4653					minWidth += children[_i].offsetWidth;
4654				}
4655
4656				t.getElement(t.container).style.minWidth = minWidth + 'px';
4657			}
4658		}
4659	}, {
4660		key: 'addControlElement',
4661		value: function addControlElement(element, key) {
4662
4663			var t = this;
4664
4665			if (t.featurePosition[key] !== undefined) {
4666				var child = t.getElement(t.controls).children[t.featurePosition[key] - 1];
4667				child.parentNode.insertBefore(element, child.nextSibling);
4668			} else {
4669				t.getElement(t.controls).appendChild(element);
4670				var children = t.getElement(t.controls).children;
4671				for (var i = 0, total = children.length; i < total; i++) {
4672					if (element === children[i]) {
4673						t.featurePosition[key] = i;
4674						break;
4675					}
4676				}
4677			}
4678		}
4679	}, {
4680		key: 'createIframeLayer',
4681		value: function createIframeLayer() {
4682			var t = this;
4683
4684			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4685
4686				var layer = _document2.default.createElement('div'),
4687				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4688
4689				layer.id = t.media.id + '-iframe-overlay';
4690				layer.className = t.options.classPrefix + 'iframe-overlay';
4691				layer.addEventListener('click', function (e) {
4692					if (t.options.clickToPlayPause) {
4693						if (t.paused) {
4694							t.play();
4695						} else {
4696							t.pause();
4697						}
4698
4699						e.preventDefault();
4700						e.stopPropagation();
4701					}
4702				});
4703
4704				target.parentNode.insertBefore(layer, target);
4705			}
4706		}
4707	}, {
4708		key: 'resetSize',
4709		value: function resetSize() {
4710			var t = this;
4711
4712			setTimeout(function () {
4713				t.setPlayerSize(t.width, t.height);
4714				t.setControlsSize();
4715			}, 50);
4716		}
4717	}, {
4718		key: 'setPoster',
4719		value: function setPoster(url) {
4720			var t = this;
4721
4722			if (t.getElement(t.container)) {
4723				var posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster');
4724
4725				if (!posterDiv) {
4726					posterDiv = _document2.default.createElement('div');
4727					posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4728					t.getElement(t.layers).appendChild(posterDiv);
4729				}
4730
4731				var posterImg = posterDiv.querySelector('img');
4732
4733				if (!posterImg && url) {
4734					posterImg = _document2.default.createElement('img');
4735					posterImg.className = t.options.classPrefix + 'poster-img';
4736					posterImg.width = '100%';
4737					posterImg.height = '100%';
4738					posterDiv.style.display = '';
4739					posterDiv.appendChild(posterImg);
4740				}
4741
4742				if (url) {
4743					posterImg.setAttribute('src', url);
4744					posterDiv.style.backgroundImage = 'url("' + url + '")';
4745					posterDiv.style.display = '';
4746				} else if (posterImg) {
4747					posterDiv.style.backgroundImage = 'none';
4748					posterDiv.style.display = 'none';
4749					posterImg.remove();
4750				} else {
4751					posterDiv.style.display = 'none';
4752				}
4753			} else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) {
4754				t.media.originalNode.poster = url;
4755			}
4756		}
4757	}, {
4758		key: 'changeSkin',
4759		value: function changeSkin(className) {
4760			var t = this;
4761
4762			t.getElement(t.container).className = t.options.classPrefix + 'container ' + className;
4763			t.setPlayerSize(t.width, t.height);
4764			t.setControlsSize();
4765		}
4766	}, {
4767		key: 'globalBind',
4768		value: function globalBind(events, callback) {
4769			var t = this,
4770			    doc = t.node ? t.node.ownerDocument : _document2.default;
4771
4772			events = (0, _general.splitEvents)(events, t.id);
4773			if (events.d) {
4774				var eventList = events.d.split(' ');
4775				for (var i = 0, total = eventList.length; i < total; i++) {
4776					eventList[i].split('.').reduce(function (part, e) {
4777						doc.addEventListener(e, callback, false);
4778						return e;
4779					}, '');
4780				}
4781			}
4782			if (events.w) {
4783				var _eventList = events.w.split(' ');
4784				for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4785					_eventList[_i2].split('.').reduce(function (part, e) {
4786						_window2.default.addEventListener(e, callback, false);
4787						return e;
4788					}, '');
4789				}
4790			}
4791		}
4792	}, {
4793		key: 'globalUnbind',
4794		value: function globalUnbind(events, callback) {
4795			var t = this,
4796			    doc = t.node ? t.node.ownerDocument : _document2.default;
4797
4798			events = (0, _general.splitEvents)(events, t.id);
4799			if (events.d) {
4800				var eventList = events.d.split(' ');
4801				for (var i = 0, total = eventList.length; i < total; i++) {
4802					eventList[i].split('.').reduce(function (part, e) {
4803						doc.removeEventListener(e, callback, false);
4804						return e;
4805					}, '');
4806				}
4807			}
4808			if (events.w) {
4809				var _eventList2 = events.w.split(' ');
4810				for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4811					_eventList2[_i3].split('.').reduce(function (part, e) {
4812						_window2.default.removeEventListener(e, callback, false);
4813						return e;
4814					}, '');
4815				}
4816			}
4817		}
4818	}, {
4819		key: 'buildfeatures',
4820		value: function buildfeatures(player, controls, layers, media) {
4821			var t = this;
4822
4823			for (var i = 0, total = t.options.features.length; i < total; i++) {
4824				var feature = t.options.features[i];
4825				if (t['build' + feature]) {
4826					try {
4827						t['build' + feature](player, controls, layers, media);
4828					} catch (e) {
4829						console.error('error building ' + feature, e);
4830					}
4831				}
4832			}
4833		}
4834	}, {
4835		key: 'buildposter',
4836		value: function buildposter(player, controls, layers, media) {
4837			var t = this,
4838			    poster = _document2.default.createElement('div');
4839
4840			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4841			layers.appendChild(poster);
4842
4843			var posterUrl = media.originalNode.getAttribute('poster');
4844
4845			if (player.options.poster !== '') {
4846				if (posterUrl && _constants.IS_IOS) {
4847					media.originalNode.removeAttribute('poster');
4848				}
4849				posterUrl = player.options.poster;
4850			}
4851
4852			if (posterUrl) {
4853				t.setPoster(posterUrl);
4854			} else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4855				t.setPoster(t.media.renderer.getPosterUrl());
4856			} else {
4857				poster.style.display = 'none';
4858			}
4859
4860			media.addEventListener('play', function () {
4861				poster.style.display = 'none';
4862			});
4863
4864			media.addEventListener('playing', function () {
4865				poster.style.display = 'none';
4866			});
4867
4868			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4869				media.addEventListener('ended', function () {
4870					poster.style.display = '';
4871				});
4872			}
4873
4874			media.addEventListener('error', function () {
4875				poster.style.display = 'none';
4876			});
4877
4878			if (player.options.showPosterWhenPaused) {
4879				media.addEventListener('pause', function () {
4880					if (!player.ended) {
4881						poster.style.display = '';
4882					}
4883				});
4884			}
4885		}
4886	}, {
4887		key: 'buildoverlays',
4888		value: function buildoverlays(player, controls, layers, media) {
4889
4890			if (!player.isVideo) {
4891				return;
4892			}
4893
4894			var t = this,
4895			    loading = _document2.default.createElement('div'),
4896			    error = _document2.default.createElement('div'),
4897			    bigPlay = _document2.default.createElement('div');
4898
4899			loading.style.display = 'none';
4900			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4901			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4902			layers.appendChild(loading);
4903
4904			error.style.display = 'none';
4905			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4906			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4907			layers.appendChild(error);
4908
4909			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4910			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4911			bigPlay.addEventListener('click', function () {
4912				if (t.options.clickToPlayPause) {
4913
4914					var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4915					    pressed = button.getAttribute('aria-pressed');
4916
4917					if (t.paused) {
4918						t.play();
4919					} else {
4920						t.pause();
4921					}
4922
4923					button.setAttribute('aria-pressed', !!pressed);
4924					t.getElement(t.container).focus();
4925				}
4926			});
4927
4928			bigPlay.addEventListener('keydown', function (e) {
4929				var keyPressed = e.keyCode || e.which || 0;
4930
4931				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4932					var event = (0, _general.createEvent)('click', bigPlay);
4933					bigPlay.dispatchEvent(event);
4934					return false;
4935				}
4936			});
4937
4938			layers.appendChild(bigPlay);
4939
4940			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4941				bigPlay.style.display = 'none';
4942			}
4943
4944			var hasError = false;
4945
4946			media.addEventListener('play', function () {
4947				bigPlay.style.display = 'none';
4948				loading.style.display = 'none';
4949				error.style.display = 'none';
4950				hasError = false;
4951			});
4952			media.addEventListener('playing', function () {
4953				bigPlay.style.display = 'none';
4954				loading.style.display = 'none';
4955				error.style.display = 'none';
4956				hasError = false;
4957			});
4958			media.addEventListener('seeking', function () {
4959				bigPlay.style.display = 'none';
4960				loading.style.display = '';
4961				hasError = false;
4962			});
4963			media.addEventListener('seeked', function () {
4964				bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4965				loading.style.display = 'none';
4966				hasError = false;
4967			});
4968			media.addEventListener('pause', function () {
4969				loading.style.display = 'none';
4970				if (!_constants.IS_STOCK_ANDROID && !hasError) {
4971					bigPlay.style.display = '';
4972				}
4973				hasError = false;
4974			});
4975			media.addEventListener('waiting', function () {
4976				loading.style.display = '';
4977				hasError = false;
4978			});
4979
4980			media.addEventListener('loadeddata', function () {
4981				loading.style.display = '';
4982
4983				if (_constants.IS_ANDROID) {
4984					media.canplayTimeout = setTimeout(function () {
4985						if (_document2.default.createEvent) {
4986							var evt = _document2.default.createEvent('HTMLEvents');
4987							evt.initEvent('canplay', true, true);
4988							return media.dispatchEvent(evt);
4989						}
4990					}, 300);
4991				}
4992				hasError = false;
4993			});
4994			media.addEventListener('canplay', function () {
4995				loading.style.display = 'none';
4996
4997				clearTimeout(media.canplayTimeout);
4998				hasError = false;
4999			});
5000
5001			media.addEventListener('error', function (e) {
5002				t._handleError(e, t.media, t.node);
5003				loading.style.display = 'none';
5004				bigPlay.style.display = 'none';
5005				hasError = true;
5006			});
5007
5008			media.addEventListener('loadedmetadata', function () {
5009				if (!t.controlsEnabled) {
5010					t.enableControls();
5011				}
5012			});
5013
5014			media.addEventListener('keydown', function (e) {
5015				t.onkeydown(player, media, e);
5016				hasError = false;
5017			});
5018		}
5019	}, {
5020		key: 'buildkeyboard',
5021		value: function buildkeyboard(player, controls, layers, media) {
5022
5023			var t = this;
5024
5025			t.getElement(t.container).addEventListener('keydown', function () {
5026				t.keyboardAction = true;
5027			});
5028
5029			t.globalKeydownCallback = function (event) {
5030				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
5031				    target = t.media.closest('.' + t.options.classPrefix + 'container');
5032				t.hasFocus = !!(container && target && container.id === target.id);
5033				return t.onkeydown(player, media, event);
5034			};
5035
5036			t.globalClickCallback = function (event) {
5037				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
5038			};
5039
5040			t.globalBind('keydown', t.globalKeydownCallback);
5041
5042			t.globalBind('click', t.globalClickCallback);
5043		}
5044	}, {
5045		key: 'onkeydown',
5046		value: function onkeydown(player, media, e) {
5047
5048			if (player.hasFocus && player.options.enableKeyboard) {
5049				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
5050					var keyAction = player.options.keyActions[i];
5051
5052					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
5053						if (e.keyCode === keyAction.keys[j]) {
5054							keyAction.action(player, media, e.keyCode, e);
5055							e.preventDefault();
5056							e.stopPropagation();
5057							return;
5058						}
5059					}
5060				}
5061			}
5062
5063			return true;
5064		}
5065	}, {
5066		key: 'play',
5067		value: function play() {
5068			this.proxy.play();
5069		}
5070	}, {
5071		key: 'pause',
5072		value: function pause() {
5073			this.proxy.pause();
5074		}
5075	}, {
5076		key: 'load',
5077		value: function load() {
5078			this.proxy.load();
5079		}
5080	}, {
5081		key: 'setCurrentTime',
5082		value: function setCurrentTime(time) {
5083			this.proxy.setCurrentTime(time);
5084		}
5085	}, {
5086		key: 'getCurrentTime',
5087		value: function getCurrentTime() {
5088			return this.proxy.currentTime;
5089		}
5090	}, {
5091		key: 'getDuration',
5092		value: function getDuration() {
5093			return this.proxy.duration;
5094		}
5095	}, {
5096		key: 'setVolume',
5097		value: function setVolume(volume) {
5098			this.proxy.volume = volume;
5099		}
5100	}, {
5101		key: 'getVolume',
5102		value: function getVolume() {
5103			return this.proxy.getVolume();
5104		}
5105	}, {
5106		key: 'setMuted',
5107		value: function setMuted(value) {
5108			this.proxy.setMuted(value);
5109		}
5110	}, {
5111		key: 'setSrc',
5112		value: function setSrc(src) {
5113			if (!this.controlsEnabled) {
5114				this.enableControls();
5115			}
5116			this.proxy.setSrc(src);
5117		}
5118	}, {
5119		key: 'getSrc',
5120		value: function getSrc() {
5121			return this.proxy.getSrc();
5122		}
5123	}, {
5124		key: 'canPlayType',
5125		value: function canPlayType(type) {
5126			return this.proxy.canPlayType(type);
5127		}
5128	}, {
5129		key: 'remove',
5130		value: function remove() {
5131			var t = this,
5132			    rendererName = t.media.rendererName,
5133			    src = t.media.originalNode.src;
5134
5135			for (var featureIndex in t.options.features) {
5136				var feature = t.options.features[featureIndex];
5137				if (t['clean' + feature]) {
5138					try {
5139						t['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media);
5140					} catch (e) {
5141						console.error('error cleaning ' + feature, e);
5142					}
5143				}
5144			}
5145
5146			var nativeWidth = t.node.getAttribute('width'),
5147			    nativeHeight = t.node.getAttribute('height');
5148
5149			if (nativeWidth) {
5150				if (nativeWidth.indexOf('%') === -1) {
5151					nativeWidth = nativeWidth + 'px';
5152				}
5153			} else {
5154				nativeWidth = 'auto';
5155			}
5156
5157			if (nativeHeight) {
5158				if (nativeHeight.indexOf('%') === -1) {
5159					nativeHeight = nativeHeight + 'px';
5160				}
5161			} else {
5162				nativeHeight = 'auto';
5163			}
5164
5165			t.node.style.width = nativeWidth;
5166			t.node.style.height = nativeHeight;
5167
5168			t.setPlayerSize(0, 0);
5169
5170			if (!t.isDynamic) {
5171				(function () {
5172					t.node.setAttribute('controls', true);
5173					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5174					var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
5175					if (poster) {
5176						t.node.setAttribute('poster', poster.src);
5177					}
5178
5179					delete t.node.autoplay;
5180
5181					t.node.setAttribute('src', '');
5182					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5183						t.node.setAttribute('src', src);
5184					}
5185
5186					if (rendererName && rendererName.indexOf('iframe') > -1) {
5187						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5188						layer.remove();
5189					}
5190
5191					var node = t.node.cloneNode();
5192					node.style.display = '';
5193					t.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container));
5194					t.node.remove();
5195
5196					if (t.mediaFiles) {
5197						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5198							var source = _document2.default.createElement('source');
5199							source.setAttribute('src', t.mediaFiles[i].src);
5200							source.setAttribute('type', t.mediaFiles[i].type);
5201							node.appendChild(source);
5202						}
5203					}
5204					if (t.trackFiles) {
5205						var _loop3 = function _loop3(_i4, _total4) {
5206							var track = t.trackFiles[_i4];
5207							var newTrack = _document2.default.createElement('track');
5208							newTrack.kind = track.kind;
5209							newTrack.label = track.label;
5210							newTrack.srclang = track.srclang;
5211							newTrack.src = track.src;
5212
5213							node.appendChild(newTrack);
5214							newTrack.addEventListener('load', function () {
5215								this.mode = 'showing';
5216								node.textTracks[_i4].mode = 'showing';
5217							});
5218						};
5219
5220						for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5221							_loop3(_i4, _total4);
5222						}
5223					}
5224
5225					delete t.node;
5226					delete t.mediaFiles;
5227					delete t.trackFiles;
5228				})();
5229			} else {
5230				t.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container));
5231			}
5232
5233			if (t.media.renderer && typeof t.media.renderer.destroy === 'function') {
5234				t.media.renderer.destroy();
5235			}
5236
5237			delete _mejs2.default.players[t.id];
5238
5239			if (_typeof(t.getElement(t.container)) === 'object') {
5240				var offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5241				if (offscreen) {
5242					offscreen.remove();
5243				}
5244				t.getElement(t.container).remove();
5245			}
5246			t.globalUnbind('resize', t.globalResizeCallback);
5247			t.globalUnbind('keydown', t.globalKeydownCallback);
5248			t.globalUnbind('click', t.globalClickCallback);
5249
5250			delete t.media.player;
5251		}
5252	}, {
5253		key: 'paused',
5254		get: function get() {
5255			return this.proxy.paused;
5256		}
5257	}, {
5258		key: 'muted',
5259		get: function get() {
5260			return this.proxy.muted;
5261		},
5262		set: function set(muted) {
5263			this.setMuted(muted);
5264		}
5265	}, {
5266		key: 'ended',
5267		get: function get() {
5268			return this.proxy.ended;
5269		}
5270	}, {
5271		key: 'readyState',
5272		get: function get() {
5273			return this.proxy.readyState;
5274		}
5275	}, {
5276		key: 'currentTime',
5277		set: function set(time) {
5278			this.setCurrentTime(time);
5279		},
5280		get: function get() {
5281			return this.getCurrentTime();
5282		}
5283	}, {
5284		key: 'duration',
5285		get: function get() {
5286			return this.getDuration();
5287		}
5288	}, {
5289		key: 'volume',
5290		set: function set(volume) {
5291			this.setVolume(volume);
5292		},
5293		get: function get() {
5294			return this.getVolume();
5295		}
5296	}, {
5297		key: 'src',
5298		set: function set(src) {
5299			this.setSrc(src);
5300		},
5301		get: function get() {
5302			return this.getSrc();
5303		}
5304	}]);
5305
5306	return MediaElementPlayer;
5307}();
5308
5309_window2.default.MediaElementPlayer = MediaElementPlayer;
5310_mejs2.default.MediaElementPlayer = MediaElementPlayer;
5311
5312exports.default = MediaElementPlayer;
5313
5314},{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){
5315'use strict';
5316
5317Object.defineProperty(exports, "__esModule", {
5318	value: true
5319});
5320
5321var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5322
5323var _window = _dereq_(3);
5324
5325var _window2 = _interopRequireDefault(_window);
5326
5327function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5328
5329function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5330
5331var DefaultPlayer = function () {
5332	function DefaultPlayer(player) {
5333		_classCallCheck(this, DefaultPlayer);
5334
5335		this.media = player.media;
5336		this.isVideo = player.isVideo;
5337		this.classPrefix = player.options.classPrefix;
5338		this.createIframeLayer = function () {
5339			return player.createIframeLayer();
5340		};
5341		this.setPoster = function (url) {
5342			return player.setPoster(url);
5343		};
5344		return this;
5345	}
5346
5347	_createClass(DefaultPlayer, [{
5348		key: 'play',
5349		value: function play() {
5350			this.media.play();
5351		}
5352	}, {
5353		key: 'pause',
5354		value: function pause() {
5355			this.media.pause();
5356		}
5357	}, {
5358		key: 'load',
5359		value: function load() {
5360			var t = this;
5361
5362			if (!t.isLoaded) {
5363				t.media.load();
5364			}
5365
5366			t.isLoaded = true;
5367		}
5368	}, {
5369		key: 'setCurrentTime',
5370		value: function setCurrentTime(time) {
5371			this.media.setCurrentTime(time);
5372		}
5373	}, {
5374		key: 'getCurrentTime',
5375		value: function getCurrentTime() {
5376			return this.media.currentTime;
5377		}
5378	}, {
5379		key: 'getDuration',
5380		value: function getDuration() {
5381			var duration = this.media.getDuration();
5382			if (duration === Infinity && this.media.seekable && this.media.seekable.length) {
5383				duration = this.media.seekable.end(0);
5384			}
5385			return duration;
5386		}
5387	}, {
5388		key: 'setVolume',
5389		value: function setVolume(volume) {
5390			this.media.setVolume(volume);
5391		}
5392	}, {
5393		key: 'getVolume',
5394		value: function getVolume() {
5395			return this.media.getVolume();
5396		}
5397	}, {
5398		key: 'setMuted',
5399		value: function setMuted(value) {
5400			this.media.setMuted(value);
5401		}
5402	}, {
5403		key: 'setSrc',
5404		value: function setSrc(src) {
5405			var t = this,
5406			    layer = document.getElementById(t.media.id + '-iframe-overlay');
5407
5408			if (layer) {
5409				layer.remove();
5410			}
5411
5412			t.media.setSrc(src);
5413			t.createIframeLayer();
5414			if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5415				t.setPoster(t.media.renderer.getPosterUrl());
5416			}
5417		}
5418	}, {
5419		key: 'getSrc',
5420		value: function getSrc() {
5421			return this.media.getSrc();
5422		}
5423	}, {
5424		key: 'canPlayType',
5425		value: function canPlayType(type) {
5426			return this.media.canPlayType(type);
5427		}
5428	}, {
5429		key: 'paused',
5430		get: function get() {
5431			return this.media.paused;
5432		}
5433	}, {
5434		key: 'muted',
5435		set: function set(muted) {
5436			this.setMuted(muted);
5437		},
5438		get: function get() {
5439			return this.media.muted;
5440		}
5441	}, {
5442		key: 'ended',
5443		get: function get() {
5444			return this.media.ended;
5445		}
5446	}, {
5447		key: 'readyState',
5448		get: function get() {
5449			return this.media.readyState;
5450		}
5451	}, {
5452		key: 'currentTime',
5453		set: function set(time) {
5454			this.setCurrentTime(time);
5455		},
5456		get: function get() {
5457			return this.getCurrentTime();
5458		}
5459	}, {
5460		key: 'duration',
5461		get: function get() {
5462			return this.getDuration();
5463		}
5464	}, {
5465		key: 'remainingTime',
5466		get: function get() {
5467			return this.getDuration() - this.currentTime();
5468		}
5469	}, {
5470		key: 'volume',
5471		set: function set(volume) {
5472			this.setVolume(volume);
5473		},
5474		get: function get() {
5475			return this.getVolume();
5476		}
5477	}, {
5478		key: 'src',
5479		set: function set(src) {
5480			this.setSrc(src);
5481		},
5482		get: function get() {
5483			return this.getSrc();
5484		}
5485	}]);
5486
5487	return DefaultPlayer;
5488}();
5489
5490exports.default = DefaultPlayer;
5491
5492
5493_window2.default.DefaultPlayer = DefaultPlayer;
5494
5495},{"3":3}],18:[function(_dereq_,module,exports){
5496'use strict';
5497
5498var _window = _dereq_(3);
5499
5500var _window2 = _interopRequireDefault(_window);
5501
5502var _mejs = _dereq_(7);
5503
5504var _mejs2 = _interopRequireDefault(_mejs);
5505
5506var _player = _dereq_(16);
5507
5508var _player2 = _interopRequireDefault(_player);
5509
5510function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5511
5512if (typeof jQuery !== 'undefined') {
5513	_mejs2.default.$ = jQuery;
5514} else if (typeof Zepto !== 'undefined') {
5515	_mejs2.default.$ = Zepto;
5516} else if (typeof ender !== 'undefined') {
5517	_mejs2.default.$ = ender;
5518}
5519
5520(function ($) {
5521	if (typeof $ !== 'undefined') {
5522		$.fn.mediaelementplayer = function (options) {
5523			if (options === false) {
5524				this.each(function () {
5525					var player = $(this).data('mediaelementplayer');
5526					if (player) {
5527						player.remove();
5528					}
5529					$(this).removeData('mediaelementplayer');
5530				});
5531			} else {
5532				this.each(function () {
5533					$(this).data('mediaelementplayer', new _player2.default(this, options));
5534				});
5535			}
5536			return this;
5537		};
5538
5539		$(document).ready(function () {
5540			$('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5541		});
5542	}
5543})(_mejs2.default.$);
5544
5545},{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){
5546'use strict';
5547
5548var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5549
5550var _window = _dereq_(3);
5551
5552var _window2 = _interopRequireDefault(_window);
5553
5554var _mejs = _dereq_(7);
5555
5556var _mejs2 = _interopRequireDefault(_mejs);
5557
5558var _renderer = _dereq_(8);
5559
5560var _general = _dereq_(27);
5561
5562var _media = _dereq_(28);
5563
5564var _constants = _dereq_(25);
5565
5566var _dom = _dereq_(26);
5567
5568function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5569
5570var NativeDash = {
5571
5572	promise: null,
5573
5574	load: function load(settings) {
5575		if (typeof dashjs !== 'undefined') {
5576			NativeDash.promise = new Promise(function (resolve) {
5577				resolve();
5578			}).then(function () {
5579				NativeDash._createPlayer(settings);
5580			});
5581		} else {
5582			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5583
5584			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5585			NativeDash.promise.then(function () {
5586				NativeDash._createPlayer(settings);
5587			});
5588		}
5589
5590		return NativeDash.promise;
5591	},
5592
5593	_createPlayer: function _createPlayer(settings) {
5594		var player = dashjs.MediaPlayer().create();
5595		_window2.default['__ready__' + settings.id](player);
5596		return player;
5597	}
5598};
5599
5600var DashNativeRenderer = {
5601	name: 'native_dash',
5602	options: {
5603		prefix: 'native_dash',
5604		dash: {
5605			path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5606			debug: false,
5607			drm: {},
5608
5609			robustnessLevel: ''
5610		}
5611	},
5612
5613	canPlayType: function canPlayType(type) {
5614		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5615	},
5616
5617	create: function create(mediaElement, options, mediaFiles) {
5618
5619		var originalNode = mediaElement.originalNode,
5620		    id = mediaElement.id + '_' + options.prefix,
5621		    autoplay = originalNode.autoplay,
5622		    children = originalNode.children;
5623
5624		var node = null,
5625		    dashPlayer = null;
5626
5627		originalNode.removeAttribute('type');
5628		for (var i = 0, total = children.length; i < total; i++) {
5629			children[i].removeAttribute('type');
5630		}
5631
5632		node = originalNode.cloneNode(true);
5633		options = Object.assign(options, mediaElement.options);
5634
5635		var props = _mejs2.default.html5media.properties,
5636		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
5637			return e !== 'error';
5638		}),
5639		    attachNativeEvents = function attachNativeEvents(e) {
5640			var event = (0, _general.createEvent)(e.type, mediaElement);
5641			mediaElement.dispatchEvent(event);
5642		},
5643		    assignGettersSetters = function assignGettersSetters(propName) {
5644			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5645
5646			node['get' + capName] = function () {
5647				return dashPlayer !== null ? node[propName] : null;
5648			};
5649
5650			node['set' + capName] = function (value) {
5651				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5652					if (propName === 'src') {
5653						var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5654						node[propName] = source;
5655						if (dashPlayer !== null) {
5656							dashPlayer.reset();
5657							for (var _i = 0, _total = events.length; _i < _total; _i++) {
5658								node.removeEventListener(events[_i], attachNativeEvents);
5659							}
5660							dashPlayer = NativeDash._createPlayer({
5661								options: options.dash,
5662								id: id
5663							});
5664
5665							if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5666								dashPlayer.setProtectionData(value.drm);
5667								if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5668									dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5669								}
5670							}
5671							dashPlayer.attachSource(source);
5672							if (autoplay) {
5673								dashPlayer.play();
5674							}
5675						}
5676					} else {
5677						node[propName] = value;
5678					}
5679				}
5680			};
5681		};
5682
5683		for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5684			assignGettersSetters(props[_i2]);
5685		}
5686
5687		_window2.default['__ready__' + id] = function (_dashPlayer) {
5688			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5689
5690			var dashEvents = dashjs.MediaPlayer.events,
5691			    assignEvents = function assignEvents(eventName) {
5692				if (eventName === 'loadedmetadata') {
5693					dashPlayer.initialize();
5694					dashPlayer.attachView(node);
5695					dashPlayer.setAutoPlay(false);
5696
5697					if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5698						dashPlayer.setProtectionData(options.dash.drm);
5699						if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5700							dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5701						}
5702					}
5703					dashPlayer.attachSource(node.getSrc());
5704				}
5705
5706				node.addEventListener(eventName, attachNativeEvents);
5707			};
5708
5709			for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5710				assignEvents(events[_i3]);
5711			}
5712
5713			var assignMdashEvents = function assignMdashEvents(e) {
5714				if (e.type.toLowerCase() === 'error') {
5715					mediaElement.generateError(e.message, node.src);
5716					console.error(e);
5717				} else {
5718					var _event = (0, _general.createEvent)(e.type, mediaElement);
5719					_event.data = e;
5720					mediaElement.dispatchEvent(_event);
5721				}
5722			};
5723
5724			for (var eventType in dashEvents) {
5725				if (dashEvents.hasOwnProperty(eventType)) {
5726					dashPlayer.on(dashEvents[eventType], function (e) {
5727						return assignMdashEvents(e);
5728					});
5729				}
5730			}
5731		};
5732
5733		if (mediaFiles && mediaFiles.length > 0) {
5734			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5735				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5736					node.setAttribute('src', mediaFiles[_i4].src);
5737					if (typeof mediaFiles[_i4].drm !== 'undefined') {
5738						options.dash.drm = mediaFiles[_i4].drm;
5739					}
5740					break;
5741				}
5742			}
5743		}
5744
5745		node.setAttribute('id', id);
5746
5747		originalNode.parentNode.insertBefore(node, originalNode);
5748		originalNode.autoplay = false;
5749		originalNode.style.display = 'none';
5750
5751		node.setSize = function (width, height) {
5752			node.style.width = width + 'px';
5753			node.style.height = height + 'px';
5754			return node;
5755		};
5756
5757		node.hide = function () {
5758			node.pause();
5759			node.style.display = 'none';
5760			return node;
5761		};
5762
5763		node.show = function () {
5764			node.style.display = '';
5765			return node;
5766		};
5767
5768		node.destroy = function () {
5769			if (dashPlayer !== null) {
5770				dashPlayer.reset();
5771			}
5772		};
5773
5774		var event = (0, _general.createEvent)('rendererready', node);
5775		mediaElement.dispatchEvent(event);
5776
5777		mediaElement.promises.push(NativeDash.load({
5778			options: options.dash,
5779			id: id
5780		}));
5781
5782		return node;
5783	}
5784};
5785
5786_media.typeChecks.push(function (url) {
5787	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5788});
5789
5790_renderer.renderer.add(DashNativeRenderer);
5791
5792},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){
5793'use strict';
5794
5795Object.defineProperty(exports, "__esModule", {
5796	value: true
5797});
5798exports.PluginDetector = undefined;
5799
5800var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5801
5802var _window = _dereq_(3);
5803
5804var _window2 = _interopRequireDefault(_window);
5805
5806var _document = _dereq_(2);
5807
5808var _document2 = _interopRequireDefault(_document);
5809
5810var _mejs = _dereq_(7);
5811
5812var _mejs2 = _interopRequireDefault(_mejs);
5813
5814var _i18n = _dereq_(5);
5815
5816var _i18n2 = _interopRequireDefault(_i18n);
5817
5818var _renderer = _dereq_(8);
5819
5820var _general = _dereq_(27);
5821
5822var _constants = _dereq_(25);
5823
5824var _media = _dereq_(28);
5825
5826function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5827
5828var PluginDetector = exports.PluginDetector = {
5829	plugins: [],
5830
5831	hasPluginVersion: function hasPluginVersion(plugin, v) {
5832		var pv = PluginDetector.plugins[plugin];
5833		v[1] = v[1] || 0;
5834		v[2] = v[2] || 0;
5835		return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];
5836	},
5837
5838	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5839		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5840	},
5841
5842	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5843
5844		var version = [0, 0, 0],
5845		    description = void 0,
5846		    ax = void 0;
5847
5848		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5849			description = _constants.NAV.plugins[pluginName].description;
5850			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5851				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5852				for (var i = 0, total = version.length; i < total; i++) {
5853					version[i] = parseInt(version[i].match(/\d+/), 10);
5854				}
5855			}
5856		} else if (_window2.default.ActiveXObject !== undefined) {
5857			try {
5858				ax = new ActiveXObject(activeX);
5859				if (ax) {
5860					version = axDetect(ax);
5861				}
5862			} catch (e) {
5863				
5864			}
5865		}
5866		return version;
5867	}
5868};
5869
5870PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5871	var version = [],
5872	    d = ax.GetVariable("$version");
5873
5874	if (d) {
5875		d = d.split(" ")[1].split(",");
5876		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5877	}
5878	return version;
5879});
5880
5881var FlashMediaElementRenderer = {
5882	create: function create(mediaElement, options, mediaFiles) {
5883
5884		var flash = {};
5885		var isActive = false;
5886
5887		flash.options = options;
5888		flash.id = mediaElement.id + '_' + flash.options.prefix;
5889		flash.mediaElement = mediaElement;
5890		flash.flashState = {};
5891		flash.flashApi = null;
5892		flash.flashApiStack = [];
5893
5894		var props = _mejs2.default.html5media.properties,
5895		    assignGettersSetters = function assignGettersSetters(propName) {
5896			flash.flashState[propName] = null;
5897
5898			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5899
5900			flash['get' + capName] = function () {
5901				if (flash.flashApi !== null) {
5902					if (typeof flash.flashApi['get_' + propName] === 'function') {
5903						var value = flash.flashApi['get_' + propName]();
5904
5905						if (propName === 'buffered') {
5906							return {
5907								start: function start() {
5908									return 0;
5909								},
5910								end: function end() {
5911									return value;
5912								},
5913								length: 1
5914							};
5915						}
5916						return value;
5917					} else {
5918						return null;
5919					}
5920				} else {
5921					return null;
5922				}
5923			};
5924
5925			flash['set' + capName] = function (value) {
5926				if (propName === 'src') {
5927					value = (0, _media.absolutizeUrl)(value);
5928				}
5929
5930				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5931					try {
5932						flash.flashApi['set_' + propName](value);
5933					} catch (e) {
5934						
5935					}
5936				} else {
5937					flash.flashApiStack.push({
5938						type: 'set',
5939						propName: propName,
5940						value: value
5941					});
5942				}
5943			};
5944		};
5945
5946		for (var i = 0, total = props.length; i < total; i++) {
5947			assignGettersSetters(props[i]);
5948		}
5949
5950		var methods = _mejs2.default.html5media.methods,
5951		    assignMethods = function assignMethods(methodName) {
5952			flash[methodName] = function () {
5953				if (isActive) {
5954					if (flash.flashApi !== null) {
5955						if (flash.flashApi['fire_' + methodName]) {
5956							try {
5957								flash.flashApi['fire_' + methodName]();
5958							} catch (e) {
5959								
5960							}
5961						} else {
5962							
5963						}
5964					} else {
5965						flash.flashApiStack.push({
5966							type: 'call',
5967							methodName: methodName
5968						});
5969					}
5970				}
5971			};
5972		};
5973		methods.push('stop');
5974		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5975			assignMethods(methods[_i]);
5976		}
5977
5978		var initEvents = ['rendererready'];
5979
5980		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5981			var event = (0, _general.createEvent)(initEvents[_i2], flash);
5982			mediaElement.dispatchEvent(event);
5983		}
5984
5985		_window2.default['__ready__' + flash.id] = function () {
5986
5987			flash.flashReady = true;
5988			flash.flashApi = _document2.default.getElementById('__' + flash.id);
5989
5990			if (flash.flashApiStack.length) {
5991				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5992					var stackItem = flash.flashApiStack[_i3];
5993
5994					if (stackItem.type === 'set') {
5995						var propName = stackItem.propName,
5996						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5997
5998						flash['set' + capName](stackItem.value);
5999					} else if (stackItem.type === 'call') {
6000						flash[stackItem.methodName]();
6001					}
6002				}
6003			}
6004		};
6005
6006		_window2.default['__event__' + flash.id] = function (eventName, message) {
6007			var event = (0, _general.createEvent)(eventName, flash);
6008			if (message) {
6009				try {
6010					event.data = JSON.parse(message);
6011					event.details.data = JSON.parse(message);
6012				} catch (e) {
6013					event.message = message;
6014				}
6015			}
6016
6017			flash.mediaElement.dispatchEvent(event);
6018		};
6019
6020		flash.flashWrapper = _document2.default.createElement('div');
6021
6022		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
6023			flash.options.shimScriptAccess = 'sameDomain';
6024		}
6025
6026		var autoplay = mediaElement.originalNode.autoplay,
6027		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
6028		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
6029		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
6030		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
6031
6032		if (mediaElement.originalNode.getAttribute('src')) {
6033			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
6034		}
6035
6036		if (flash.options.enablePseudoStreaming === true) {
6037			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
6038			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
6039		}
6040
6041		if (flash.options.streamDelimiter) {
6042			flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
6043		}
6044
6045		if (flash.options.proxyType) {
6046			flashVars.push('proxytype=' + flash.options.proxyType);
6047		}
6048
6049		mediaElement.appendChild(flash.flashWrapper);
6050		mediaElement.originalNode.style.display = 'none';
6051
6052		var settings = [];
6053
6054		if (_constants.IS_IE || _constants.IS_EDGE) {
6055			var specialIEContainer = _document2.default.createElement('div');
6056			flash.flashWrapper.appendChild(specialIEContainer);
6057
6058			if (_constants.IS_EDGE) {
6059				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
6060			} else {
6061				settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/s
6061hockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
6062			}
6063
6064			if (!isVideo) {
6065				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
6066			}
6067
6068			specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
6069		} else {
6070
6071			settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
6072
6073			if (isVideo) {
6074				settings.push('width="' + flashWidth + '"');
6075				settings.push('height="' + flashHeight + '"');
6076			} else {
6077				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6078			}
6079
6080			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6081		}
6082
6083		flash.flashNode = flash.flashWrapper.lastChild;
6084
6085		flash.hide = function () {
6086			isActive = false;
6087			if (isVideo) {
6088				flash.flashNode.style.display = 'none';
6089			}
6090		};
6091		flash.show = function () {
6092			isActive = true;
6093			if (isVideo) {
6094				flash.flashNode.style.display = '';
6095			}
6096		};
6097		flash.setSize = function (width, height) {
6098			flash.flashNode.style.width = width + 'px';
6099			flash.flashNode.style.height = height + 'px';
6100
6101			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6102				flash.flashApi.fire_setSize(width, height);
6103			}
6104		};
6105
6106		flash.destroy = function () {
6107			flash.flashNode.remove();
6108		};
6109
6110		if (mediaFiles && mediaFiles.length > 0) {
6111			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6112				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6113					flash.setSrc(mediaFiles[_i4].src);
6114					break;
6115				}
6116			}
6117		}
6118
6119		return flash;
6120	}
6121};
6122
6123var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6124
6125if (hasFlash) {
6126	_media.typeChecks.push(function (url) {
6127		url = url.toLowerCase();
6128
6129		if (url.startsWith('rtmp')) {
6130			if (~url.indexOf('.mp3')) {
6131				return 'audio/rtmp';
6132			} else {
6133				return 'video/rtmp';
6134			}
6135		} else if (/\.og(a|g)/i.test(url)) {
6136			return 'audio/ogg';
6137		} else if (~url.indexOf('.m3u8')) {
6138			return 'application/x-mpegURL';
6139		} else if (~url.indexOf('.mpd')) {
6140			return 'application/dash+xml';
6141		} else if (~url.indexOf('.flv')) {
6142			return 'video/flv';
6143		} else {
6144			return null;
6145		}
6146	});
6147
6148	var FlashMediaElementVideoRenderer = {
6149		name: 'flash_video',
6150		options: {
6151			prefix: 'flash_video',
6152			filename: 'mediaelement-flash-video.swf',
6153			enablePseudoStreaming: false,
6154
6155			pseudoStreamingStartQueryParam: 'start',
6156
6157			pseudoStreamingType: 'byte',
6158
6159			proxyType: '',
6160
6161			streamDelimiter: ''
6162		},
6163
6164		canPlayType: function canPlayType(type) {
6165			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6166		},
6167
6168		create: FlashMediaElementRenderer.create
6169
6170	};
6171	_renderer.renderer.add(FlashMediaElementVideoRenderer);
6172
6173	var FlashMediaElementHlsVideoRenderer = {
6174		name: 'flash_hls',
6175		options: {
6176			prefix: 'flash_hls',
6177			filename: 'mediaelement-flash-video-hls.swf'
6178		},
6179
6180		canPlayType: function canPlayType(type) {
6181			return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6182		},
6183
6184		create: FlashMediaElementRenderer.create
6185	};
6186	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6187
6188	var FlashMediaElementMdashVideoRenderer = {
6189		name: 'flash_dash',
6190		options: {
6191			prefix: 'flash_dash',
6192			filename: 'mediaelement-flash-video-mdash.swf'
6193		},
6194
6195		canPlayType: function canPlayType(type) {
vendor: 59,827 bytes, lines 6196-8299
6196			return ~['application/dash+xml'].indexOf(type.toLowerCase());
6197		},
6198
6199		create: FlashMediaElementRenderer.create
6200	};
6201	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6202
6203	var FlashMediaElementAudioRenderer = {
6204		name: 'flash_audio',
6205		options: {
6206			prefix: 'flash_audio',
6207			filename: 'mediaelement-flash-audio.swf'
6208		},
6209
6210		canPlayType: function canPlayType(type) {
6211			return ~['audio/mp3'].indexOf(type.toLowerCase());
6212		},
6213
6214		create: FlashMediaElementRenderer.create
6215	};
6216	_renderer.renderer.add(FlashMediaElementAudioRenderer);
6217
6218	var FlashMediaElementAudioOggRenderer = {
6219		name: 'flash_audio_ogg',
6220		options: {
6221			prefix: 'flash_audio_ogg',
6222			filename: 'mediaelement-flash-audio-ogg.swf'
6223		},
6224
6225		canPlayType: function canPlayType(type) {
6226			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6227		},
6228
6229		create: FlashMediaElementRenderer.create
6230	};
6231	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6232}
6233
6234},{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){
6235'use strict';
6236
6237var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6238
6239var _window = _dereq_(3);
6240
6241var _window2 = _interopRequireDefault(_window);
6242
6243var _mejs = _dereq_(7);
6244
6245var _mejs2 = _interopRequireDefault(_mejs);
6246
6247var _renderer = _dereq_(8);
6248
6249var _general = _dereq_(27);
6250
6251var _constants = _dereq_(25);
6252
6253var _media = _dereq_(28);
6254
6255var _dom = _dereq_(26);
6256
6257function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6258
6259var NativeFlv = {
6260
6261	promise: null,
6262
6263	load: function load(settings) {
6264		if (typeof flvjs !== 'undefined') {
6265			NativeFlv.promise = new Promise(function (resolve) {
6266				resolve();
6267			}).then(function () {
6268				NativeFlv._createPlayer(settings);
6269			});
6270		} else {
6271			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
6272
6273			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6274			NativeFlv.promise.then(function () {
6275				NativeFlv._createPlayer(settings);
6276			});
6277		}
6278
6279		return NativeFlv.promise;
6280	},
6281
6282	_createPlayer: function _createPlayer(settings) {
6283		flvjs.LoggingControl.enableDebug = settings.options.debug;
6284		flvjs.LoggingControl.enableVerbose = settings.options.debug;
6285		var player = flvjs.createPlayer(settings.options, settings.configs);
6286		_window2.default['__ready__' + settings.id](player);
6287		return player;
6288	}
6289};
6290
6291var FlvNativeRenderer = {
6292	name: 'native_flv',
6293	options: {
6294		prefix: 'native_flv',
6295		flv: {
6296			path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
6297
6298			cors: true,
6299			debug: false
6300		}
6301	},
6302
6303	canPlayType: function canPlayType(type) {
6304		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6305	},
6306
6307	create: function create(mediaElement, options, mediaFiles) {
6308
6309		var originalNode = mediaElement.originalNode,
6310		    id = mediaElement.id + '_' + options.prefix;
6311
6312		var node = null,
6313		    flvPlayer = null;
6314
6315		node = originalNode.cloneNode(true);
6316		options = Object.assign(options, mediaElement.options);
6317
6318		var props = _mejs2.default.html5media.properties,
6319		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6320			return e !== 'error';
6321		}),
6322		    attachNativeEvents = function attachNativeEvents(e) {
6323			var event = (0, _general.createEvent)(e.type, mediaElement);
6324			mediaElement.dispatchEvent(event);
6325		},
6326		    assignGettersSetters = function assignGettersSetters(propName) {
6327			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6328
6329			node['get' + capName] = function () {
6330				return flvPlayer !== null ? node[propName] : null;
6331			};
6332
6333			node['set' + capName] = function (value) {
6334				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6335					if (propName === 'src') {
6336						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6337						if (flvPlayer !== null) {
6338							var _flvOptions = {};
6339							_flvOptions.type = 'flv';
6340							_flvOptions.url = value;
6341							_flvOptions.cors = options.flv.cors;
6342							_flvOptions.debug = options.flv.debug;
6343							_flvOptions.path = options.flv.path;
6344							var _flvConfigs = options.flv.configs;
6345
6346							flvPlayer.destroy();
6347							for (var i = 0, total = events.length; i < total; i++) {
6348								node.removeEventListener(events[i], attachNativeEvents);
6349							}
6350							flvPlayer = NativeFlv._createPlayer({
6351								options: _flvOptions,
6352								configs: _flvConfigs,
6353								id: id
6354							});
6355							flvPlayer.attachMediaElement(node);
6356							flvPlayer.load();
6357						}
6358					} else {
6359						node[propName] = value;
6360					}
6361				}
6362			};
6363		};
6364
6365		for (var i = 0, total = props.length; i < total; i++) {
6366			assignGettersSetters(props[i]);
6367		}
6368
6369		_window2.default['__ready__' + id] = function (_flvPlayer) {
6370			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6371
6372			var flvEvents = flvjs.Events,
6373			    assignEvents = function assignEvents(eventName) {
6374				if (eventName === 'loadedmetadata') {
6375					flvPlayer.unload();
6376					flvPlayer.detachMediaElement();
6377					flvPlayer.attachMediaElement(node);
6378					flvPlayer.load();
6379				}
6380
6381				node.addEventListener(eventName, attachNativeEvents);
6382			};
6383
6384			for (var _i = 0, _total = events.length; _i < _total; _i++) {
6385				assignEvents(events[_i]);
6386			}
6387
6388			var assignFlvEvents = function assignFlvEvents(name, data) {
6389				if (name === 'error') {
6390					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6391					mediaElement.generateError(message, node.src);
6392				} else {
6393					var _event = (0, _general.createEvent)(name, mediaElement);
6394					_event.data = data;
6395					mediaElement.dispatchEvent(_event);
6396				}
6397			};
6398
6399			var _loop = function _loop(eventType) {
6400				if (flvEvents.hasOwnProperty(eventType)) {
6401					flvPlayer.on(flvEvents[eventType], function () {
6402						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6403							args[_key] = arguments[_key];
6404						}
6405
6406						return assignFlvEvents(flvEvents[eventType], args);
6407					});
6408				}
6409			};
6410
6411			for (var eventType in flvEvents) {
6412				_loop(eventType);
6413			}
6414		};
6415
6416		if (mediaFiles && mediaFiles.length > 0) {
6417			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6418				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6419					node.setAttribute('src', mediaFiles[_i2].src);
6420					break;
6421				}
6422			}
6423		}
6424
6425		node.setAttribute('id', id);
6426
6427		originalNode.parentNode.insertBefore(node, originalNode);
6428		originalNode.autoplay = false;
6429		originalNode.style.display = 'none';
6430
6431		var flvOptions = {};
6432		flvOptions.type = 'flv';
6433		flvOptions.url = node.src;
6434		flvOptions.cors = options.flv.cors;
6435		flvOptions.debug = options.flv.debug;
6436		flvOptions.path = options.flv.path;
6437		var flvConfigs = options.flv.configs;
6438
6439		node.setSize = function (width, height) {
6440			node.style.width = width + 'px';
6441			node.style.height = height + 'px';
6442			return node;
6443		};
6444
6445		node.hide = function () {
6446			if (flvPlayer !== null) {
6447				flvPlayer.pause();
6448			}
6449			node.style.display = 'none';
6450			return node;
6451		};
6452
6453		node.show = function () {
6454			node.style.display = '';
6455			return node;
6456		};
6457
6458		node.destroy = function () {
6459			if (flvPlayer !== null) {
6460				flvPlayer.destroy();
6461			}
6462		};
6463
6464		var event = (0, _general.createEvent)('rendererready', node);
6465		mediaElement.dispatchEvent(event);
6466
6467		mediaElement.promises.push(NativeFlv.load({
6468			options: flvOptions,
6469			configs: flvConfigs,
6470			id: id
6471		}));
6472
6473		return node;
6474	}
6475};
6476
6477_media.typeChecks.push(function (url) {
6478	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6479});
6480
6481_renderer.renderer.add(FlvNativeRenderer);
6482
6483},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){
6484'use strict';
6485
6486var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6487
6488var _window = _dereq_(3);
6489
6490var _window2 = _interopRequireDefault(_window);
6491
6492var _mejs = _dereq_(7);
6493
6494var _mejs2 = _interopRequireDefault(_mejs);
6495
6496var _renderer = _dereq_(8);
6497
6498var _general = _dereq_(27);
6499
6500var _constants = _dereq_(25);
6501
6502var _media = _dereq_(28);
6503
6504var _dom = _dereq_(26);
6505
6506function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6507
6508var NativeHls = {
6509
6510	promise: null,
6511
6512	load: function load(settings) {
6513		if (typeof Hls !== 'undefined') {
6514			NativeHls.promise = new Promise(function (resolve) {
6515				resolve();
6516			}).then(function () {
6517				NativeHls._createPlayer(settings);
6518			});
6519		} else {
6520			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
6521
6522			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6523			NativeHls.promise.then(function () {
6524				NativeHls._createPlayer(settings);
6525			});
6526		}
6527
6528		return NativeHls.promise;
6529	},
6530
6531	_createPlayer: function _createPlayer(settings) {
6532		var player = new Hls(settings.options);
6533		_window2.default['__ready__' + settings.id](player);
6534		return player;
6535	}
6536};
6537
6538var HlsNativeRenderer = {
6539	name: 'native_hls',
6540	options: {
6541		prefix: 'native_hls',
6542		hls: {
6543			path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
6544
6545			autoStartLoad: false,
6546			debug: false
6547		}
6548	},
6549
6550	canPlayType: function canPlayType(type) {
6551		return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6552	},
6553
6554	create: function create(mediaElement, options, mediaFiles) {
6555
6556		var originalNode = mediaElement.originalNode,
6557		    id = mediaElement.id + '_' + options.prefix,
6558		    preload = originalNode.getAttribute('preload'),
6559		    autoplay = originalNode.autoplay;
6560
6561		var hlsPlayer = null,
6562		    node = null,
6563		    index = 0,
6564		    total = mediaFiles.length;
6565
6566		node = originalNode.cloneNode(true);
6567		options = Object.assign(options, mediaElement.options);
6568		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6569
6570		var props = _mejs2.default.html5media.properties,
6571		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6572			return e !== 'error';
6573		}),
6574		    attachNativeEvents = function attachNativeEvents(e) {
6575			var event = (0, _general.createEvent)(e.type, mediaElement);
6576			mediaElement.dispatchEvent(event);
6577		},
6578		    assignGettersSetters = function assignGettersSetters(propName) {
6579			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6580
6581			node['get' + capName] = function () {
6582				return hlsPlayer !== null ? node[propName] : null;
6583			};
6584
6585			node['set' + capName] = function (value) {
6586				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6587					if (propName === 'src') {
6588						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6589						if (hlsPlayer !== null) {
6590							hlsPlayer.destroy();
6591							for (var i = 0, _total = events.length; i < _total; i++) {
6592								node.removeEventListener(events[i], attachNativeEvents);
6593							}
6594							hlsPlayer = NativeHls._createPlayer({
6595								options: options.hls,
6596								id: id
6597							});
6598							hlsPlayer.loadSource(value);
6599							hlsPlayer.attachMedia(node);
6600						}
6601					} else {
6602						node[propName] = value;
6603					}
6604				}
6605			};
6606		};
6607
6608		for (var i = 0, _total2 = props.length; i < _total2; i++) {
6609			assignGettersSetters(props[i]);
6610		}
6611
6612		_window2.default['__ready__' + id] = function (_hlsPlayer) {
6613			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6614			var hlsEvents = Hls.Events,
6615			    assignEvents = function assignEvents(eventName) {
6616				if (eventName === 'loadedmetadata') {
6617					var url = mediaElement.originalNode.src;
6618					hlsPlayer.detachMedia();
6619					hlsPlayer.loadSource(url);
6620					hlsPlayer.attachMedia(node);
6621				}
6622
6623				node.addEventListener(eventName, attachNativeEvents);
6624			};
6625
6626			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6627				assignEvents(events[_i]);
6628			}
6629
6630			var recoverDecodingErrorDate = void 0,
6631			    recoverSwapAudioCodecDate = void 0;
6632			var assignHlsEvents = function assignHlsEvents(name, data) {
6633				if (name === 'hlsError') {
6634					console.warn(data);
6635					data = data[1];
6636
6637					if (data.fatal) {
6638						switch (data.type) {
6639							case 'mediaError':
6640								var now = new Date().getTime();
6641								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6642									recoverDecodingErrorDate = new Date().getTime();
6643									hlsPlayer.recoverMediaError();
6644								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6645									recoverSwapAudioCodecDate = new Date().getTime();
6646									console.warn('Attempting to swap Audio Codec and recover from media error');
6647									hlsPlayer.swapAudioCodec();
6648									hlsPlayer.recoverMediaError();
6649								} else {
6650									var message = 'Cannot recover, last media error recovery failed';
6651									mediaElement.generateError(message, node.src);
6652									console.error(message);
6653								}
6654								break;
6655							case 'networkError':
6656								if (data.details === 'manifestLoadError') {
6657									if (index < total && mediaFiles[index + 1] !== undefined) {
6658										node.setSrc(mediaFiles[index++].src);
6659										node.load();
6660										node.play();
6661									} else {
6662										var _message = 'Network error';
6663										mediaElement.generateError(_message, mediaFiles);
6664										console.error(_message);
6665									}
6666								} else {
6667									var _message2 = 'Network error';
6668									mediaElement.generateError(_message2, mediaFiles);
6669									console.error(_message2);
6670								}
6671								break;
6672							default:
6673								hlsPlayer.destroy();
6674								break;
6675						}
6676						return;
6677					}
6678				}
6679				var event = (0, _general.createEvent)(name, mediaElement);
6680				event.data = data;
6681				mediaElement.dispatchEvent(event);
6682			};
6683
6684			var _loop = function _loop(eventType) {
6685				if (hlsEvents.hasOwnProperty(eventType)) {
6686					hlsPlayer.on(hlsEvents[eventType], function () {
6687						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6688							args[_key] = arguments[_key];
6689						}
6690
6691						return assignHlsEvents(hlsEvents[eventType], args);
6692					});
6693				}
6694			};
6695
6696			for (var eventType in hlsEvents) {
6697				_loop(eventType);
6698			}
6699		};
6700
6701		if (total > 0) {
6702			for (; index < total; index++) {
6703				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6704					node.setAttribute('src', mediaFiles[index].src);
6705					break;
6706				}
6707			}
6708		}
6709
6710		if (preload !== 'auto' && !autoplay) {
6711			node.addEventListener('play', function () {
6712				if (hlsPlayer !== null) {
6713					hlsPlayer.startLoad();
6714				}
6715			});
6716
6717			node.addEventListener('pause', function () {
6718				if (hlsPlayer !== null) {
6719					hlsPlayer.stopLoad();
6720				}
6721			});
6722		}
6723
6724		node.setAttribute('id', id);
6725
6726		originalNode.parentNode.insertBefore(node, originalNode);
6727		originalNode.autoplay = false;
6728		originalNode.style.display = 'none';
6729
6730		node.setSize = function (width, height) {
6731			node.style.width = width + 'px';
6732			node.style.height = height + 'px';
6733			return node;
6734		};
6735
6736		node.hide = function () {
6737			node.pause();
6738			node.style.display = 'none';
6739			return node;
6740		};
6741
6742		node.show = function () {
6743			node.style.display = '';
6744			return node;
6745		};
6746
6747		node.destroy = function () {
6748			if (hlsPlayer !== null) {
6749				hlsPlayer.stopLoad();
6750				hlsPlayer.destroy();
6751			}
6752		};
6753
6754		var event = (0, _general.createEvent)('rendererready', node);
6755		mediaElement.dispatchEvent(event);
6756
6757		mediaElement.promises.push(NativeHls.load({
6758			options: options.hls,
6759			id: id
6760		}));
6761
6762		return node;
6763	}
6764};
6765
6766_media.typeChecks.push(function (url) {
6767	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6768});
6769
6770_renderer.renderer.add(HlsNativeRenderer);
6771
6772},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){
6773'use strict';
6774
6775var _window = _dereq_(3);
6776
6777var _window2 = _interopRequireDefault(_window);
6778
6779var _document = _dereq_(2);
6780
6781var _document2 = _interopRequireDefault(_document);
6782
6783var _mejs = _dereq_(7);
6784
6785var _mejs2 = _interopRequireDefault(_mejs);
6786
6787var _renderer = _dereq_(8);
6788
6789var _general = _dereq_(27);
6790
6791var _constants = _dereq_(25);
6792
6793function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6794
6795var HtmlMediaElement = {
6796	name: 'html5',
6797	options: {
6798		prefix: 'html5'
6799	},
6800
6801	canPlayType: function canPlayType(type) {
6802
6803		var mediaElement = _document2.default.createElement('video');
6804
6805		if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
6806			return 'yes';
6807		} else if (mediaElement.canPlayType) {
6808			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6809		} else {
6810			return '';
6811		}
6812	},
6813
6814	create: function create(mediaElement, options, mediaFiles) {
6815
6816		var id = mediaElement.id + '_' + options.prefix;
6817		var isActive = false;
6818
6819		var node = null;
6820
6821		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6822			node = _document2.default.createElement('audio');
6823			mediaElement.appendChild(node);
6824		} else {
6825			node = mediaElement.originalNode;
6826		}
6827
6828		node.setAttribute('id', id);
6829
6830		var props = _mejs2.default.html5media.properties,
6831		    assignGettersSetters = function assignGettersSetters(propName) {
6832			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6833
6834			node['get' + capName] = function () {
6835				return node[propName];
6836			};
6837
6838			node['set' + capName] = function (value) {
6839				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6840					node[propName] = value;
6841				}
6842			};
6843		};
6844
6845		for (var i = 0, _total = props.length; i < _total; i++) {
6846			assignGettersSetters(props[i]);
6847		}
6848
6849		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6850			return e !== 'error';
6851		}),
6852		    assignEvents = function assignEvents(eventName) {
6853			node.addEventListener(eventName, function (e) {
6854				if (isActive) {
6855					var _event = (0, _general.createEvent)(e.type, e.target);
6856					mediaElement.dispatchEvent(_event);
6857				}
6858			});
6859		};
6860
6861		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6862			assignEvents(events[_i]);
6863		}
6864
6865		node.setSize = function (width, height) {
6866			node.style.width = width + 'px';
6867			node.style.height = height + 'px';
6868			return node;
6869		};
6870
6871		node.hide = function () {
6872			isActive = false;
6873			node.style.display = 'none';
6874
6875			return node;
6876		};
6877
6878		node.show = function () {
6879			isActive = true;
6880			node.style.display = '';
6881
6882			return node;
6883		};
6884
6885		var index = 0,
6886		    total = mediaFiles.length;
6887		if (total > 0) {
6888			for (; index < total; index++) {
6889				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6890					node.setAttribute('src', mediaFiles[index].src);
6891					break;
6892				}
6893			}
6894		}
6895
6896		node.addEventListener('error', function (e) {
6897			if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {
6898				if (index < total && mediaFiles[index + 1] !== undefined) {
6899					node.src = mediaFiles[index++].src;
6900					node.load();
6901					node.play();
6902				} else {
6903					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6904				}
6905			}
6906		});
6907
6908		var event = (0, _general.createEvent)('rendererready', node);
6909		mediaElement.dispatchEvent(event);
6910
6911		return node;
6912	}
6913};
6914
6915_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6916
6917_renderer.renderer.add(HtmlMediaElement);
6918
6919},{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){
6920'use strict';
6921
6922var _window = _dereq_(3);
6923
6924var _window2 = _interopRequireDefault(_window);
6925
6926var _document = _dereq_(2);
6927
6928var _document2 = _interopRequireDefault(_document);
6929
6930var _mejs = _dereq_(7);
6931
6932var _mejs2 = _interopRequireDefault(_mejs);
6933
6934var _renderer = _dereq_(8);
6935
6936var _general = _dereq_(27);
6937
6938var _media = _dereq_(28);
6939
6940var _dom = _dereq_(26);
6941
6942function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6943
6944var YouTubeApi = {
6945	isIframeStarted: false,
6946
6947	isIframeLoaded: false,
6948
6949	iframeQueue: [],
6950
6951	enqueueIframe: function enqueueIframe(settings) {
6952		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6953
6954		if (YouTubeApi.isLoaded) {
6955			YouTubeApi.createIframe(settings);
6956		} else {
6957			YouTubeApi.loadIframeApi();
6958			YouTubeApi.iframeQueue.push(settings);
6959		}
6960	},
6961
6962	loadIframeApi: function loadIframeApi() {
6963		if (!YouTubeApi.isIframeStarted) {
6964			(0, _dom.loadScript)('https://www.youtube.com/player_api');
6965			YouTubeApi.isIframeStarted = true;
6966		}
6967	},
6968
6969	iFrameReady: function iFrameReady() {
6970
6971		YouTubeApi.isLoaded = true;
6972		YouTubeApi.isIframeLoaded = true;
6973
6974		while (YouTubeApi.iframeQueue.length > 0) {
6975			var settings = YouTubeApi.iframeQueue.pop();
6976			YouTubeApi.createIframe(settings);
6977		}
6978	},
6979
6980	createIframe: function createIframe(settings) {
6981		return new YT.Player(settings.containerId, settings);
6982	},
6983
6984	getYouTubeId: function getYouTubeId(url) {
6985
6986		var youTubeId = '';
6987
6988		if (url.indexOf('?') > 0) {
6989			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6990
6991			if (youTubeId === '') {
6992				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6993			}
6994		} else {
6995			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6996		}
6997
6998		var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6999		youTubeId = id.split('?');
7000		return youTubeId[0];
7001	},
7002
7003	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
7004
7005		if (url === undefined || url === null || !url.trim().length) {
7006			return null;
7007		}
7008
7009		var parts = url.split('?'),
7010		    parameters = parts[1].split('&');
7011
7012		var youTubeId = '';
7013
7014		for (var i = 0, total = parameters.length; i < total; i++) {
7015			var paramParts = parameters[i].split('=');
7016			if (paramParts[0] === 'v') {
7017				youTubeId = paramParts[1];
7018				break;
7019			}
7020		}
7021
7022		return youTubeId;
7023	},
7024
7025	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
7026
7027		if (url === undefined || url === null || !url.trim().length) {
7028			return null;
7029		}
7030
7031		var parts = url.split('?');
7032		url = parts[0];
7033		return url.substring(url.lastIndexOf('/') + 1);
7034	},
7035
7036	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
7037		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
7038			return url;
7039		}
7040
7041		var parts = url.split('/');
7042		parts[2] = parts[2].replace('.com', '-nocookie.com');
7043		return parts.join('/');
7044	}
7045};
7046
7047var YouTubeIframeRenderer = {
7048	name: 'youtube_iframe',
7049
7050	options: {
7051		prefix: 'youtube_iframe',
7052
7053		youtube: {
7054			autoplay: 0,
7055			controls: 0,
7056			disablekb: 1,
7057			end: 0,
7058			loop: 0,
7059			modestbranding: 0,
7060			playsinline: 0,
7061			rel: 0,
7062			showinfo: 0,
7063			start: 0,
7064			iv_load_policy: 3,
7065
7066			nocookie: false,
7067
7068			imageQuality: null
7069		}
7070	},
7071
7072	canPlayType: function canPlayType(type) {
7073		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
7074	},
7075
7076	create: function create(mediaElement, options, mediaFiles) {
7077
7078		var youtube = {},
7079		    apiStack = [],
7080		    readyState = 4;
7081
7082		var youTubeApi = null,
7083		    paused = true,
7084		    ended = false,
7085		    youTubeIframe = null,
7086		    volume = 1;
7087
7088		youtube.options = options;
7089		youtube.id = mediaElement.id + '_' + options.prefix;
7090		youtube.mediaElement = mediaElement;
7091
7092		var props = _mejs2.default.html5media.properties,
7093		    assignGettersSetters = function assignGettersSetters(propName) {
7094
7095			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7096
7097			youtube['get' + capName] = function () {
7098				if (youTubeApi !== null) {
7099					var value = null;
7100
7101					switch (propName) {
7102						case 'currentTime':
7103							return youTubeApi.getCurrentTime();
7104						case 'duration':
7105							return youTubeApi.getDuration();
7106						case 'volume':
7107							volume = youTubeApi.getVolume() / 100;
7108							return volume;
7109						case 'playbackRate':
7110							return youTubeApi.getPlaybackRate();
7111						case 'paused':
7112							return paused;
7113						case 'ended':
7114							return ended;
7115						case 'muted':
7116							return youTubeApi.isMuted();
7117						case 'buffered':
7118							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7119							    duration = youTubeApi.getDuration();
7120							return {
7121								start: function start() {
7122									return 0;
7123								},
7124								end: function end() {
7125									return percentLoaded * duration;
7126								},
7127								length: 1
7128							};
7129						case 'src':
7130							return youTubeApi.getVideoUrl();
7131						case 'readyState':
7132							return readyState;
7133					}
7134
7135					return value;
7136				} else {
7137					return null;
7138				}
7139			};
7140
7141			youtube['set' + capName] = function (value) {
7142				if (youTubeApi !== null) {
7143					switch (propName) {
7144						case 'src':
7145							var url = typeof value === 'string' ? value : value[0].src,
7146							    _videoId = YouTubeApi.getYouTubeId(url);
7147
7148							if (mediaElement.originalNode.autoplay) {
7149								youTubeApi.loadVideoById(_videoId);
7150							} else {
7151								youTubeApi.cueVideoById(_videoId);
7152							}
7153							break;
7154						case 'currentTime':
7155							youTubeApi.seekTo(value);
7156							break;
7157						case 'muted':
7158							if (value) {
7159								youTubeApi.mute();
7160							} else {
7161								youTubeApi.unMute();
7162							}
7163							setTimeout(function () {
7164								var event = (0, _general.createEvent)('volumechange', youtube);
7165								mediaElement.dispatchEvent(event);
7166							}, 50);
7167							break;
7168						case 'volume':
7169							volume = value;
7170							youTubeApi.setVolume(value * 100);
7171							setTimeout(function () {
7172								var event = (0, _general.createEvent)('volumechange', youtube);
7173								mediaElement.dispatchEvent(event);
7174							}, 50);
7175							break;
7176						case 'playbackRate':
7177							youTubeApi.setPlaybackRate(value);
7178							setTimeout(function () {
7179								var event = (0, _general.createEvent)('ratechange', youtube);
7180								mediaElement.dispatchEvent(event);
7181							}, 50);
7182							break;
7183						case 'readyState':
7184							var event = (0, _general.createEvent)('canplay', youtube);
7185							mediaElement.dispatchEvent(event);
7186							break;
7187						default:
7188							
7189							break;
7190					}
7191				} else {
7192					apiStack.push({ type: 'set', propName: propName, value: value });
7193				}
7194			};
7195		};
7196
7197		for (var i = 0, total = props.length; i < total; i++) {
7198			assignGettersSetters(props[i]);
7199		}
7200
7201		var methods = _mejs2.default.html5media.methods,
7202		    assignMethods = function assignMethods(methodName) {
7203			youtube[methodName] = function () {
7204				if (youTubeApi !== null) {
7205					switch (methodName) {
7206						case 'play':
7207							paused = false;
7208							return youTubeApi.playVideo();
7209						case 'pause':
7210							paused = true;
7211							return youTubeApi.pauseVideo();
7212						case 'load':
7213							return null;
7214					}
7215				} else {
7216					apiStack.push({ type: 'call', methodName: methodName });
7217				}
7218			};
7219		};
7220
7221		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7222			assignMethods(methods[_i]);
7223		}
7224
7225		var errorHandler = function errorHandler(error) {
7226			var message = '';
7227			switch (error.data) {
7228				case 2:
7229					message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
7230					break;
7231				case 5:
7232					message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
7233					break;
7234				case 100:
7235					message = 'The video requested was not found. Either video has been removed or has been marked as private.';
7236					break;
7237				case 101:
7238				case 105:
7239					message = 'The owner of the requested video does not allow it to be played in embedded players.';
7240					break;
7241				default:
7242					message = 'Unknown error.';
7243					break;
7244			}
7245			mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
7246		};
7247
7248		var youtubeContainer = _document2.default.createElement('div');
7249		youtubeContainer.id = youtube.id;
7250
7251		if (youtube.options.youtube.nocookie) {
7252			mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7253		}
7254
7255		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7256		mediaElement.originalNode.style.display = 'none';
7257
7258		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7259		    height = isAudio ? '1' : mediaElement.originalNode.height,
7260		    width = isAudio ? '1' : mediaElement.originalNode.width,
7261		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7262		    youtubeSettings = {
7263			id: youtube.id,
7264			containerId: youtubeContainer.id,
7265			videoId: videoId,
7266			height: height,
7267			width: width,
7268			host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined,
7269			playerVars: Object.assign({
7270				controls: 0,
7271				rel: 0,
7272				disablekb: 1,
7273				showinfo: 0,
7274				modestbranding: 0,
7275				html5: 1,
7276				iv_load_policy: 3
7277			}, youtube.options.youtube),
7278			origin: _window2.default.location.host,
7279			events: {
7280				onReady: function onReady(e) {
7281					mediaElement.youTubeApi = youTubeApi = e.target;
7282					mediaElement.youTubeState = {
7283						paused: true,
7284						ended: false
7285					};
7286
7287					if (apiStack.length) {
7288						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7289
7290							var stackItem = apiStack[_i2];
7291
7292							if (stackItem.type === 'set') {
7293								var propName = stackItem.propName,
7294								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7295
7296								youtube['set' + capName](stackItem.value);
7297							} else if (stackItem.type === 'call') {
7298								youtube[stackItem.methodName]();
7299							}
7300						}
7301					}
7302
7303					youTubeIframe = youTubeApi.getIframe();
7304
7305					if (mediaElement.originalNode.muted) {
7306						youTubeApi.mute();
7307					}
7308
7309					var events = ['mouseover', 'mouseout'],
7310					    assignEvents = function assignEvents(e) {
7311						var newEvent = (0, _general.createEvent)(e.type, youtube);
7312						mediaElement.dispatchEvent(newEvent);
7313					};
7314
7315					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7316						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7317					}
7318
7319					var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7320
7321					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7322						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7323						mediaElement.dispatchEvent(event);
7324					}
7325				},
7326				onStateChange: function onStateChange(e) {
7327					var events = [];
7328
7329					switch (e.data) {
7330						case -1:
7331							events = ['loadedmetadata'];
7332							paused = true;
7333							ended = false;
7334							break;
7335						case 0:
7336							events = ['ended'];
7337							paused = false;
7338							ended = !youtube.options.youtube.loop;
7339							if (!youtube.options.youtube.loop) {
7340								youtube.stopInterval();
7341							}
7342							break;
7343						case 1:
7344							events = ['play', 'playing'];
7345							paused = false;
7346							ended = false;
7347							youtube.startInterval();
7348							break;
7349						case 2:
7350							events = ['pause'];
7351							paused = true;
7352							ended = false;
7353							youtube.stopInterval();
7354							break;
7355						case 3:
7356							events = ['progress'];
7357							ended = false;
7358							break;
7359						case 5:
7360							events = ['loadeddata', 'loadedmetadata', 'canplay'];
7361							paused = true;
7362							ended = false;
7363							break;
7364					}
7365
7366					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7367						var event = (0, _general.createEvent)(events[_i5], youtube);
7368						mediaElement.dispatchEvent(event);
7369					}
7370				},
7371				onError: function onError(e) {
7372					return errorHandler(e);
7373				}
7374			}
7375		};
7376
7377		if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
7378			youtubeSettings.playerVars.playsinline = 1;
7379		}
7380
7381		if (mediaElement.originalNode.controls) {
7382			youtubeSettings.playerVars.controls = 1;
7383		}
7384		if (mediaElement.originalNode.autoplay) {
7385			youtubeSettings.playerVars.autoplay = 1;
7386		}
7387		if (mediaElement.originalNode.loop) {
7388			youtubeSettings.playerVars.loop = 1;
7389		}
7390
7391		if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
7392			youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7393		}
7394
7395		YouTubeApi.enqueueIframe(youtubeSettings);
7396
7397		youtube.onEvent = function (eventName, player, _youTubeState) {
7398			if (_youTubeState !== null && _youTubeState !== undefined) {
7399				mediaElement.youTubeState = _youTubeState;
7400			}
7401		};
7402
7403		youtube.setSize = function (width, height) {
7404			if (youTubeApi !== null) {
7405				youTubeApi.setSize(width, height);
7406			}
7407		};
7408		youtube.hide = function () {
7409			youtube.stopInterval();
7410			youtube.pause();
7411			if (youTubeIframe) {
7412				youTubeIframe.style.display = 'none';
7413			}
7414		};
7415		youtube.show = function () {
7416			if (youTubeIframe) {
7417				youTubeIframe.style.display = '';
7418			}
7419		};
7420		youtube.destroy = function () {
7421			youTubeApi.destroy();
7422		};
7423		youtube.interval = null;
7424
7425		youtube.startInterval = function () {
7426			youtube.interval = setInterval(function () {
7427				var event = (0, _general.createEvent)('timeupdate', youtube);
7428				mediaElement.dispatchEvent(event);
7429			}, 250);
7430		};
7431		youtube.stopInterval = function () {
7432			if (youtube.interval) {
7433				clearInterval(youtube.interval);
7434			}
7435		};
7436		youtube.getPosterUrl = function () {
7437			var quality = options.youtube.imageQuality,
7438			    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7439			    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7440			return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7441		};
7442
7443		return youtube;
7444	}
7445};
7446
7447_window2.default.onYouTubePlayerAPIReady = function () {
7448	YouTubeApi.iFrameReady();
7449};
7450
7451_media.typeChecks.push(function (url) {
7452	return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7453	);
7454});
7455
7456_renderer.renderer.add(YouTubeIframeRenderer);
7457
7458},{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){
7459'use strict';
7460
7461Object.defineProperty(exports, "__esModule", {
7462	value: true
7463});
7464exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
7465
7466var _window = _dereq_(3);
7467
7468var _window2 = _interopRequireDefault(_window);
7469
7470var _document = _dereq_(2);
7471
7472var _document2 = _interopRequireDefault(_document);
7473
7474var _mejs = _dereq_(7);
7475
7476var _mejs2 = _interopRequireDefault(_mejs);
7477
7478function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7479
7480var NAV = exports.NAV = _window2.default.navigator;
7481var UA = exports.UA = NAV.userAgent.toLowerCase();
7482var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7483var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7484var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7485var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7486var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7487var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7488var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7489var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7490var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7491var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7492var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7493var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7494var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
7495	var element = _document2.default.createElement('x'),
7496	    documentElement = _document2.default.documentElement,
7497	    getComputedStyle = _window2.default.getComputedStyle;
7498
7499	if (!('pointerEvents' in element.style)) {
7500		return false;
7501	}
7502
7503	element.style.pointerEvents = 'auto';
7504	element.style.pointerEvents = 'x';
7505	documentElement.appendChild(element);
7506	var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto';
7507	element.remove();
7508	return !!supports;
7509}();
7510
7511var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7512	var supportsPassive = false;
7513	try {
7514		var opts = Object.defineProperty({}, 'passive', {
7515			get: function get() {
7516				supportsPassive = true;
7517			}
7518		});
7519		_window2.default.addEventListener('test', null, opts);
7520	} catch (e) {}
7521
7522	return supportsPassive;
7523}();
7524
7525var html5Elements = ['source', 'track', 'audio', 'video'];
7526var video = void 0;
7527
7528for (var i = 0, total = html5Elements.length; i < total; i++) {
7529	video = _document2.default.createElement(html5Elements[i]);
7530}
7531
7532var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA);
7533
7534var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7535
7536var hasNativeFullscreen = video.requestFullscreen !== undefined;
7537
7538if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7539	hasNativeFullscreen = false;
7540	hasiOSFullScreen = false;
7541}
7542
7543var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7544var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7545var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7546var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7547var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7548var fullScreenEventName = '';
7549var isFullScreen = void 0,
7550    requestFullScreen = void 0,
7551    cancelFullScreen = void 0;
7552
7553if (hasMozNativeFullScreen) {
7554	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7555} else if (hasMsNativeFullScreen) {
7556	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7557}
7558
7559if (IS_CHROME) {
7560	hasiOSFullScreen = false;
7561}
7562
7563if (hasTrueNativeFullScreen) {
7564	if (hasWebkitNativeFullScreen) {
7565		fullScreenEventName = 'webkitfullscreenchange';
7566	} else if (hasMozNativeFullScreen) {
7567		fullScreenEventName = 'fullscreenchange';
7568	} else if (hasMsNativeFullScreen) {
7569		fullScreenEventName = 'MSFullscreenChange';
7570	}
7571
7572	exports.isFullScreen = isFullScreen = function isFullScreen() {
7573		if (hasMozNativeFullScreen) {
7574			return _document2.default.mozFullScreen;
7575		} else if (hasWebkitNativeFullScreen) {
7576			return _document2.default.webkitIsFullScreen;
7577		} else if (hasMsNativeFullScreen) {
7578			return _document2.default.msFullscreenElement !== null;
7579		}
7580	};
7581
7582	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7583		if (hasWebkitNativeFullScreen) {
7584			el.webkitRequestFullScreen();
7585		} else if (hasMozNativeFullScreen) {
7586			el.mozRequestFullScreen();
7587		} else if (hasMsNativeFullScreen) {
7588			el.msRequestFullscreen();
7589		}
7590	};
7591
7592	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7593		if (hasWebkitNativeFullScreen) {
7594			_document2.default.webkitCancelFullScreen();
7595		} else if (hasMozNativeFullScreen) {
7596			_document2.default.mozCancelFullScreen();
7597		} else if (hasMsNativeFullScreen) {
7598			_document2.default.msExitFullscreen();
7599		}
7600	};
7601}
7602
7603var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7604var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7605var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7606var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7607var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7608var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
7609var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7610var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7611exports.isFullScreen = isFullScreen;
7612exports.requestFullScreen = requestFullScreen;
7613exports.cancelFullScreen = cancelFullScreen;
7614
7615
7616_mejs2.default.Features = _mejs2.default.Features || {};
7617_mejs2.default.Features.isiPad = IS_IPAD;
7618_mejs2.default.Features.isiPod = IS_IPOD;
7619_mejs2.default.Features.isiPhone = IS_IPHONE;
7620_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7621_mejs2.default.Features.isAndroid = IS_ANDROID;
7622_mejs2.default.Features.isIE = IS_IE;
7623_mejs2.default.Features.isEdge = IS_EDGE;
7624_mejs2.default.Features.isChrome = IS_CHROME;
7625_mejs2.default.Features.isFirefox = IS_FIREFOX;
7626_mejs2.default.Features.isSafari = IS_SAFARI;
7627_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7628_mejs2.default.Features.hasMSE = HAS_MSE;
7629_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7630_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7631_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7632_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7633_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7634_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7635_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7636_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7637_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7638_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7639_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7640_mejs2.default.Features.isFullScreen = isFullScreen;
7641_mejs2.default.Features.requestFullScreen = requestFullScreen;
7642_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7643
7644},{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){
7645'use strict';
7646
7647Object.defineProperty(exports, "__esModule", {
7648	value: true
7649});
7650exports.removeClass = exports.addClass = exports.hasClass = undefined;
7651exports.loadScript = loadScript;
7652exports.offset = offset;
7653exports.toggleClass = toggleClass;
7654exports.fadeOut = fadeOut;
7655exports.fadeIn = fadeIn;
7656exports.siblings = siblings;
7657exports.visible = visible;
7658exports.ajax = ajax;
7659
7660var _window = _dereq_(3);
7661
7662var _window2 = _interopRequireDefault(_window);
7663
7664var _document = _dereq_(2);
7665
7666var _document2 = _interopRequireDefault(_document);
7667
7668var _mejs = _dereq_(7);
7669
7670var _mejs2 = _interopRequireDefault(_mejs);
7671
7672function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7673
7674function loadScript(url) {
7675	return new Promise(function (resolve, reject) {
7676		var script = _document2.default.createElement('script');
7677		script.src = url;
7678		script.async = true;
7679		script.onload = function () {
7680			script.remove();
7681			resolve();
7682		};
7683		script.onerror = function () {
7684			script.remove();
7685			reject();
7686		};
7687		_document2.default.head.appendChild(script);
7688	});
7689}
7690
7691function offset(el) {
7692	var rect = el.getBoundingClientRect(),
7693	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7694	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7695	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7696}
7697
7698var hasClassMethod = void 0,
7699    addClassMethod = void 0,
7700    removeClassMethod = void 0;
7701
7702if ('classList' in _document2.default.documentElement) {
7703	hasClassMethod = function hasClassMethod(el, className) {
7704		return el.classList !== undefined && el.classList.contains(className);
7705	};
7706	addClassMethod = function addClassMethod(el, className) {
7707		return el.classList.add(className);
7708	};
7709	removeClassMethod = function removeClassMethod(el, className) {
7710		return el.classList.remove(className);
7711	};
7712} else {
7713	hasClassMethod = function hasClassMethod(el, className) {
7714		return new RegExp('\\b' + className + '\\b').test(el.className);
7715	};
7716	addClassMethod = function addClassMethod(el, className) {
7717		if (!hasClass(el, className)) {
7718			el.className += ' ' + className;
7719		}
7720	};
7721	removeClassMethod = function removeClassMethod(el, className) {
7722		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7723	};
7724}
7725
7726var hasClass = exports.hasClass = hasClassMethod;
7727var addClass = exports.addClass = addClassMethod;
7728var removeClass = exports.removeClass = removeClassMethod;
7729
7730function toggleClass(el, className) {
7731	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7732}
7733
7734function fadeOut(el) {
7735	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7736	var callback = arguments[2];
7737
7738	if (!el.style.opacity) {
7739		el.style.opacity = 1;
7740	}
7741
7742	var start = null;
7743	_window2.default.requestAnimationFrame(function animate(timestamp) {
7744		start = start || timestamp;
7745		var progress = timestamp - start;
7746		var opacity = parseFloat(1 - progress / duration, 2);
7747		el.style.opacity = opacity < 0 ? 0 : opacity;
7748		if (progress > duration) {
7749			if (callback && typeof callback === 'function') {
7750				callback();
7751			}
7752		} else {
7753			_window2.default.requestAnimationFrame(animate);
7754		}
7755	});
7756}
7757
7758function fadeIn(el) {
7759	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7760	var callback = arguments[2];
7761
7762	if (!el.style.opacity) {
7763		el.style.opacity = 0;
7764	}
7765
7766	var start = null;
7767	_window2.default.requestAnimationFrame(function animate(timestamp) {
7768		start = start || timestamp;
7769		var progress = timestamp - start;
7770		var opacity = parseFloat(progress / duration, 2);
7771		el.style.opacity = opacity > 1 ? 1 : opacity;
7772		if (progress > duration) {
7773			if (callback && typeof callback === 'function') {
7774				callback();
7775			}
7776		} else {
7777			_window2.default.requestAnimationFrame(animate);
7778		}
7779	});
7780}
7781
7782function siblings(el, filter) {
7783	var siblings = [];
7784	el = el.parentNode.firstChild;
7785	do {
7786		if (!filter || filter(el)) {
7787			siblings.push(el);
7788		}
7789	} while (el = el.nextSibling);
7790	return siblings;
7791}
7792
7793function visible(elem) {
7794	if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
7795		return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7796	}
7797	return !!(elem.offsetWidth || elem.offsetHeight);
7798}
7799
7800function ajax(url, dataType, success, error) {
7801	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7802
7803	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7804	    completed = false,
7805	    accept = '*/'.concat('*');
7806
7807	switch (dataType) {
7808		case 'text':
7809			type = 'text/plain';
7810			break;
7811		case 'json':
7812			type = 'application/json, text/javascript';
7813			break;
7814		case 'html':
7815			type = 'text/html';
7816			break;
7817		case 'xml':
7818			type = 'application/xml, text/xml';
7819			break;
7820	}
7821
7822	if (type !== 'application/x-www-form-urlencoded') {
7823		accept = type + ', */*; q=0.01';
7824	}
7825
7826	if (xhr) {
7827		xhr.open('GET', url, true);
7828		xhr.setRequestHeader('Accept', accept);
7829		xhr.onreadystatechange = function () {
7830			if (completed) {
7831				return;
7832			}
7833
7834			if (xhr.readyState === 4) {
7835				if (xhr.status === 200) {
7836					completed = true;
7837					var data = void 0;
7838					switch (dataType) {
7839						case 'json':
7840							data = JSON.parse(xhr.responseText);
7841							break;
7842						case 'xml':
7843							data = xhr.responseXML;
7844							break;
7845						default:
7846							data = xhr.responseText;
7847							break;
7848					}
7849					success(data);
7850				} else if (typeof error === 'function') {
7851					error(xhr.status);
7852				}
7853			}
7854		};
7855
7856		xhr.send();
7857	}
7858}
7859
7860_mejs2.default.Utils = _mejs2.default.Utils || {};
7861_mejs2.default.Utils.offset = offset;
7862_mejs2.default.Utils.hasClass = hasClass;
7863_mejs2.default.Utils.addClass = addClass;
7864_mejs2.default.Utils.removeClass = removeClass;
7865_mejs2.default.Utils.toggleClass = toggleClass;
7866_mejs2.default.Utils.fadeIn = fadeIn;
7867_mejs2.default.Utils.fadeOut = fadeOut;
7868_mejs2.default.Utils.siblings = siblings;
7869_mejs2.default.Utils.visible = visible;
7870_mejs2.default.Utils.ajax = ajax;
7871_mejs2.default.Utils.loadScript = loadScript;
7872
7873},{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){
7874'use strict';
7875
7876Object.defineProperty(exports, "__esModule", {
7877	value: true
7878});
7879exports.escapeHTML = escapeHTML;
7880exports.debounce = debounce;
7881exports.isObjectEmpty = isObjectEmpty;
7882exports.splitEvents = splitEvents;
7883exports.createEvent = createEvent;
7884exports.isNodeAfter = isNodeAfter;
7885exports.isString = isString;
7886
7887var _mejs = _dereq_(7);
7888
7889var _mejs2 = _interopRequireDefault(_mejs);
7890
7891function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7892
7893function escapeHTML(input) {
7894
7895	if (typeof input !== 'string') {
7896		throw new Error('Argument passed must be a string');
7897	}
7898
7899	var map = {
7900		'&': '&amp;',
7901		'<': '&lt;',
7902		'>': '&gt;',
7903		'"': '&quot;'
7904	};
7905
7906	return input.replace(/[&<>"]/g, function (c) {
7907		return map[c];
7908	});
7909}
7910
7911function debounce(func, wait) {
7912	var _this = this,
7913	    _arguments = arguments;
7914
7915	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7916
7917
7918	if (typeof func !== 'function') {
7919		throw new Error('First argument must be a function');
7920	}
7921
7922	if (typeof wait !== 'number') {
7923		throw new Error('Second argument must be a numeric value');
7924	}
7925
7926	var timeout = void 0;
7927	return function () {
7928		var context = _this,
7929		    args = _arguments;
7930		var later = function later() {
7931			timeout = null;
7932			if (!immediate) {
7933				func.apply(context, args);
7934			}
7935		};
7936		var callNow = immediate && !timeout;
7937		clearTimeout(timeout);
7938		timeout = setTimeout(later, wait);
7939
7940		if (callNow) {
7941			func.apply(context, args);
7942		}
7943	};
7944}
7945
7946function isObjectEmpty(instance) {
7947	return Object.getOwnPropertyNames(instance).length <= 0;
7948}
7949
7950function splitEvents(events, id) {
7951	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7952
7953	var ret = { d: [], w: [] };
7954	(events || '').split(' ').forEach(function (v) {
7955		var eventName = '' + v + (id ? '.' + id : '');
7956
7957		if (eventName.startsWith('.')) {
7958			ret.d.push(eventName);
7959			ret.w.push(eventName);
7960		} else {
7961			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7962		}
7963	});
7964
7965	ret.d = ret.d.join(' ');
7966	ret.w = ret.w.join(' ');
7967	return ret;
7968}
7969
7970function createEvent(eventName, target) {
7971
7972	if (typeof eventName !== 'string') {
7973		throw new Error('Event name must be a string');
7974	}
7975
7976	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7977	    detail = {
7978		target: target
7979	};
7980
7981	if (eventFrags !== null) {
7982		eventName = eventFrags[1];
7983		detail.namespace = eventFrags[2];
7984	}
7985
7986	return new window.CustomEvent(eventName, {
7987		detail: detail
7988	});
7989}
7990
7991function isNodeAfter(sourceNode, targetNode) {
7992
7993	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7994}
7995
7996function isString(value) {
7997	return typeof value === 'string';
7998}
7999
8000_mejs2.default.Utils = _mejs2.default.Utils || {};
8001_mejs2.default.Utils.escapeHTML = escapeHTML;
8002_mejs2.default.Utils.debounce = debounce;
8003_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
8004_mejs2.default.Utils.splitEvents = splitEvents;
8005_mejs2.default.Utils.createEvent = createEvent;
8006_mejs2.default.Utils.isNodeAfter = isNodeAfter;
8007_mejs2.default.Utils.isString = isString;
8008
8009},{"7":7}],28:[function(_dereq_,module,exports){
8010'use strict';
8011
8012Object.defineProperty(exports, "__esModule", {
8013	value: true
8014});
8015exports.typeChecks = undefined;
8016exports.absolutizeUrl = absolutizeUrl;
8017exports.formatType = formatType;
8018exports.getMimeFromType = getMimeFromType;
8019exports.getTypeFromFile = getTypeFromFile;
8020exports.getExtension = getExtension;
8021exports.normalizeExtension = normalizeExtension;
8022
8023var _mejs = _dereq_(7);
8024
8025var _mejs2 = _interopRequireDefault(_mejs);
8026
8027var _general = _dereq_(27);
8028
8029function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8030
8031var typeChecks = exports.typeChecks = [];
8032
8033function absolutizeUrl(url) {
8034
8035	if (typeof url !== 'string') {
8036		throw new Error('`url` argument must be a string');
8037	}
8038
8039	var el = document.createElement('div');
8040	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
8041	return el.firstChild.href;
8042}
8043
8044function formatType(url) {
8045	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
8046
8047	return url && !type ? getTypeFromFile(url) : type;
8048}
8049
8050function getMimeFromType(type) {
8051
8052	if (typeof type !== 'string') {
8053		throw new Error('`type` argument must be a string');
8054	}
8055
8056	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
8057}
8058
8059function getTypeFromFile(url) {
8060
8061	if (typeof url !== 'string') {
8062		throw new Error('`url` argument must be a string');
8063	}
8064
8065	for (var i = 0, total = typeChecks.length; i < total; i++) {
8066		var type = typeChecks[i](url);
8067
8068		if (type) {
8069			return type;
8070		}
8071	}
8072
8073	var ext = getExtension(url),
8074	    normalizedExt = normalizeExtension(ext);
8075
8076	var mime = 'video/mp4';
8077
8078	if (normalizedExt) {
8079		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) {
8080			mime = 'video/' + normalizedExt;
8081		} else if ('mov' === normalizedExt) {
8082			mime = 'video/quicktime';
8083		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
8084			mime = 'audio/' + normalizedExt;
8085		}
8086	}
8087
8088	return mime;
8089}
8090
8091function getExtension(url) {
8092
8093	if (typeof url !== 'string') {
8094		throw new Error('`url` argument must be a string');
8095	}
8096
8097	var baseUrl = url.split('?')[0],
8098	    baseName = baseUrl.split('\\').pop().split('/').pop();
8099	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
8100}
8101
8102function normalizeExtension(extension) {
8103
8104	if (typeof extension !== 'string') {
8105		throw new Error('`extension` argument must be a string');
8106	}
8107
8108	switch (extension) {
8109		case 'mp4':
8110		case 'm4v':
8111			return 'mp4';
8112		case 'webm':
8113		case 'webma':
8114		case 'webmv':
8115			return 'webm';
8116		case 'ogg':
8117		case 'oga':
8118		case 'ogv':
8119			return 'ogg';
8120		default:
8121			return extension;
8122	}
8123}
8124
8125_mejs2.default.Utils = _mejs2.default.Utils || {};
8126_mejs2.default.Utils.typeChecks = typeChecks;
8127_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8128_mejs2.default.Utils.formatType = formatType;
8129_mejs2.default.Utils.getMimeFromType = getMimeFromType;
8130_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8131_mejs2.default.Utils.getExtension = getExtension;
8132_mejs2.default.Utils.normalizeExtension = normalizeExtension;
8133
8134},{"27":27,"7":7}],29:[function(_dereq_,module,exports){
8135'use strict';
8136
8137var _document = _dereq_(2);
8138
8139var _document2 = _interopRequireDefault(_document);
8140
8141var _promisePolyfill = _dereq_(4);
8142
8143var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8144
8145function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8146
8147(function (arr) {
8148	arr.forEach(function (item) {
8149		if (item.hasOwnProperty('remove')) {
8150			return;
8151		}
8152		Object.defineProperty(item, 'remove', {
8153			configurable: true,
8154			enumerable: true,
8155			writable: true,
8156			value: function remove() {
8157				this.parentNode.removeChild(this);
8158			}
8159		});
8160	});
8161})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8162
8163(function () {
8164
8165	if (typeof window.CustomEvent === 'function') {
8166		return false;
8167	}
8168
8169	function CustomEvent(event, params) {
8170		params = params || { bubbles: false, cancelable: false, detail: undefined };
8171		var evt = _document2.default.createEvent('CustomEvent');
8172		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8173		return evt;
8174	}
8175
8176	CustomEvent.prototype = window.Event.prototype;
8177	window.CustomEvent = CustomEvent;
8178})();
8179
8180if (typeof Object.assign !== 'function') {
8181	Object.assign = function (target) {
8182
8183		if (target === null || target === undefined) {
8184			throw new TypeError('Cannot convert undefined or null to object');
8185		}
8186
8187		var to = Object(target);
8188
8189		for (var index = 1, total = arguments.length; index < total; index++) {
8190			var nextSource = arguments[index];
8191
8192			if (nextSource !== null) {
8193				for (var nextKey in nextSource) {
8194					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8195						to[nextKey] = nextSource[nextKey];
8196					}
8197				}
8198			}
8199		}
8200		return to;
8201	};
8202}
8203
8204if (!String.prototype.startsWith) {
8205	String.prototype.startsWith = function (searchString, position) {
8206		position = position || 0;
8207		return this.substr(position, searchString.length) === searchString;
8208	};
8209}
8210
8211if (!Element.prototype.matches) {
8212	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8213		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8214		    i = matches.length - 1;
8215		while (--i >= 0 && matches.item(i) !== this) {}
8216		return i > -1;
8217	};
8218}
8219
8220if (window.Element && !Element.prototype.closest) {
8221	Element.prototype.closest = function (s) {
8222		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8223		    i = void 0,
8224		    el = this;
8225		do {
8226			i = matches.length;
8227			while (--i >= 0 && matches.item(i) !== el) {}
8228		} while (i < 0 && (el = el.parentElement));
8229		return el;
8230	};
8231}
8232
8233(function () {
8234	var lastTime = 0;
8235	var vendors = ['ms', 'moz', 'webkit', 'o'];
8236	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8237		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8238		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8239	}
8240
8241	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8242		var currTime = new Date().getTime();
8243		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8244		var id = window.setTimeout(function () {
8245			callback(currTime + timeToCall);
8246		}, timeToCall);
8247		lastTime = currTime + timeToCall;
8248		return id;
8249	};
8250
8251	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8252		clearTimeout(id);
8253	};
8254})();
8255
8256if (/firefox/i.test(navigator.userAgent)) {
8257	var getComputedStyle = window.getComputedStyle;
8258	window.getComputedStyle = function (el, pseudoEl) {
8259		var t = getComputedStyle(el, pseudoEl);
8260		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
8261	};
8262}
8263
8264if (!window.Promise) {
8265	window.Promise = _promisePolyfill2.default;
8266}
8267
8268(function (constructor) {
8269	if (constructor && constructor.prototype && constructor.prototype.children === null) {
8270		Object.defineProperty(constructor.prototype, 'children', {
8271			get: function get() {
8272				var i = 0,
8273				    node = void 0,
8274				    nodes = this.childNodes,
8275				    children = [];
8276				while (node = nodes[i++]) {
8277					if (node.nodeType === 1) {
8278						children.push(node);
8279					}
8280				}
8281				return children;
8282			}
8283		});
8284	}
8285})(window.Node || window.Element);
8286
8287},{"2":2,"4":4}],30:[function(_dereq_,module,exports){
8288'use strict';
8289
8290Object.defineProperty(exports, "__esModule", {
8291	value: true
8292});
8293exports.isDropFrame = isDropFrame;
8294exports.secondsToTimeCode = secondsToTimeCode;
8295exports.timeCodeToSeconds = timeCodeToSeconds;
8296exports.calculateTimeFormat = calculateTimeFormat;
8297exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8298
8299var _mejs = _dereq_(7
vendor: 6,842 bytes, lines 8299-8540
8299);
8300
8301var _mejs2 = _interopRequireDefault(_mejs);
8302
8303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8304
8305function isDropFrame() {
8306	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8307
8308	return !(fps % 1 === 0);
8309}
8310function secondsToTimeCode(time) {
8311	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8312	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8313	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8314	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8315	var timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss';
8316
8317
8318	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8319
8320	var dropFrames = Math.round(fps * 0.066666),
8321	    timeBase = Math.round(fps),
8322	    framesPer24Hours = Math.round(fps * 3600) * 24,
8323	    framesPer10Minutes = Math.round(fps * 600),
8324	    frameSep = isDropFrame(fps) ? ';' : ':',
8325	    hours = void 0,
8326	    minutes = void 0,
8327	    seconds = void 0,
8328	    frames = void 0,
8329	    f = Math.round(time * fps);
8330
8331	if (isDropFrame(fps)) {
8332
8333		if (f < 0) {
8334			f = framesPer24Hours + f;
8335		}
8336
8337		f = f % framesPer24Hours;
8338
8339		var d = Math.floor(f / framesPer10Minutes);
8340		var m = f % framesPer10Minutes;
8341		f = f + dropFrames * 9 * d;
8342		if (m > dropFrames) {
8343			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8344		}
8345
8346		var timeBaseDivision = Math.floor(f / timeBase);
8347
8348		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8349		minutes = Math.floor(timeBaseDivision / 60) % 60;
8350
8351		if (showFrameCount) {
8352			seconds = timeBaseDivision % 60;
8353		} else {
8354			seconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength);
8355		}
8356	} else {
8357		hours = Math.floor(time / 3600) % 24;
8358		minutes = Math.floor(time / 60) % 60;
8359		if (showFrameCount) {
8360			seconds = Math.floor(time % 60);
8361		} else {
8362			seconds = Math.floor(time % 60).toFixed(secondsDecimalLength);
8363		}
8364	}
8365	hours = hours <= 0 ? 0 : hours;
8366	minutes = minutes <= 0 ? 0 : minutes;
8367	seconds = seconds <= 0 ? 0 : seconds;
8368
8369	seconds = seconds === 60 ? 0 : seconds;
8370	minutes = minutes === 60 ? 0 : minutes;
8371
8372	var timeFormatFrags = timeFormat.split(':');
8373	var timeFormatSettings = {};
8374	for (var i = 0, total = timeFormatFrags.length; i < total; ++i) {
8375		var unique = '';
8376		for (var j = 0, t = timeFormatFrags[i].length; j < t; j++) {
8377			if (unique.indexOf(timeFormatFrags[i][j]) < 0) {
8378				unique += timeFormatFrags[i][j];
8379			}
8380		}
8381		if (~['f', 's', 'm', 'h'].indexOf(unique)) {
8382			timeFormatSettings[unique] = timeFormatFrags[i].length;
8383		}
8384	}
8385
8386	var result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : '';
8387	result += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':';
8388	result += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds);
8389
8390	if (showFrameCount) {
8391		frames = (f % timeBase).toFixed(0);
8392		frames = frames <= 0 ? 0 : frames;
8393		result += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames;
8394	}
8395
8396	return result;
8397}
8398
8399function timeCodeToSeconds(time) {
8400	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8401
8402
8403	if (typeof time !== 'string') {
8404		throw new TypeError('Time must be a string');
8405	}
8406
8407	if (time.indexOf(';') > 0) {
8408		time = time.replace(';', ':');
8409	}
8410
8411	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8412		throw new TypeError('Time code must have the format `00:00:00`');
8413	}
8414
8415	var parts = time.split(':');
8416
8417	var output = void 0,
8418	    hours = 0,
8419	    minutes = 0,
8420	    seconds = 0,
8421	    frames = 0,
8422	    totalMinutes = 0,
8423	    dropFrames = Math.round(fps * 0.066666),
8424	    timeBase = Math.round(fps),
8425	    hFrames = timeBase * 3600,
8426	    mFrames = timeBase * 60;
8427
8428	switch (parts.length) {
8429		default:
8430		case 1:
8431			seconds = parseInt(parts[0], 10);
8432			break;
8433		case 2:
8434			minutes = parseInt(parts[0], 10);
8435			seconds = parseInt(parts[1], 10);
8436			break;
8437		case 3:
8438			hours = parseInt(parts[0], 10);
8439			minutes = parseInt(parts[1], 10);
8440			seconds = parseInt(parts[2], 10);
8441			break;
8442		case 4:
8443			hours = parseInt(parts[0], 10);
8444			minutes = parseInt(parts[1], 10);
8445			seconds = parseInt(parts[2], 10);
8446			frames = parseInt(parts[3], 10);
8447			break;
8448	}
8449
8450	if (isDropFrame(fps)) {
8451		totalMinutes = 60 * hours + minutes;
8452		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8453	} else {
8454		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8455	}
8456
8457	return parseFloat(output.toFixed(3));
8458}
8459
8460function calculateTimeFormat(time, options) {
8461	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8462
8463
8464	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8465
8466	var hours = Math.floor(time / 3600) % 24,
8467	    minutes = Math.floor(time / 60) % 60,
8468	    seconds = Math.floor(time % 60),
8469	    frames = Math.floor((time % 1 * fps).toFixed(3)),
8470	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8471
8472	var format = options.timeFormat,
8473	    firstTwoPlaces = format[1] === format[0],
8474	    separatorIndex = firstTwoPlaces ? 2 : 1,
8475	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8476	    firstChar = format[0],
8477	    required = false;
8478
8479	for (var i = 0, len = lis.length; i < len; i++) {
8480		if (~format.indexOf(lis[i][1])) {
8481			required = true;
8482		} else if (required) {
8483			var hasNextValue = false;
8484			for (var j = i; j < len; j++) {
8485				if (lis[j][0] > 0) {
8486					hasNextValue = true;
8487					break;
8488				}
8489			}
8490
8491			if (!hasNextValue) {
8492				break;
8493			}
8494
8495			if (!firstTwoPlaces) {
8496				format = firstChar + format;
8497			}
8498			format = lis[i][1] + separator + format;
8499			if (firstTwoPlaces) {
8500				format = lis[i][1] + format;
8501			}
8502			firstChar = lis[i][1];
8503		}
8504	}
8505
8506	options.timeFormat = format;
8507}
8508
8509function convertSMPTEtoSeconds(SMPTE) {
8510
8511	if (typeof SMPTE !== 'string') {
8512		throw new TypeError('Argument must be a string value');
8513	}
8514
8515	SMPTE = SMPTE.replace(',', '.');
8516
8517	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8518
8519	var secs = 0,
8520	    multiplier = 1;
8521
8522	SMPTE = SMPTE.split(':').reverse();
8523
8524	for (var i = 0, total = SMPTE.length; i < total; i++) {
8525		multiplier = 1;
8526		if (i > 0) {
8527			multiplier = Math.pow(60, i);
8528		}
8529		secs += Number(SMPTE[i]) * multiplier;
8530	}
8531	return Number(secs.toFixed(decimalLen));
8532}
8533
8534_mejs2.default.Utils = _mejs2.default.Utils || {};
8535_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8536_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8537_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8538_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8539
8540},{"
85407":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.