diff --git a/lib/mejs/lang/de.js b/lib/mejs/lang/de.js
index fc3f5c34eefcac7d1dbd2931e7175f3236f1f7da..27bfa9a51bbaee05b1019dc4d9a680f2d3ad422f 100644
--- a/lib/mejs/lang/de.js
+++ b/lib/mejs/lang/de.js
@@ -28,7 +28,7 @@
 			"mejs.video-player": "Video-Player",
 			"mejs.audio-player": "Audio-Player",			
 			"mejs.captions-subtitles": "Überschriften/Untertitel",
-			// "mejs.captions-chapters": "Chapters",
+			"mejs.captions-chapters": "Kapitel",
 			"mejs.none": "Keine",
 			"mejs.afrikaans": "Afrikanisch",
 			"mejs.albanian": "Albanisch",
diff --git a/lib/mejs/mediaelement-and-player.js b/lib/mejs/mediaelement-and-player.js
index 2ef8d76661e05a134327cbdf5da1b87e1c0f27ea..e59a9648f0b1bf21c1e8d3657effdc510ea5064c 100644
--- a/lib/mejs/mediaelement-and-player.js
+++ b/lib/mejs/mediaelement-and-player.js
@@ -61,20 +61,8 @@ var _general = _dereq_(25);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Locale.
- *
- * This object manages translations with pluralization. Also deals with WordPress compatibility.
- * @type {Object}
- */
 var i18n = { lang: 'en', en: _en.EN };
 
-/**
- * Language setter/getter
- *
- * @param {*} args  Can pass the language code and/or the translation strings as an Object
- * @return {string}
- */
 i18n.language = function () {
 	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 		args[_key] = arguments[_key];
@@ -86,13 +74,12 @@ i18n.language = function () {
 			throw new TypeError('Language code must be a string value');
 		}
 
-		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
 			throw new TypeError('Language code must have format `xx` or `xx-xx`');
 		}
 
 		i18n.lang = args[0];
 
-		// Check if language strings were added; otherwise, check the second argument or set to English as default
 		if (i18n[args[0]] === undefined) {
 			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
 			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
@@ -104,13 +91,6 @@ i18n.language = function () {
 	return i18n.lang;
 };
 
-/**
- * Translate a string in the language set up (or English by default)
- *
- * @param {string} message
- * @param {number} pluralParam
- * @return {string}
- */
 i18n.t = function (message) {
 	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
 
@@ -122,57 +102,20 @@ i18n.t = function (message) {
 
 		var language = i18n.language();
 
-		/**
-   * Modify string using algorithm to detect plural forms.
-   *
-   * @private
-   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
-   * @param {String|String[]} input   - String or array of strings to pick the plural form
-   * @param {Number} number           - Number to determine the proper plural form
-   * @param {Number} form             - Number of language family to apply plural form
-   * @return {String}
-   */
 		var _plural = function _plural(input, number, form) {
 
 			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
 				return input;
 			}
 
-			/**
-    *
-    * @return {Function[]}
-    * @private
-    */
 			var _pluralForms = function () {
-				return [
-				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
-				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
-				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
-				function () {
+				return [function () {
 					return arguments.length <= 1 ? undefined : arguments[1];
-				},
-
-				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
-				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
-				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
-				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
-				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
-				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
-				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
-				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
-				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
-				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
-				function () {
+				}, function () {
 					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];
-				},
-
-				// 3: Latvian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
@@ -180,10 +123,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 4: Scottish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
@@ -193,10 +133,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 5:  Romanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -204,10 +141,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 6: Lithuanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -215,10 +149,7 @@ i18n.t = function (message) {
 					} else {
 						return [3];
 					}
-				},
-
-				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -226,10 +157,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 8:  Slovak, Czech
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
@@ -237,10 +165,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 9: Polish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -248,10 +173,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 10: Slovenian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
 						return arguments.length <= 2 ? undefined : arguments[2];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
@@ -261,10 +183,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					}
-				},
-
-				// 11: Irish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -276,10 +195,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 5 ? undefined : arguments[5];
 					}
-				},
-
-				// 12: Arabic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -293,10 +209,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 6 ? undefined : arguments[6];
 					}
-				},
-
-				// 13: Maltese
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -306,10 +219,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 14: Macedonian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
@@ -317,19 +227,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 15:  Icelandic
-				function () {
+				}, function () {
 					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];
-				},
-
-				// New additions
-
-				// 16:  Kashubian
-				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
-				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -337,10 +237,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 17:  Welsh
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -350,15 +247,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 18:  Javanese
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 19:  Cornish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -368,10 +259,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 20:  Mandinka
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -382,11 +270,9 @@ i18n.t = function (message) {
 				}];
 			}();
 
-			// Perform plural form or return original text
 			return _pluralForms[form].apply(null, [number].concat(input));
 		};
 
-		// Fetch the localized version of the string
 		if (i18n[language] !== undefined) {
 			str = i18n[language][message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -395,7 +281,6 @@ i18n.t = function (message) {
 			}
 		}
 
-		// Fallback to default language if requested uid is not translated
 		if (!str && i18n.en) {
 			str = i18n.en[message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -404,11 +289,8 @@ i18n.t = function (message) {
 			}
 		}
 
-		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
-		// (in which uid was the english text)
 		str = str || message;
 
-		// Replace token
 		if (pluralParam !== null && typeof pluralParam === 'number') {
 			str = str.replace('%1', pluralParam);
 		}
@@ -421,7 +303,6 @@ i18n.t = function (message) {
 
 _mejs2.default.i18n = i18n;
 
-// `i18n` compatibility workflow with WordPress
 if (typeof mejsL10n !== 'undefined') {
 	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
 }
@@ -453,26 +334,13 @@ var _media = _dereq_(26);
 
 var _renderer = _dereq_(7);
 
+var _constants = _dereq_(23);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- * Media Core
- *
- * This class is the foundation to create/render different media formats.
- * @class MediaElement
- */
-var MediaElement =
-
-/**
- *
- * @param {String|Node} idOrNode
- * @param {Object} options
- * @param {Object[]} sources
- * @returns {Element|*}
- */
-function MediaElement(idOrNode, options, sources) {
+var MediaElement = function MediaElement(idOrNode, options, sources) {
 	var _this = this;
 
 	_classCallCheck(this, MediaElement);
@@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) {
 	sources = Array.isArray(sources) ? sources : null;
 
 	t.defaults = {
-		/**
-   * List of the renderers to use
-   * @type {String[]}
-   */
 		renderers: [],
-		/**
-   * Name of MediaElement container
-   * @type {String}
-   */
+
 		fakeNodeName: 'mediaelementwrapper',
-		/**
-   * The path where shims are located
-   * @type {String}
-   */
+
 		pluginPath: 'build/',
-		/**
-   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
-   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
-   */
+
 		shimScriptAccess: 'sameDomain',
-		/**
-   * If error happens, set up HTML message
-   * @type {String}
-   */
+
 		customError: ''
 	};
 
 	options = Object.assign(t.defaults, options);
 
-	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
 	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
 	t.mediaElement.options = options;
 
@@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) {
 	id = id || 'mejs_' + Math.random().toString().slice(2);
 
 	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
-		// change id
 		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
 
-		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
-		// only if video/audio tags are detected
 		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
-		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+		if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
 			t.mediaElement.originalNode.setAttribute('preload', 'none');
 		}
 
-		// add next to this one
 		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
 
-		// insert this one inside
 		t.mediaElement.appendChild(t.mediaElement.originalNode);
-	} else {
-		// TODO: where to put the node?
-	}
+	} else {}
 
 	t.mediaElement.id = id;
 	t.mediaElement.renderers = {};
 	t.mediaElement.renderer = null;
 	t.mediaElement.rendererName = null;
-	/**
-  * Determine whether the renderer was found or not
-  *
-  * @public
-  * @param {String} rendererName
-  * @param {Object[]} mediaFiles
-  * @return {Boolean}
-  */
+
 	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
 
 		var t = _this;
 
-		// check for a match on the current renderer
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) {
 			return true;
 		}
 
-		// if existing renderer is not the right one, then hide it
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.renderer.hide();
 		}
 
-		// see if we have the renderer already created
 		var newRenderer = t.mediaElement.renderers[rendererName],
 		    newRendererType = null;
 
@@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) {
 
 		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
 
-		// find the desired renderer in the array of possible ones
 		for (var i = 0, total = rendererArray.length; i < total; i++) {
 
 			var index = rendererArray[i];
 
 			if (index === rendererName) {
-
-				// create the renderer
 				var rendererList = _renderer.renderer.renderers;
 				newRendererType = rendererList[index];
 
@@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) {
 				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
 				newRenderer.name = rendererName;
 
-				// store for later
 				t.mediaElement.renderers[newRendererType.name] = newRenderer;
 				t.mediaElement.renderer = newRenderer;
 				t.mediaElement.rendererName = rendererName;
@@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  * Set the element dimensions based on selected renderer's setSize method
-  *
-  * @public
-  * @param {number} width
-  * @param {number} height
-  */
 	t.mediaElement.setSize = function (width, height) {
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.setSize(width, height);
 		}
 	};
 
-	/**
-  *
-  * @param {Object[]} urlList
-  */
 	t.mediaElement.createErrorMessage = function (urlList) {
 
 		urlList = Array.isArray(urlList) ? urlList : [];
@@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) {
 	var props = _mejs2.default.html5media.properties,
 	    methods = _mejs2.default.html5media.methods,
 	    addProperty = function addProperty(obj, name, onGet, onSet) {
-
-		// wrapper functions
 		var oldValue = obj[name];
 		var getFn = function getFn() {
 			return onGet.apply(obj, [oldValue]);
@@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement['set' + capName] = setFn;
 		}
 	},
-
-	// `src` is a property separated from the others since it carries the logic to set the proper renderer
-	// based on the media files detected
-	getSrc = function getSrc() {
+	    getSrc = function getSrc() {
 		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
 	},
 	    setSrc = function setSrc(value) {
-
 		var mediaFiles = [];
 
-		// clean up URLs
 		if (typeof value === 'string') {
 			mediaFiles.push({
 				src: value,
@@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) {
 			}
 		}
 
-		// find a renderer and URL match
 		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
 		    event = void 0;
 
-		// Ensure that the original gets the first source found
 		if (!t.mediaElement.paused) {
 			t.mediaElement.pause();
 			event = (0, _general.createEvent)('pause', t.mediaElement);
@@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.querySelector('.me_cannotplay').remove();
 		}
 
-		// did we find a renderer?
 		if (renderInfo === null) {
 			t.mediaElement.createErrorMessage(mediaFiles);
 			event = (0, _general.createEvent)('error', t.mediaElement);
@@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) {
 			return;
 		}
 
-		// turn on the renderer (this checks for the existing renderer already)
 		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
 
 		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
@@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) {
 			event.message = 'Error creating renderer';
 			t.mediaElement.dispatchEvent(event);
 			t.mediaElement.createErrorMessage(mediaFiles);
-			return;
 		}
 	},
 	    assignMethods = function assignMethods(methodName) {
-		// run the method on the current renderer
 		t.mediaElement[methodName] = function () {
 			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 				args[_key] = arguments[_key];
@@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) {
 		};
 	};
 
-	// Assign all methods/properties/events to fake node if renderer was found
 	addProperty(t.mediaElement, 'src', getSrc, setSrc);
 	t.mediaElement.getSrc = getSrc;
 	t.mediaElement.setSrc = setSrc;
@@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) {
 		assignMethods(methods[_i]);
 	}
 
-	// IE && iOS
 	t.mediaElement.events = {};
 
-	// start: fake events
 	t.mediaElement.addEventListener = function (eventName, callback) {
-		// create or find the array of callbacks for this eventName
 		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
 
-		// push the callback into the stack
 		t.mediaElement.events[eventName].push(callback);
 	};
 	t.mediaElement.removeEventListener = function (eventName, callback) {
-		// no eventName means remove all listeners
 		if (!eventName) {
 			t.mediaElement.events = {};
 			return true;
 		}
 
-		// see if we have any callbacks for this eventName
 		var callbacks = t.mediaElement.events[eventName];
 
 		if (!callbacks) {
 			return true;
 		}
 
-		// check for a specific callback
 		if (!callback) {
 			t.mediaElement.events[eventName] = [];
 			return true;
 		}
 
-		// remove the specific callback
 		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
 			if (callbacks[_i2] === callback) {
 				t.mediaElement.events[eventName].splice(_i2, 1);
@@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  *
-  * @param {Event} event
-  */
 	t.mediaElement.dispatchEvent = function (event) {
 
 		var callbacks = t.mediaElement.events[event.type];
@@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) {
 		}
 	};
 
+	var processURL = function processURL(url, type) {
+
+		if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) {
+			var xhr = new XMLHttpRequest();
+			xhr.onreadystatechange = function () {
+				if (this.readyState === 4 && this.status === 200) {
+					var _url = _window2.default.URL || _window2.default.webkitURL,
+					    blobUrl = _url.createObjectURL(this.response);
+					t.mediaElement.originalNode.setAttribute('src', blobUrl);
+					return blobUrl;
+				}
+				return url;
+			};
+			xhr.open('GET', url);
+			xhr.responseType = 'blob';
+			xhr.send();
+		}
+
+		return url;
+	};
+
 	var mediaFiles = void 0;
 
 	if (sources !== null) {
@@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) {
 		mediaFiles = [];
 
 		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
-
 			case 'iframe':
 				mediaFiles.push({
 					type: '',
@@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) {
 				});
 
 				break;
-
 			case 'audio':
 			case 'video':
 				var _sources = t.mediaElement.originalNode.childNodes.length,
 				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
 
-				// Consider if node contains the `src` and `type` attributes
 				if (nodeSource) {
-					var node = t.mediaElement.originalNode;
+					var node = t.mediaElement.originalNode,
+					    type = (0, _media.formatType)(nodeSource, node.getAttribute('type'));
 					mediaFiles.push({
-						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
-						src: nodeSource
+						type: type,
+						src: processURL(nodeSource, type)
 					});
 				}
 
-				// test <source> types to see if they are usable
 				for (var _i4 = 0; _i4 < _sources; _i4++) {
 					var n = t.mediaElement.originalNode.childNodes[_i4];
 					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
 						var src = n.getAttribute('src'),
-						    type = (0, _media.formatType)(src, n.getAttribute('type'));
-						mediaFiles.push({ type: type, src: src });
+						    _type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: _type, src: processURL(src, _type) });
 					}
 				}
 				break;
 		}
 	}
 
-	// Set the best match based on renderers
 	if (mediaFiles.length) {
 		t.mediaElement.src = mediaFiles;
 	}
@@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement;
 
 exports.default = MediaElement;
 
-},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-// Namespace
 var mejs = {};
 
-// version number
-mejs.version = '4.1.0';
+mejs.version = '4.1.1';
 
-// Basic HTML5 settings
 mejs.html5media = {
-	/**
-  * @type {String[]}
-  */
-	properties: [
-	// GET/SET
-	'volume', 'src', 'currentTime', 'muted',
-
-	// GET only
-	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
-
-	// OTHERS
-	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	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'],
 	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
-	/**
-  * @type {String[]}
-  */
+
 	methods: ['load', 'play', 'pause', 'canPlayType'],
-	/**
-  * @type {String[]}
-  */
+
 	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
-	/**
-  * @type {String[]}
-  */
-	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']
+
+	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']
 };
 
 _window2.default.mejs = mejs;
@@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- *
- * Class to manage renderer selection and addition.
- * @class Renderer
- */
 var Renderer = function () {
 	function Renderer() {
 		_classCallCheck(this, Renderer);
@@ -1014,18 +799,9 @@ var Renderer = function () {
 		this.order = [];
 	}
 
-	/**
-  * Register a new renderer.
-  *
-  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
-  * @method add
-  */
-
-
 	_createClass(Renderer, [{
 		key: 'add',
 		value: function add(renderer) {
-
 			if (renderer.name === undefined) {
 				throw new TypeError('renderer must contain at least `name` property');
 			}
@@ -1033,35 +809,20 @@ var Renderer = function () {
 			this.renderers[renderer.name] = renderer;
 			this.order.push(renderer.name);
 		}
-
-		/**
-   * Iterate a list of renderers to determine which one should the player use.
-   *
-   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
-   * @param {?String[]} renderers - Optional list of pre-selected renderers
-   * @return {?Object} The renderer's name and source selected
-   * @method select
-   */
-
 	}, {
 		key: 'select',
 		value: function select(mediaFiles) {
 			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
 
-
 			var renderersLength = renderers.length;
 
 			renderers = renderers.length ? renderers : this.order;
 
-			// If renderers are not set, set a default order:
-			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
-			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
-			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
 			if (!renderersLength) {
-				var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
 				    rendererRanking = function rendererRanking(renderer) {
 					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
-						if (renderer.match(rendererIndicator[i]) !== null) {
+						if (rendererIndicator[i].test(renderer)) {
 							return i;
 						}
 					}
@@ -1091,13 +852,9 @@ var Renderer = function () {
 
 			return null;
 		}
-
-		// Setters/getters
-
 	}, {
 		key: 'order',
 		set: function set(order) {
-
 			if (!Array.isArray(order)) {
 				throw new TypeError('order must be an array of strings.');
 			}
@@ -1110,7 +867,6 @@ var Renderer = function () {
 	}, {
 		key: 'renderers',
 		set: function set(renderers) {
-
 			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
 				throw new TypeError('renderers must be an array of objects.');
 			}
@@ -1160,68 +916,26 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Fullscreen button
- *
- * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it
- * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {Boolean}
-  */
 	usePluginFullScreen: true,
-	/**
-  * @type {?String}
-  */
+
 	fullscreenText: null
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * @type {Boolean}
-  */
 	isFullScreen: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isNativeFullScreen: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isInIframe: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isPluginClickThroughCreated: false,
-	/**
-  * Possible modes
-  * (1) 'native-native'  HTML5 video  + browser fullscreen (IE10+, etc.)
-  * (2) 'plugin-native'  plugin video + browser fullscreen (fails in some versions of Firefox)
-  * (3) 'fullwindow'     Full window (retains all UI)
-  *
-  * @type {String}
-  */
+
 	fullscreenMode: '',
-	/**
-  *
-  */
+
 	containerSizeTimeout: null,
 
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildfullscreen: function buildfullscreen(player) {
-
 		if (!player.isVideo) {
 			return;
 		}
@@ -1239,7 +953,6 @@ Object.assign(_player2.default.prototype, {
 		t.addControlElement(fullscreenBtn, 'fullscreen');
 
 		fullscreenBtn.addEventListener('click', function () {
-			// toggle fullscreen
 			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
 
 			if (isFullScreen) {
@@ -1261,26 +974,16 @@ Object.assign(_player2.default.prototype, {
 		t.normalHeight = 0;
 		t.normalWidth = 0;
 
-		// setup native fullscreen event
 		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
-
-			//
-			/**
-    * Detect any changes on fullscreen
-    *
-    * Chrome doesn't always fire this in an `<iframe>`
-    * @private
-    */
 			var fullscreenChanged = function fullscreenChanged() {
 				if (player.isFullScreen) {
 					if (Features.isFullScreen()) {
 						player.isNativeFullScreen = true;
-						// reset the controls once we are fully in full screen
+
 						player.setControlsSize();
 					} else {
 						player.isNativeFullScreen = false;
-						// when a user presses ESC
-						// make sure to put the player back into place
+
 						player.exitFullScreen();
 					}
 				}
@@ -1289,17 +992,9 @@ Object.assign(_player2.default.prototype, {
 			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
 		}
 	},
-
-
-	/**
-  * Detect the type of fullscreen based on browser's capabilities
-  *
-  * @return {String}
-  */
 	detectFullscreenMode: function detectFullscreenMode() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
 		var mode = '';
 
@@ -1316,26 +1011,12 @@ Object.assign(_player2.default.prototype, {
 		t.fullscreenMode = mode;
 		return mode;
 	},
-
-
-	/**
-  * Feature destructor.
-  *
-  * Always has to be prefixed with `clean` and the name that was used in features list
-  * @param {MediaElementPlayer} player
-  */
 	cleanfullscreen: function cleanfullscreen(player) {
 		player.exitFullScreen();
 	},
-
-
-	/**
-  *
-  */
 	enterFullScreen: function enterFullScreen() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null,
+		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
 		    containerStyles = getComputedStyle(t.container);
 
 		if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN) {
@@ -1347,52 +1028,38 @@ Object.assign(_player2.default.prototype, {
 			return;
 		}
 
-		// set it to not show scroll bars so 100% will work
 		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
 		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
 
-		// store sizing
 		t.normalHeight = parseFloat(containerStyles.height);
 		t.normalWidth = parseFloat(containerStyles.width);
 
-		// attempt to do true fullscreen
 		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
-
 			Features.requestFullScreen(t.container);
 
 			if (t.isInIframe) {
-				// sometimes exiting from fullscreen doesn't work
-				// notably in Chrome <iframe>. Fixed in version 17
 				setTimeout(function checkFullscreen() {
 
 					if (t.isNativeFullScreen) {
 						var percentErrorMargin = 0.002,
-						    // 0.2%
-						windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
+						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
 						    screenWidth = screen.width,
 						    absDiff = Math.abs(screenWidth - windowWidth),
 						    marginError = screenWidth * percentErrorMargin;
 
-						// check if the video is suddenly not really fullscreen
 						if (absDiff > marginError) {
-							// manually exit
 							t.exitFullScreen();
 						} else {
-							// test again
 							setTimeout(checkFullscreen, 500);
 						}
 					}
 				}, 1000);
 			}
-		} else if (t.fullscreeMode === 'fullwindow') {}
-		// move into position
+		}
 
-		// make full size
 		t.container.style.width = '100%';
 		t.container.style.height = '100%';
 
-		// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
-		// Actually, it seems to be needed for IE8, too
 		t.containerSizeTimeout = setTimeout(function () {
 			t.container.style.width = '100%';
 			t.container.style.height = '100%';
@@ -1440,25 +1107,16 @@ Object.assign(_player2.default.prototype, {
 		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
 		t.container.dispatchEvent(event);
 	},
-
-
-	/**
-  *
-  */
 	exitFullScreen: function exitFullScreen() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
-		// Prevent container from attempting to stretch a second time
 		clearTimeout(t.containerSizeTimeout);
 
-		// come out of native fullscreen
 		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
 			Features.cancelFullScreen();
 		}
 
-		// restore scroll bars to document
 		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
 		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
 
@@ -1530,38 +1188,14 @@ var _dom = _dereq_(24);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Play/Pause button
- *
- * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state
- * between paused and playing.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {?String}
-  */
 	playText: null,
-	/**
-  * @type {?String}
-  */
+
 	pauseText: null
 });
 
 Object.assign(_player2.default.prototype, {
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  * @public
-  */
 	buildplaypause: function buildplaypause(player, controls, layers, media) {
-
 		var t = this,
 		    op = t.options,
 		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
@@ -1581,10 +1215,6 @@ Object.assign(_player2.default.prototype, {
 		var playBtn = play.querySelector('button');
 		t.addControlElement(play, 'playpause');
 
-		/**
-   * @private
-   * @param {String} which - token to determine new state of button
-   */
 		function togglePlayPause(which) {
 			if ('play' === which) {
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
@@ -1605,8 +1235,7 @@ Object.assign(_player2.default.prototype, {
 		togglePlayPause('pse');
 
 		media.addEventListener('loadedmetadata', function () {
-			// `loadedmetadata` in Flash is executed simultaneously with `play`, so avoid it
-			if (media.rendererName.match(/flash/) === null) {
+			if (media.rendererName.indexOf('flash') === -1) {
 				togglePlayPause('pse');
 			}
 		});
@@ -1620,7 +1249,6 @@ Object.assign(_player2.default.prototype, {
 			togglePlayPause('pse');
 		});
 		media.addEventListener('ended', function () {
-
 			if (!player.options.loop) {
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
@@ -1635,8 +1263,6 @@ Object.assign(_player2.default.prototype, {
 },{"16":16,"2":2,"24":24,"25":25,"4":4}],10:[function(_dereq_,module,exports){
 'use strict';
 
-// import window from 'global/window';
-
 var _document = _dereq_(2);
 
 var _document2 = _interopRequireDefault(_document);
@@ -1657,38 +1283,13 @@ var _dom = _dereq_(24);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Progress/loaded bar
- *
- * This feature creates a progress bar with a slider in the control bar, and updates it based on native events.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * Enable tooltip that shows time in progress bar
-  * @type {Boolean}
-  */
 	enableProgressTooltip: true,
 
-	/**
-  * Enable smooth behavior when hovering progress bar
-  * @type {Boolean}
-  */
 	useSmoothHover: true
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildprogress: function buildprogress(player, controls, layers, media) {
 
 		var lastKeyPressTime = 0,
@@ -1697,7 +1298,7 @@ Object.assign(_player2.default.prototype, {
 
 		var t = this,
 		    autoRewindInitial = player.options.autoRewind,
-		    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>' : "",
+		    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>' : '',
 		    rail = _document2.default.createElement('div');
 
 		rail.className = t.options.classPrefix + 'time-rail';
@@ -1726,13 +1327,7 @@ Object.assign(_player2.default.prototype, {
 			element.style.OTransform = value;
 		};
 
-		/**
-   *
-   * @private
-   * @param {Event} e
-   */
 		var handleMouseMove = function handleMouseMove(e) {
-
 			var totalStyles = getComputedStyle(t.total),
 			    offsetStyles = (0, _dom.offset)(t.total),
 			    width = parseFloat(totalStyles.width),
@@ -1763,11 +1358,9 @@ Object.assign(_player2.default.prototype, {
 			    pos = 0,
 			    x = void 0;
 
-			// mouse or touch position relative to the object
 			if (e.originalEvent && e.originalEvent.changedTouches) {
 				x = e.originalEvent.changedTouches[0].pageX;
 			} else if (e.changedTouches) {
-				// for Zepto
 				x = e.changedTouches[0].pageX;
 			} else {
 				x = e.pageX;
@@ -1784,13 +1377,11 @@ Object.assign(_player2.default.prototype, {
 				percentage = pos / width;
 				t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration;
 
-				// fake seek to where the mouse is
 				if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
 					t.setCurrentRailHandle(t.newTime);
 					t.updateCurrent(t.newTime);
 				}
 
-				// position floating time box
 				if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
 					if (pos < 0) {
 						pos = 0;
@@ -1817,15 +1408,7 @@ Object.assign(_player2.default.prototype, {
 				}
 			}
 		},
-
-		/**
-   * Update elements in progress bar for accessibility purposes only when player is paused.
-   *
-   * This is to avoid attempts to repeat the time over and over again when media is playing.
-   * @private
-   */
-		updateSlider = function updateSlider() {
-
+		    updateSlider = function updateSlider() {
 			var seconds = media.currentTime,
 			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
 			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
@@ -1848,19 +1431,12 @@ Object.assign(_player2.default.prototype, {
 				t.slider.removeAttribute('aria-valuetext');
 			}
 		},
-
-		/**
-   *
-   * @private
-   */
-		restartPlayer = function restartPlayer() {
-			var now = new Date();
-			if (now - lastKeyPressTime >= 1000) {
+		    restartPlayer = function restartPlayer() {
+			if (new Date() - lastKeyPressTime >= 1000) {
 				media.play();
 			}
 		},
 		    handleMouseup = function handleMouseup() {
-
 			if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
 				media.setCurrentTime(t.newTime);
 				player.setCurrentRail();
@@ -1872,7 +1448,6 @@ Object.assign(_player2.default.prototype, {
 			t.forcedHandlePause = false;
 		};
 
-		// Events
 		t.slider.addEventListener('focus', function () {
 			player.options.autoRewind = false;
 		});
@@ -1880,7 +1455,6 @@ Object.assign(_player2.default.prototype, {
 			player.options.autoRewind = autoRewindInitial;
 		});
 		t.slider.addEventListener('keydown', function (e) {
-
 			if (new Date() - lastKeyPressTime >= 1000) {
 				startedPaused = media.paused;
 			}
@@ -1895,30 +1469,25 @@ Object.assign(_player2.default.prototype, {
 				var seekTime = media.currentTime;
 
 				switch (keyCode) {
-					case 37: // left
+					case 37:
 					case 40:
-						// Down
 						if (media.duration !== Infinity) {
 							seekTime -= seekBackward;
 						}
 						break;
-					case 39: // Right
+					case 39:
 					case 38:
-						// Up
 						if (media.duration !== Infinity) {
 							seekTime += seekForward;
 						}
 						break;
 					case 36:
-						// Home
 						seekTime = 0;
 						break;
 					case 35:
-						// end
 						seekTime = duration;
 						break;
 					case 32:
-						// space
 						if (!_constants.IS_FIREFOX) {
 							if (media.paused) {
 								media.play();
@@ -1928,7 +1497,6 @@ Object.assign(_player2.default.prototype, {
 						}
 						return;
 					case 13:
-						// enter
 						if (media.paused) {
 							media.play();
 						} else {
@@ -1958,7 +1526,6 @@ Object.assign(_player2.default.prototype, {
 
 		var events = ['mousedown', 'touchstart'];
 
-		// Required to manipulate mouse movements that require drag 'n' drop properly
 		t.slider.addEventListener('dragstart', function () {
 			return false;
 		});
@@ -1967,9 +1534,7 @@ Object.assign(_player2.default.prototype, {
 			t.slider.addEventListener(events[i], function (e) {
 				t.forcedHandlePause = false;
 				if (media.duration !== Infinity) {
-					// only handle left clicks or touch
 					if (e.which === 1 || e.which === 0) {
-
 						if (!media.paused) {
 							t.media.pause();
 							t.forcedHandlePause = true;
@@ -2029,9 +1594,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 
-		// loading
-		// If media is does not have a finite duration, remove progress bar interaction
-		// and indicate that is a live broadcast
 		media.addEventListener('progress', function (e) {
 			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
 			if (media.duration !== Infinity) {
@@ -2052,7 +1614,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 
-		// current time
 		media.addEventListener('timeupdate', function (e) {
 			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
 			if (media.duration !== Infinity) {
@@ -2084,79 +1645,41 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Calculate the progress on the media and update progress bar's width
-  *
-  * @param {Event} e
-  */
 	setProgressRail: function setProgressRail(e) {
-
-		var percent = null;
-
 		var t = this,
 		    target = e !== undefined ? e.target : t.media;
 
-		// newest HTML5 spec has buffered array (FF4, Webkit)
+		var percent = null;
+
 		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
-			// account for a real array with multiple values - always read the end of the last buffer
 			percent = target.buffered.end(target.buffered.length - 1) / target.duration;
-		}
-		// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
-		// to be anything other than 0. If the byte count is available we use this instead.
-		// Browsers that support the else if do not seem to have the bufferedBytes value and
-		// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
-		else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
+		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
 				percent = target.bufferedBytes / target.bytesTotal;
-			}
-			// Firefox 3 with an Ogg file seems to go this way
-			else if (e && e.lengthComputable && e.total !== 0) {
+			} else if (e && e.lengthComputable && e.total !== 0) {
 					percent = e.loaded / e.total;
 				}
 
-		// finally update the progress bar
 		if (percent !== null) {
 			percent = Math.min(1, Math.max(0, percent));
-			// update loaded bar
+
 			if (t.loaded && t.total) {
 				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
 			}
 		}
 	},
-
-	/**
-  * Update the slider's width depending on the time assigned
-  *
-  * @param {Number} fakeTime
-  */
 	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
 		var t = this;
 		t.setCurrentRailMain(t, fakeTime);
 	},
-
-	/**
-  * Update the slider's width depending on the current time
-  *
-  */
 	setCurrentRail: function setCurrentRail() {
 		var t = this;
 		t.setCurrentRailMain(t);
 	},
-
-	/**
-  * Method that handles the calculation of the width of the rail.
-  *
-  * @param {MediaElementPlayer} t
-  * @param {?Number} fakeTime
-  */
 	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
 		if (t.media.currentTime !== undefined && t.media.duration) {
 			var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime;
 
-			// update bar and handle
 			if (t.total && t.handle) {
-
 				var tW = parseFloat(getComputedStyle(t.total).width);
 
 				var newWidth = Math.round(tW * nTime / t.media.duration),
@@ -2203,36 +1726,13 @@ var _dom = _dereq_(24);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Current/duration times
- *
- * This feature creates/updates the duration and progress times in the control bar, based on native events.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * The initial duration
-  * @type {Number}
-  */
 	duration: 0,
-	/**
-  * @type {String}
-  */
+
 	timeAndDurationSeparator: '<span> | </span>'
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Current time constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildcurrent: function buildcurrent(player, controls, layers, media) {
 		var t = this,
 		    time = _document2.default.createElement('div');
@@ -2250,27 +1750,13 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Duration time constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildduration: function buildduration(player, controls, layers, media) {
-
 		var t = this,
 		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
 
 		if (currTime) {
 			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) + '</span>');
 		} else {
-
-			// add class to current time
 			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
 				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
 			}
@@ -2288,12 +1774,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Update the current time and output it in format 00:00
-  *
-  */
 	updateCurrent: function updateCurrent() {
 		var t = this;
 
@@ -2307,12 +1787,6 @@ Object.assign(_player2.default.prototype, {
 			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
 		}
 	},
-
-
-	/**
-  * Update the duration time and output it in format 00:00
-  *
-  */
 	updateDuration: function updateDuration() {
 		var t = this;
 
@@ -2328,7 +1802,6 @@ Object.assign(_player2.default.prototype, {
 
 		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
 
-		// Toggle long-video class if time code is >5 digits (MM:SS)
 		if (timecode.length > 5) {
 			(0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video');
 		}
@@ -2366,68 +1839,25 @@ var _dom = _dereq_(24);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Closed Captions (CC) button
- *
- * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media
- * with a certain language (if available), toggle captions, etc.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.)
-  * If there are multiple tracks for one language, the last track node found is activated
-  * @see https://www.loc.gov/standards/iso639-2/php/code_list.php
-  * @type {String}
-  */
 	startLanguage: '',
-	/**
-  * @type {?String}
-  */
+
 	tracksText: null,
-	/**
-  * @type {?String}
-  */
+
 	chaptersText: null,
-	/**
-  * Avoid to screen reader speak captions over an audio track.
-  *
-  * @type {Boolean}
-  */
+
 	tracksAriaLive: false,
-	/**
-  * Remove the [cc] button when no track nodes are present
-  * @type {Boolean}
-  */
+
 	hideCaptionsButtonWhenEmpty: true,
-	/**
-  * Change captions to pop-up if true and only one track node is found
-  * @type {Boolean}
-  */
+
 	toggleCaptionsButtonWhenOnlyOne: false,
-	/**
-  * @type {String}
-  */
+
 	slidesSelector: ''
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * @type {Boolean}
-  */
 	hasChapters: false,
 
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildtracks: function buildtracks(player, controls, layers, media) {
 
 		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
@@ -2440,7 +1870,6 @@ Object.assign(_player2.default.prototype, {
 		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
 		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
 
-		// If browser will do native captions, prefer mejs captions, loop through tracks and hide
 		if (t.domNode.textTracks) {
 			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
 				t.domNode.textTracks[i].mode = 'hidden';
@@ -2484,7 +1913,6 @@ Object.assign(_player2.default.prototype, {
 		player.selectedTrack = null;
 		player.isLoadingTrack = false;
 
-		// add to list
 		for (var _i2 = 0; _i2 < total; _i2++) {
 			var _kind = player.tracks[_i2].kind;
 			if (_kind === 'subtitles' || _kind === 'captions') {
@@ -2492,15 +1920,12 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 
-		// start loading tracks
 		player.loadNextTrack();
 
 		var inEvents = ['mouseenter', 'focusin'],
 		    outEvents = ['mouseleave', 'focusout'];
 
-		// if only one language then just make the button a toggle
 		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
-			// click
 			player.captionsButton.addEventListener('click', function () {
 				var trackId = 'none';
 				if (player.selectedTrack === null) {
@@ -2511,7 +1936,7 @@ Object.assign(_player2.default.prototype, {
 		} else {
 			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
 			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
-			// hover or keyboard focus
+
 			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
 				player.captionsButton.addEventListener(inEvents[_i3], function () {
 					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
@@ -2524,12 +1949,8 @@ Object.assign(_player2.default.prototype, {
 				});
 			}
 
-			// handle clicks to the language radio buttons
 			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
 				captions[_i5].addEventListener('click', function () {
-					// value is trackId, same as the actual id, and we're using it here
-					// because the "none" checkbox doesn't have a trackId
-					// to use, but we want to know when "none" is clicked
 					player.setTrack(this.value);
 				});
 			}
@@ -2544,7 +1965,6 @@ Object.assign(_player2.default.prototype, {
 				});
 			}
 
-			//Allow up/down arrow to change the selected radio without changing the volume.
 			player.captionsButton.addEventListener('keydown', function (e) {
 				e.stopPropagation();
 			});
@@ -2564,21 +1984,17 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 
-		//Allow up/down arrow to change the selected radio without changing the volume.
 		player.chaptersButton.addEventListener('keydown', function (e) {
 			e.stopPropagation();
 		});
 
 		if (!player.options.alwaysShowControls) {
-			// move with controls
 			player.container.addEventListener('controlsshown', function () {
-				// push captions above controls
 				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
 			});
 
 			player.container.addEventListener('controlshidden', function () {
 				if (!media.paused) {
-					// move back to normal place
 					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
 				}
 			});
@@ -2598,16 +2014,7 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  * Feature destructor.
-  *
-  * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  */
 	cleartracks: function cleartracks(player) {
-
 		if (player) {
 			if (player.captions) {
 				player.captions.remove();
@@ -2636,7 +2043,6 @@ Object.assign(_player2.default.prototype, {
 		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
 		    total = tracktags.length;
 
-		// store for use by plugins
 		t.tracks = [];
 		for (var i = 0; i < total; i++) {
 			var track = tracktags[i],
@@ -2653,12 +2059,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId, or "none" to disable captions
-  */
 	setTrack: function setTrack(trackId) {
 
 		var t = this,
@@ -2704,11 +2104,6 @@ Object.assign(_player2.default.prototype, {
 		event.detail.caption = t.selectedTrack;
 		t.media.dispatchEvent(event);
 	},
-
-
-	/**
-  *
-  */
 	loadNextTrack: function loadNextTrack() {
 		var t = this;
 
@@ -2717,37 +2112,25 @@ Object.assign(_player2.default.prototype, {
 			t.isLoadingTrack = true;
 			t.loadTrack(t.trackToLoad);
 		} else {
-			// add done?
 			t.isLoadingTrack = false;
 			t.checkForTracks();
 		}
 	},
-
-
-	/**
-  *
-  * @param index
-  */
 	loadTrack: function loadTrack(index) {
 		var t = this,
 		    track = t.tracks[index];
 
 		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
 			(0, _dom.ajax)(track.src, 'text', function (d) {
-
-				// parse the loaded file
 				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
 
 				track.isLoaded = true;
-
 				t.enableTrackButton(track);
 				t.loadNextTrack();
 
 				if (track.kind === 'slides') {
 					t.setupSlides(track);
-				}
-				// Load by default the first track with `chapters` kind
-				else if (track.kind === 'chapters' && !t.hasChapters) {
+				} else if (track.kind === 'chapters' && !t.hasChapters) {
 						t.drawChapters(track);
 						t.hasChapters = true;
 					}
@@ -2757,12 +2140,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} track - The language code
-  */
 	enableTrackButton: function enableTrackButton(track) {
 		var t = this,
 		    lang = track.srclang,
@@ -2785,23 +2162,14 @@ Object.assign(_player2.default.prototype, {
 			targetSiblings[i].innerHTML = label;
 		}
 
-		// auto select
 		if (t.options.startLanguage === lang) {
 			target.checked = true;
 			var event = (0, _general.createEvent)('click', target);
 			target.dispatchEvent(event);
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId
-  */
 	removeTrackButton: function removeTrackButton(trackId) {
-
 		var element = _document2.default.getElementById('' + trackId);
-
 		if (element) {
 			var button = element.closest('li');
 			if (button) {
@@ -2809,36 +2177,19 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId
-  * @param {String} lang - The language code
-  * @param {String} label
-  */
 	addTrackButton: function addTrackButton(trackId, lang, label) {
 		var t = this;
 		if (label === '') {
 			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
 		}
 
-		// trackId is used in the value, too, because the "none"
-		// caption option doesn't have a trackId but we need to be able
-		// to set it, too
-		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">' + label + ' (loading)</label>') + '</li>';
+		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>';
 	},
-
-
-	/**
-  *
-  */
 	checkForTracks: function checkForTracks() {
 		var t = this;
 
 		var hasSubtitles = false;
 
-		// check if any subtitles
 		if (t.options.hideCaptionsButtonWhenEmpty) {
 			for (var i = 0, total = t.tracks.length; i < total; i++) {
 				var kind = t.tracks[i].kind;
@@ -2852,13 +2203,7 @@ Object.assign(_player2.default.prototype, {
 			t.setControlsSize();
 		}
 	},
-
-
-	/**
-  *
-  */
 	displayCaptions: function displayCaptions() {
-
 		if (this.tracks === undefined) {
 			return;
 		}
@@ -2866,19 +2211,15 @@ Object.assign(_player2.default.prototype, {
 		var t = this,
 		    track = t.selectedTrack,
 		    sanitize = function sanitize(html) {
-
 			var div = _document2.default.createElement('div');
 			div.innerHTML = html;
 
-			// Remove all `<script>` tags first
 			var scripts = div.getElementsByTagName('script');
 			var i = scripts.length;
 			while (i--) {
 				scripts[i].remove();
 			}
 
-			// Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute
-			// (`onerror`, `onclick`, etc.)
 			var allElements = div.getElementsByTagName('*');
 			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
 				var attributesObj = allElements[_i12].attributes,
@@ -2898,38 +2239,23 @@ Object.assign(_player2.default.prototype, {
 		if (track !== null && track.isLoaded) {
 			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
 			if (i > -1) {
-				// Set the line before the timecode as a class so the cue can be targeted if needed
 				t.captionsText.innerHTML = sanitize(track.entries[i].text);
 				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
 				t.captions.style.display = '';
 				t.captions.style.height = '0px';
-				return; // exit out if one is visible;
+				return;
 			}
-
 			t.captions.style.display = 'none';
 		} else {
 			t.captions.style.display = 'none';
 		}
 	},
-
-
-	/**
-  *
-  * @param {HTMLElement} track
-  */
 	setupSlides: function setupSlides(track) {
 		var t = this;
-
 		t.slides = track;
 		t.slides.entries.imgs = [t.slides.entries.length];
 		t.showSlide(0);
 	},
-
-
-	/**
-  *
-  * @param {Number} index
-  */
 	showSlide: function showSlide(index) {
 		var _this = this;
 
@@ -2944,7 +2270,6 @@ Object.assign(_player2.default.prototype, {
 		var img = t.slides.entries[index].imgs;
 
 		if (img === undefined || img.fadeIn === undefined) {
-
 			var image = _document2.default.createElement('img');
 			image.src = url;
 			image.addEventListener('load', function () {
@@ -2970,11 +2295,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 	},
-
-
-	/**
-  *
-  */
 	displaySlides: function displaySlides() {
 		var t = this;
 
@@ -2987,15 +2307,8 @@ Object.assign(_player2.default.prototype, {
 
 		if (i > -1) {
 			t.showSlide(i);
-			return; // exit out if one is visible;
 		}
 	},
-
-
-	/**
-  *
-  * @param {Object} chapters
-  */
 	drawChapters: function drawChapters(chapters) {
 		var t = this,
 		    total = chapters.entries.length;
@@ -3007,7 +2320,7 @@ Object.assign(_player2.default.prototype, {
 		t.chaptersButton.querySelector('ul').innerHTML = '';
 
 		for (var i = 0; i < total; i++) {
-			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" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>';
+			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>';
 		}
 
 		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
@@ -3049,14 +2362,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-	/**
-  * Perform binary search to look for proper track index
-  *
-  * @param {Object[]} tracks
-  * @param {Number} currentTime
-  * @return {Number}
-  */
 	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
 		var lo = 0,
 		    hi = tracks.length - 1,
@@ -3082,11 +2387,6 @@ Object.assign(_player2.default.prototype, {
 	}
 });
 
-/**
- * Map all possible languages with their respective code
- *
- * @constructor
- */
 _mejs2.default.language = {
 	codes: {
 		af: 'mejs.afrikaans',
@@ -3147,35 +2447,10 @@ _mejs2.default.language = {
 	}
 };
 
-/*
- Parses WebVTT format which should be formatted as
- ================================
- WEBVTT
-
- 1
- 00:00:01,1 --> 00:00:05,000
- A line of text
-
- 2
- 00:01:15,1 --> 00:02:05,000
- A second line of text
-
- ===============================
-
- Adapted from: http://www.delphiki.com/html5/playr
- */
 _mejs2.default.TrackFormatParser = {
 	webvtt: {
-		/**
-   * @type {String}
-   */
 		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})?)(.*)$/,
 
-		/**
-   *
-   * @param {String} trackText
-   * @returns {{text: Array, times: Array}}
-   */
 		parse: function parse(trackText) {
 			var lines = trackText.split(/\r?\n/),
 			    entries = [];
@@ -3192,7 +2467,7 @@ _mejs2.default.TrackFormatParser = {
 						identifier = lines[i - 1];
 					}
 					i++;
-					// grab all the (possibly multi-line) text that follows
+
 					text = lines[i];
 					i++;
 					while (lines[i] !== '' && i < lines.length) {
@@ -3213,13 +2488,8 @@ _mejs2.default.TrackFormatParser = {
 			return entries;
 		}
 	},
-	// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
+
 	dfxp: {
-		/**
-   *
-   * @param {String} trackText
-   * @returns {{text: Array, times: Array}}
-   */
 		parse: function parse(trackText) {
 			trackText = $(trackText).filter('tt');
 			var container = trackText.firstChild,
@@ -3305,56 +2575,22 @@ var _dom = _dereq_(24);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Volume button
- *
- * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its
- * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {?String}
-  */
 	muteText: null,
-	/**
-  * @type {?String}
-  */
+
 	unmuteText: null,
-	/**
-  * @type {?String}
-  */
+
 	allyVolumeControlText: null,
-	/**
-  * @type {Boolean}
-  */
+
 	hideVolumeOnTouchDevices: true,
-	/**
-  * @type {String}
-  */
+
 	audioVolume: 'horizontal',
-	/**
-  * @type {String}
-  */
+
 	videoVolume: 'vertical'
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  * @public
-  */
 	buildvolume: function buildvolume(player, controls, layers, media) {
-
-		// Android and iOS don't support volume controls
 		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
 			return;
 		}
@@ -3367,55 +2603,55 @@ Object.assign(_player2.default.prototype, {
 		    mute = _document2.default.createElement('div');
 
 		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
-		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">') + ('<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>';
+		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>';
 
 		t.addControlElement(mute, 'volume');
 
-		// horizontal version
 		if (mode === 'horizontal') {
 			var anchor = _document2.default.createElement('a');
 			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
 			anchor.href = 'javascript:void(0);';
+			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
+			anchor.setAttribute('aria-valuemin', 0);
+			anchor.setAttribute('aria-valuemax', 100);
+			anchor.setAttribute('role', 'slider');
 			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + 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>';
 			mute.parentNode.insertBefore(anchor, mute.nextSibling);
 		}
 
+		var mouseIsDown = false,
+		    mouseIsOver = false,
+		    updateVolumeSlider = function updateVolumeSlider() {
+			var volume = Math.floor(media.volume * 100);
+			volumeSlider.setAttribute('aria-valuenow', volume);
+			volumeSlider.setAttribute('aria-valuetext', volume + '%');
+		};
+
 		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
 		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
 		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
 		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
-		    button = mute.firstElementChild,
-
-
-		/**
-   * @private
-   * @param {Number} volume
-   */
-		positionVolumeHandle = function positionVolumeHandle(volume) {
-
-			// correct to 0-1
+		    positionVolumeHandle = function positionVolumeHandle(volume) {
 			volume = Math.max(0, volume);
 			volume = Math.min(volume, 1);
 
-			// adjust mute button style
 			if (volume === 0) {
 				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
 				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
-				var _button = mute.firstElementChild;
-				_button.setAttribute('title', unmuteText);
-				_button.setAttribute('aria-label', unmuteText);
+				var button = mute.firstElementChild;
+				button.setAttribute('title', unmuteText);
+				button.setAttribute('aria-label', unmuteText);
 			} else {
 				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
 				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
-				var _button2 = mute.firstElementChild;
-				_button2.setAttribute('title', muteText);
-				_button2.setAttribute('aria-label', muteText);
+				var _button = mute.firstElementChild;
+				_button.setAttribute('title', muteText);
+				_button.setAttribute('aria-label', muteText);
 			}
 
 			var volumePercentage = volume * 100 + '%',
 			    volumeStyles = getComputedStyle(volumeHandle);
 
-			// position slider
 			if (mode === 'vertical') {
 				volumeCurrent.style.bottom = 0;
 				volumeCurrent.style.height = volumePercentage;
@@ -3428,26 +2664,18 @@ Object.assign(_player2.default.prototype, {
 				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
 			}
 		},
-
-		/**
-   * @private
-   */
-		handleVolumeMove = function handleVolumeMove(e) {
-
+		    handleVolumeMove = function handleVolumeMove(e) {
 			var totalOffset = (0, _dom.offset)(volumeTotal),
 			    volumeStyles = getComputedStyle(volumeTotal);
 
 			var volume = null;
 
-			// calculate the new volume based on the most recent position
 			if (mode === 'vertical') {
-
 				var railHeight = parseFloat(volumeStyles.height),
 				    newY = e.pageY - totalOffset.top;
 
 				volume = (railHeight - newY) / railHeight;
 
-				// the controls just hide themselves (usually when mouse moves too far up)
 				if (totalOffset.top === 0 || totalOffset.left === 0) {
 					return;
 				}
@@ -3458,14 +2686,11 @@ Object.assign(_player2.default.prototype, {
 				volume = newX / railWidth;
 			}
 
-			// ensure the volume isn't outside 0-1
 			volume = Math.max(0, volume);
 			volume = Math.min(volume, 1);
 
-			// position the slider and handle
 			positionVolumeHandle(volume);
 
-			// set the media object (this will trigger the `volumechanged` event)
 			if (volume === 0) {
 				media.setMuted(true);
 			} else {
@@ -3489,6 +2714,12 @@ Object.assign(_player2.default.prototype, {
 			volumeSlider.style.display = 'block';
 			mouseIsOver = true;
 		});
+
+		mute.addEventListener('focusout', function (e) {
+			if (!e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider') && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
 		mute.addEventListener('mouseleave', function () {
 			mouseIsOver = false;
 			if (!mouseIsDown && mode === 'vertical') {
@@ -3497,22 +2728,17 @@ Object.assign(_player2.default.prototype, {
 		});
 		mute.addEventListener('focusout', function () {
 			mouseIsOver = false;
-			if (!mouseIsDown && mode === 'vertical') {
-				volumeSlider.style.display = 'none';
-			}
 		});
 		mute.addEventListener('keydown', function (e) {
-
 			if (t.options.keyActions.length) {
 				var keyCode = e.which || e.keyCode || 0,
 				    volume = media.volume;
+
 				switch (keyCode) {
 					case 38:
-						// Up
 						volume = Math.min(volume + 0.1, 1);
 						break;
 					case 40:
-						// Down
 						volume = Math.max(0, volume - 0.1);
 						break;
 					default:
@@ -3527,26 +2753,12 @@ Object.assign(_player2.default.prototype, {
 				e.stopPropagation();
 			}
 		});
+		mute.querySelector('button').addEventListener('click', function () {
+			media.setMuted(!media.muted);
+			var event = (0, _general.createEvent)('volumechange', media);
+			media.dispatchEvent(event);
+		});
 
-		var mouseIsDown = false,
-		    mouseIsOver = false,
-
-
-		/**
-   * @private
-   */
-		updateVolumeSlider = function updateVolumeSlider() {
-			var volume = Math.floor(media.volume * 100);
-			volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
-			volumeSlider.setAttribute('aria-valuemin', 0);
-			volumeSlider.setAttribute('aria-valuemax', 100);
-			volumeSlider.setAttribute('aria-valuenow', volume);
-			volumeSlider.setAttribute('aria-valuetext', volume + '%');
-			volumeSlider.setAttribute('role', 'slider');
-			volumeSlider.tabIndex = -1;
-		};
-
-		// Events
 		volumeSlider.addEventListener('dragstart', function () {
 			return false;
 		});
@@ -3554,6 +2766,16 @@ Object.assign(_player2.default.prototype, {
 		volumeSlider.addEventListener('mouseover', function () {
 			mouseIsOver = true;
 		});
+		volumeSlider.addEventListener('focusin', function () {
+			volumeSlider.style.display = 'block';
+			mouseIsOver = true;
+		});
+		volumeSlider.addEventListener('focusout', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
 		volumeSlider.addEventListener('mousedown', function (e) {
 			handleVolumeMove(e);
 			t.globalBind('mousemove.vol', function (event) {
@@ -3571,29 +2793,10 @@ Object.assign(_player2.default.prototype, {
 				}
 			});
 			mouseIsDown = true;
-
 			e.preventDefault();
 			e.stopPropagation();
 		});
 
-		// MUTE button
-		button.addEventListener('click', function () {
-			media.setMuted(!media.muted);
-			var event = (0, _general.createEvent)('volumechange', media);
-			media.dispatchEvent(event);
-		});
-		button.addEventListener('focus', function () {
-			if (mode === 'vertical') {
-				volumeSlider.style.display = 'block';
-			}
-		});
-		button.addEventListener('blur', function () {
-			if (mode === 'vertical') {
-				volumeSlider.style.display = 'none';
-			}
-		});
-
-		// listen for volume change events from other sources
 		media.addEventListener('volumechange', function (e) {
 			if (!mouseIsDown) {
 				if (media.muted) {
@@ -3609,17 +2812,11 @@ Object.assign(_player2.default.prototype, {
 			updateVolumeSlider(e);
 		});
 
-		// mutes the media and sets the volume icon muted if the initial volume is set to 0
 		if (player.options.startVolume === 0) {
 			media.setMuted(true);
 		}
 
-		// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
-		var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
-
-		if (isNative) {
-			media.setVolume(player.options.startVolume);
-		}
+		media.setVolume(player.options.startVolume);
 
 		t.container.addEventListener('controlsresize', function () {
 			if (media.muted) {
@@ -3638,53 +2835,33 @@ Object.assign(_player2.default.prototype, {
 },{"16":16,"2":2,"23":23,"24":24,"25":25,"4":4}],14:[function(_dereq_,module,exports){
 'use strict';
 
-/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
- */
-
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
 var EN = exports.EN = {
 	"mejs.plural-form": 1,
 
-	// core/mediaelement.js
 	"mejs.download-file": "Download File",
 
-	// renderers/flash.js
 	"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/",
 
-	// features/fullscreen.js
 	"mejs.fullscreen": "Fullscreen",
 
-	// features/playpause.js
 	"mejs.play": "Play",
 	"mejs.pause": "Pause",
 
-	// features/progress.js
 	"mejs.time-slider": "Time Slider",
 	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
 	"mejs.live-broadcast": "Live Broadcast",
 
-	// features/volume.js
 	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
 	"mejs.unmute": "Unmute",
 	"mejs.mute": "Mute",
 	"mejs.volume-slider": "Volume Slider",
 
-	// core/player.js
 	"mejs.video-player": "Video Player",
 	"mejs.audio-player": "Audio Player",
 
-	// features/tracks.js
 	"mejs.captions-subtitles": "Captions/Subtitles",
 	"mejs.captions-chapters": "Chapters",
 	"mejs.none": "None",
@@ -3820,109 +2997,91 @@ _mejs2.default.mepIndex = 0;
 
 _mejs2.default.players = {};
 
-// default player values
 var config = exports.config = {
-	// url to poster (to fix iOS 3.x)
 	poster: '',
-	// When the video is ended, show the poster.
+
 	showPosterWhenEnded: false,
-	// When the video is paused, show the poster.
+
 	showPosterWhenPaused: false,
-	// Default if the <video width> is not specified
+
 	defaultVideoWidth: 480,
-	// Default if the <video height> is not specified
+
 	defaultVideoHeight: 270,
-	// If set, overrides <video width>
+
 	videoWidth: -1,
-	// If set, overrides <video height>
+
 	videoHeight: -1,
-	// Default if the user doesn't specify
+
 	defaultAudioWidth: 400,
-	// Default if the user doesn't specify
+
 	defaultAudioHeight: 40,
-	// Default amount to move back when back key is pressed
+
 	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
 		return media.duration * 0.05;
 	},
-	// Default amount to move forward when forward key is pressed
+
 	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
 		return media.duration * 0.05;
 	},
-	// Set dimensions via JS instead of CSS
+
 	setDimensions: true,
-	// Width of audio player
+
 	audioWidth: -1,
-	// Height of audio player
+
 	audioHeight: -1,
-	// Initial volume when the player starts (overridden by user cookie)
+
 	startVolume: 0.8,
-	// Useful for <audio> player loops
+
 	loop: false,
-	// Rewind to beginning when media ends
+
 	autoRewind: true,
-	// Resize to media dimensions
+
 	enableAutosize: true,
-	/*
-  * Time format to use. Default: 'mm:ss'
-  * Supported units:
-  *   h: hour
-  *   m: minute
-  *   s: second
-  *   f: frame count
-  * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits.
-  * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible.
-  *
-  * Example to display 75 seconds:
-  * Format 'mm:ss': 01:15
-  * Format 'm:ss': 1:15
-  * Format 'm:s': 1:15
-  */
+
 	timeFormat: '',
-	// Force the hour marker (##:00:00)
+
 	alwaysShowHours: false,
-	// Show framecount in timecode (##:00:00:00)
+
 	showTimecodeFrameCount: false,
-	// Used when showTimecodeFrameCount is set to true
+
 	framesPerSecond: 25,
-	// Hide controls when playing and mouse is not over the video
+
 	alwaysShowControls: false,
-	// Display the video control when media is loading
+
 	hideVideoControlsOnLoad: false,
-	// Display the video controls when media is paused
+
 	hideVideoControlsOnPause: false,
-	// Enable click video element to toggle play/pause
+
 	clickToPlayPause: true,
-	// Time in ms to hide controls
+
 	controlsTimeoutDefault: 1500,
-	// Time in ms to trigger the timer when mouse moves
+
 	controlsTimeoutMouseEnter: 2500,
-	// Time in ms to trigger the timer when mouse leaves
+
 	controlsTimeoutMouseLeave: 1000,
-	// Force iPad's native controls
+
 	iPadUseNativeControls: false,
-	// Force iPhone's native controls
+
 	iPhoneUseNativeControls: false,
-	// Force Android's native controls
+
 	AndroidUseNativeControls: false,
-	// Features to show
+
 	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
-	// Only for dynamic
+
 	isVideo: true,
-	// Stretching modes (auto, fill, responsive, none)
+
 	stretching: 'auto',
-	// Prefix class names on elements
+
 	classPrefix: 'mejs__',
-	// Turn keyboard support on and off for this instance
+
 	enableKeyboard: true,
-	// When this player starts, it will pause other players
+
 	pauseOtherPlayers: true,
-	// Number of decimal places to show if frames are shown
+
 	secondsDecimalLength: 0,
-	// Array of keyboard actions such as play/pause
+
 	keyActions: [{
-		keys: [32, // SPACE
-		179 // GOOGLE play/pause button
-		],
+		keys: [32, 179],
 		action: function action(player, media) {
 
 			if (!_constants.IS_FIREFOX) {
@@ -3934,7 +3093,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [38], // UP
+		keys: [38],
 		action: function action(player, media) {
 
 			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
@@ -3952,7 +3111,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [40], // DOWN
+		keys: [40],
 		action: function action(player, media) {
 
 			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
@@ -3972,9 +3131,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [37, // LEFT
-		227 // Google TV rewind
-		],
+		keys: [37, 227],
 		action: function action(player, media) {
 			if (!isNaN(media.duration) && media.duration > 0) {
 				if (player.isVideo) {
@@ -3982,15 +3139,12 @@ var config = exports.config = {
 					player.startControlsTimer();
 				}
 
-				// 5%
 				var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
 				media.setCurrentTime(newTime);
 			}
 		}
 	}, {
-		keys: [39, // RIGHT
-		228 // Google TV forward
-		],
+		keys: [39, 228],
 		action: function action(player, media) {
 
 			if (!isNaN(media.duration) && media.duration > 0) {
@@ -3999,13 +3153,12 @@ var config = exports.config = {
 					player.startControlsTimer();
 				}
 
-				// 5%
 				var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
 				media.setCurrentTime(newTime);
 			}
 		}
 	}, {
-		keys: [70], // F
+		keys: [70],
 		action: function action(player, media, key, event) {
 			if (!event.ctrlKey) {
 				if (typeof player.enterFullScreen !== 'undefined') {
@@ -4018,7 +3171,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [77], // M
+		keys: [77],
 		action: function action(player) {
 
 			player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
@@ -4037,15 +3190,6 @@ var config = exports.config = {
 
 _mejs2.default.MepDefaults = config;
 
-/**
- * Wrap a MediaElement object in player controls
- *
- * @constructor
- * @param {HTMLElement|String} node
- * @param {Object} o
- * @return {?MediaElementPlayer}
- */
-
 var MediaElementPlayer = function () {
 	function MediaElementPlayer(node, o) {
 		_classCallCheck(this, MediaElementPlayer);
@@ -4061,36 +3205,28 @@ var MediaElementPlayer = function () {
 
 		t.controlsTimer = null;
 
-		// enforce object, even without "new" (via John Resig)
 		if (!(t instanceof MediaElementPlayer)) {
 			return new MediaElementPlayer(element, o);
 		}
 
-		// these will be reset after the MediaElement.success fires
-		// t.media will be the fake node to emulate all HTML5 events, methods, etc
-		// t.node will be the node to be restored
 		t.node = t.media = element;
 
 		if (!t.node) {
 			return;
 		}
 
-		// check for existing player
 		if (t.media.player !== undefined) {
 			return t.media.player;
 		}
 
-		// try to get options from data-mejsoptions
 		if (o === undefined) {
 			var options = t.node.getAttribute('data-mejsoptions');
 			o = options ? JSON.parse(options) : {};
 		}
 
-		// extend default options
 		t.options = Object.assign({}, config, o);
 
 		if (!t.options.timeFormat) {
-			// Generate the time format according to options
 			t.options.timeFormat = 'mm:ss';
 			if (t.options.alwaysShowHours) {
 				t.options.timeFormat = 'hh:mm:ss';
@@ -4102,13 +3238,10 @@ var MediaElementPlayer = function () {
 
 		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
 
-		// unique ID
 		t.id = 'mep_' + _mejs2.default.mepIndex++;
 
-		// add to player array (for focus events)
 		_mejs2.default.players[t.id] = t;
 
-		// start up
 		var meOptions = Object.assign({}, t.options, {
 			success: function success(media, domNode) {
 				t._meReady(media, domNode);
@@ -4119,36 +3252,26 @@ var MediaElementPlayer = function () {
 		}),
 		    tagName = t.node.tagName.toLowerCase();
 
-		// get video from src or href?
 		t.isDynamic = tagName !== 'audio' && tagName !== 'video';
 		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
 		t.mediaFiles = null;
 		t.trackFiles = null;
 
-		// use native controls in iPad, iPhone, and Android
 		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
-
-			// add controls and stop
 			t.node.setAttribute('controls', true);
 
-			// override Apple's autoplay override for iPads
 			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
 				t.play();
 			}
 		} else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
-
-			// DESKTOP: use MediaElementPlayer controls
-
-			// remove native controls
 			t.node.removeAttribute('controls');
 			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
-			// insert description for screen readers
+
 			var offscreen = _document2.default.createElement('span');
 			offscreen.className = t.options.classPrefix + 'offscreen';
 			offscreen.innerText = videoPlayerTitle;
 			t.media.parentNode.insertBefore(offscreen, t.media);
 
-			// build container
 			t.container = _document2.default.createElement('div');
 			t.container.id = t.id;
 			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
@@ -4159,29 +3282,21 @@ var MediaElementPlayer = function () {
 			t.container.addEventListener('focus', function (e) {
 				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
 					t.showControls(true);
-					// In versions older than IE11, the focus causes the playbar to be displayed
-					// if user clicks on the Play/Pause button in the control bar once it attempts
-					// to hide it
-					if (!_constants.HAS_MS_NATIVE_FULLSCREEN) {
-						// If e.relatedTarget appears before container, send focus to play button,
-						// else send focus to last control button.
-						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
-						    button = t.container.querySelector(btnSelector);
-
-						button.focus();
-					}
+
+					var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
+					    button = t.container.querySelector(btnSelector);
+
+					button.focus();
 				}
 			});
 			t.node.parentNode.insertBefore(t.container, t.node);
 
-			// When no elements in controls, hide bar completely
 			if (!t.options.features.length) {
 				t.container.style.background = 'transparent';
 				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
 			}
 
 			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
-				// outer container
 				t.outerContainer = t.media.parentNode;
 
 				var wrapper = _document2.default.createElement('div');
@@ -4190,7 +3305,6 @@ var MediaElementPlayer = function () {
 				wrapper.appendChild(t.container);
 			}
 
-			// add classes for user and content
 			if (_constants.IS_ANDROID) {
 				dom.addClass(t.container, t.options.classPrefix + 'android');
 			}
@@ -4205,9 +3319,6 @@ var MediaElementPlayer = function () {
 			}
 			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
 
-			// Workflow for Safari desktop: "clone" element and remove children, but save them to check sources, captions, etc.
-			// This ensure full compatibility when using keyboard, since Safari creates a keyboard trap when appending
-			// video/audio elements with children
 			if (_constants.IS_SAFARI && !_constants.IS_IOS) {
 
 				dom.addClass(t.container, t.options.classPrefix + 'hide-cues');
@@ -4228,7 +3339,6 @@ var MediaElementPlayer = function () {
 									Array.prototype.slice.call(childNode.attributes).forEach(function (item) {
 										elements[item.name] = item.value;
 									});
-
 									elements.type = (0, _media.formatType)(elements.src, elements.type);
 									mediaFiles.push(elements);
 									break;
@@ -4255,25 +3365,13 @@ var MediaElementPlayer = function () {
 				}
 			}
 
-			// move the `video`/`audio` tag into the right spot
 			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
 
-			// needs to be assigned here, after iOS remap
 			t.media.player = t;
 
-			// find parts
 			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
 			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
 
-			// determine the size
-
-			/* size priority:
-    (1) videoWidth (forced),
-    (2) style="width;height;"
-    (3) width attribute,
-    (4) defaultVideoWidth (for unspecified cases)
-    */
-
 			var tagType = t.isVideo ? 'video' : 'audio',
 			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
 
@@ -4299,23 +3397,17 @@ var MediaElementPlayer = function () {
 
 			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
 
-			// set the size, while we wait for the plugins to load below
 			t.setPlayerSize(t.width, t.height);
 
-			// create MediaElementShim
 			meOptions.pluginWidth = t.width;
 			meOptions.pluginHeight = t.height;
-		}
-		// Hide media completely for audio that doesn't have any features
-		else if (!t.isVideo && !t.options.features.length) {
+		} else if (!t.isVideo && !t.options.features.length) {
 				t.node.style.display = 'none';
 			}
 
-		// create MediaElement shim
 		new _mediaelement2.default(t.media, meOptions, t.mediaFiles);
 
 		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
-			// controls are shown when loaded
 			var event = (0, _general.createEvent)('controlsshown', t.container);
 			t.container.dispatchEvent(event);
 		}
@@ -4330,7 +3422,7 @@ var MediaElementPlayer = function () {
 
 			doAnimation = doAnimation === undefined || doAnimation;
 
-			if (t.controlsAreVisible) {
+			if (t.controlsAreVisible || !t.isVideo) {
 				return;
 			}
 
@@ -4342,7 +3434,6 @@ var MediaElementPlayer = function () {
 						t.container.dispatchEvent(event);
 					});
 
-					// any additional controls people might add and want to hide
 					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 
 					var _loop = function _loop(i, total) {
@@ -4358,8 +3449,8 @@ var MediaElementPlayer = function () {
 			} else {
 				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
 				t.controls.style.display = '';
+				t.controls.style.opacity = 1;
 
-				// any additional controls people might add and want to hide
 				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 				for (var i = 0, total = controls.length; i < total; i++) {
 					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
@@ -4386,7 +3477,6 @@ var MediaElementPlayer = function () {
 
 			if (doAnimation) {
 				(function () {
-					// fade out main controls
 					dom.fadeOut(t.controls, 200, function () {
 						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
 						t.controls.style.display = '';
@@ -4394,7 +3484,6 @@ var MediaElementPlayer = function () {
 						t.container.dispatchEvent(event);
 					});
 
-					// any additional controls people might add and want to hide
 					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 
 					var _loop2 = function _loop2(i, total) {
@@ -4409,12 +3498,10 @@ var MediaElementPlayer = function () {
 					}
 				})();
 			} else {
-
-				// hide main controls
 				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
 				t.controls.style.display = '';
+				t.controls.style.opacity = 0;
 
-				// hide others
 				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 				for (var i = 0, total = controls.length; i < total; i++) {
 					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
@@ -4430,7 +3517,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'startControlsTimer',
 		value: function startControlsTimer(timeout) {
-
 			var t = this;
 
 			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
@@ -4445,7 +3531,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'killControlsTimer',
 		value: function killControlsTimer() {
-
 			var t = this;
 
 			if (t.controlsTimer !== null) {
@@ -4471,33 +3556,22 @@ var MediaElementPlayer = function () {
 			t.controlsEnabled = true;
 			t.showControls(false);
 		}
-
-		/**
-   * Set up all controls and events
-   *
-   * @param media
-   * @param domNode
-   * @private
-   */
-
 	}, {
 		key: '_meReady',
 		value: function _meReady(media, domNode) {
-
 			var t = this,
 			    autoplayAttr = domNode.getAttribute('autoplay'),
 			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
-			    isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null;
+			    isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
 			if (t.controls) {
 				t.enableControls();
 			}
 
-			if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
+			if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
 				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
 			}
 
-			// make sure it can't create itself again if a plugin reloads
 			if (t.created) {
 				return;
 			}
@@ -4507,13 +3581,7 @@ var MediaElementPlayer = function () {
 			t.domNode = domNode;
 
 			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
-
-				// In the event that no features are specified for audio,
-				// create only MediaElement instance rather than
-				// doing all the work to create a full player
 				if (!t.isVideo && !t.options.features.length) {
-
-					// force autoplay for HTML5
 					if (autoplay && isNative) {
 						t.play();
 					}
@@ -4530,25 +3598,20 @@ var MediaElementPlayer = function () {
 					return;
 				}
 
-				// two built in features
 				t.buildposter(t, t.controls, t.layers, t.media);
 				t.buildkeyboard(t, t.controls, t.layers, t.media);
 				t.buildoverlays(t, t.controls, t.layers, t.media);
 
-				// grab for use by features
 				t.findTracks();
 
-				// cache container to store control elements' original position
 				t.featurePosition = {};
 
-				// add user-defined features/controls
 				for (var i = 0, total = t.options.features.length; i < total; i++) {
 					var feature = t.options.features[i];
 					if (t['build' + feature]) {
 						try {
 							t['build' + feature](t, t.controls, t.layers, t.media);
 						} catch (e) {
-							// TODO: report control error
 							console.error('error building ' + feature, e);
 						}
 					}
@@ -4557,15 +3620,10 @@ var MediaElementPlayer = function () {
 				var event = (0, _general.createEvent)('controlsready', t.container);
 				t.container.dispatchEvent(event);
 
-				// reset all layers and controls
 				t.setPlayerSize(t.width, t.height);
 				t.setControlsSize();
 
-				// controls fade
 				if (t.isVideo) {
-
-					// create callback here since it needs access to current
-					// MediaElement object
 					t.clickToPlayPauseCallback = function () {
 
 						if (t.options.clickToPlayPause) {
@@ -4586,16 +3644,10 @@ var MediaElementPlayer = function () {
 
 					t.createIframeLayer();
 
-					// click to play/pause
 					t.media.addEventListener('click', t.clickToPlayPauseCallback);
 
 					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
-
-						// for touch devices (iOS, Android)
-						// show/hide without animation on touch
 						t.node.addEventListener('touchstart', function () {
-
-							// toggle controls
 							if (t.controlsAreVisible) {
 								t.hideControls(false);
 							} else {
@@ -4605,8 +3657,6 @@ var MediaElementPlayer = function () {
 							}
 						});
 					} else {
-
-						// show/hide controls
 						t.container.addEventListener('mouseenter', function () {
 							if (t.controlsEnabled) {
 								if (!t.options.alwaysShowControls) {
@@ -4639,16 +3689,12 @@ var MediaElementPlayer = function () {
 						t.hideControls(false);
 					}
 
-					// check for autoplay
 					if (autoplay && !t.options.alwaysShowControls) {
 						t.hideControls();
 					}
 
-					// resizer
 					if (t.options.enableAutosize) {
 						t.media.addEventListener('loadedmetadata', function (e) {
-							// if the <video height> was not set and the options.videoHeight was not set
-							// then resize to the real dimensions
 							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) {
 								t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
 								t.setControlsSize();
@@ -4658,13 +3704,9 @@ var MediaElementPlayer = function () {
 					}
 				}
 
-				// EVENTS
-
-				// FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them)
 				t.media.addEventListener('play', function () {
 					t.hasFocus = true;
 
-					// go through all other players
 					for (var playerIndex in _mejs2.default.players) {
 						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
 							var p = _mejs2.default.players[playerIndex];
@@ -4677,13 +3719,11 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// ended for all
 				t.media.addEventListener('ended', function () {
 					if (t.options.autoRewind) {
 						try {
 							t.media.setCurrentTime(0);
-							// Fixing an Android stock browser bug, where "seeked" isn't fired correctly after
-							// ending the video and jumping to the beginning
+
 							setTimeout(function () {
 								var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading');
 								if (loadingElement && loadingElement.parentNode) {
@@ -4715,7 +3755,6 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// resize on the first play
 				t.media.addEventListener('loadedmetadata', function () {
 
 					(0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25);
@@ -4733,14 +3772,12 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// Only change the time format when necessary
 				var duration = null;
 				t.media.addEventListener('timeupdate', function () {
 					if (duration !== t.media.duration) {
 						duration = t.media.duration;
 						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
 
-						// make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15
 						if (t.updateDuration) {
 							t.updateDuration();
 						}
@@ -4751,11 +3788,21 @@ var MediaElementPlayer = function () {
 					}
 				});
 
+				t.container.addEventListener('click', function (e) {
+					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
+				});
+
+				t.container.addEventListener('focusin', function (e) {
+					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
+					if (t.controlsEnabled && !t.options.alwaysShowControls) {
+						t.showControls(false);
+					}
+				});
+
 				t.container.addEventListener('focusout', function (e) {
 					setTimeout(function () {
-						//FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787
 						if (e.relatedTarget) {
-							if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) {
+							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
 								t.keyboardAction = false;
 								if (t.isVideo && !t.options.alwaysShowControls) {
 									t.hideControls(true);
@@ -4765,44 +3812,20 @@ var MediaElementPlayer = function () {
 					}, 0);
 				});
 
-				// webkit has trouble doing this without a delay
 				setTimeout(function () {
 					t.setPlayerSize(t.width, t.height);
 					t.setControlsSize();
 				}, 0);
 
-				// adjust controls whenever window sizes (used to be in fullscreen only)
 				t.globalBind('resize', function () {
-
-					// don't resize for fullscreen mode
 					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
 						t.setPlayerSize(t.width, t.height);
 					}
 
-					// always adjust controls
 					t.setControlsSize();
 				});
-
-				// Disable focus outline to improve look-and-feel for regular users
-				t.globalBind('click', function (e) {
-					if (e.target.matches('.' + t.options.classPrefix + 'container')) {
-						dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
-					} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
-						dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
-					}
-				});
-
-				// Enable focus outline for Accessibility purposes
-				t.globalBind('keydown', function (e) {
-					if (e.target.matches('.' + t.options.classPrefix + 'container')) {
-						dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
-					} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
-						dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
-					}
-				});
 			}
 
-			// force autoplay for HTML5
 			if (autoplay && isNative) {
 				t.play();
 			}
@@ -4816,13 +3839,6 @@ var MediaElementPlayer = function () {
 				}
 			}
 		}
-
-		/**
-   *
-   * @param {Event} e
-   * @private
-   */
-
 	}, {
 		key: '_handleError',
 		value: function _handleError(e) {
@@ -4838,7 +3854,6 @@ var MediaElementPlayer = function () {
 				play.style.display = 'none';
 			}
 
-			// Tell user that the file cannot be played
 			if (t.options.error) {
 				t.options.error(e);
 			}
@@ -4860,10 +3875,8 @@ var MediaElementPlayer = function () {
 				t.height = height;
 			}
 
-			// check stretching modes
 			switch (t.options.stretching) {
 				case 'fill':
-					// The 'fill' effect only makes sense on video; for audio we will set the dimensions
 					if (t.isVideo) {
 						t.setFillMode();
 					} else {
@@ -4876,7 +3889,7 @@ var MediaElementPlayer = function () {
 				case 'none':
 					t.setDimensions(t.width, t.height);
 					break;
-				// This is the 'auto' mode
+
 				default:
 					if (t.hasFluidMode() === true) {
 						t.setResponsiveMode();
@@ -4891,8 +3904,7 @@ var MediaElementPlayer = function () {
 		value: function hasFluidMode() {
 			var t = this;
 
-			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
-			return t.height.toString().includes('%') || 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%';
+			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%';
 		}
 	}, {
 		key: 'setResponsiveMode',
@@ -4903,15 +3915,10 @@ var MediaElementPlayer = function () {
 				var parentEl = void 0,
 				    el = t.container;
 
-				// traverse parents to find the closest visible one
 				while (el) {
 					try {
-						if (_window2.default.self !== _window2.default.top) {
-							if (_window2.default.frameElement !== null) {
-								return _window2.default.frameElement;
-							} else {
-								parentEl = _window2.default.frameElement.parentNode;
-							}
+						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
+							return _window2.default.frameElement;
 						} else {
 							parentEl = el.parentElement;
 						}
@@ -4978,17 +3985,15 @@ var MediaElementPlayer = function () {
 			    parentWidth = parseFloat(parentStyles.width);
 
 			if (t.isVideo) {
-				// Responsive video is based on width: 100% and height: 100%
 				if (t.height === '100%') {
-					newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10);
+					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
 				} else {
-					newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10);
+					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
 				}
 			} else {
 				newHeight = nativeHeight;
 			}
 
-			// If we were unable to compute newHeight, get the container height instead
 			if (isNaN(newHeight)) {
 				newHeight = parentHeight;
 			}
@@ -4999,21 +4004,16 @@ var MediaElementPlayer = function () {
 			}
 
 			if (newHeight && parentWidth) {
-
-				// set outer container size
 				t.container.style.width = parentWidth + 'px';
 				t.container.style.height = newHeight + 'px';
 
-				// set native <video> or <audio> and shims
 				t.node.style.width = '100%';
 				t.node.style.height = '100%';
 
-				// if shim is ready, send the size to the embedded plugin
 				if (t.isVideo && t.media.setSize) {
 					t.media.setSize(parentWidth, newHeight);
 				}
 
-				// set the layers
 				var layerChildren = t.layers.childNodes;
 				for (var i = 0, total = layerChildren.length; i < total; i++) {
 					layerChildren[i].style.width = '100%';
@@ -5026,11 +4026,13 @@ var MediaElementPlayer = function () {
 		value: function setFillMode() {
 			var t = this;
 
-			var parent = void 0;
+			var parent = void 0,
+			    isIframe = false;
 
 			try {
 				if (_window2.default.self !== _window2.default.top) {
-					parent = _window2.default.frameElement.parentNode;
+					isIframe = true;
+					parent = _window2.default.frameElement;
 				} else {
 					parent = t.outerContainer;
 				}
@@ -5040,7 +4042,6 @@ var MediaElementPlayer = function () {
 
 			var parentStyles = getComputedStyle(parent);
 
-			// Remove the responsive attributes in the event they are there
 			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
 				t.node.style.height = 'auto';
 			}
@@ -5064,11 +4065,11 @@ var MediaElementPlayer = function () {
 				}
 			}
 
-			if (!parseFloat(parentStyles.width)) {
+			if (!isIframe && !parseFloat(parentStyles.width)) {
 				parent.style.width = t.media.offsetWidth + 'px';
 			}
 
-			if (!parseFloat(parentStyles.height)) {
+			if (!isIframe && !parseFloat(parentStyles.height)) {
 				parent.style.height = t.media.offsetHeight + 'px';
 			}
 
@@ -5079,27 +4080,19 @@ var MediaElementPlayer = function () {
 
 			t.setDimensions('100%', '100%');
 
-			// This prevents an issue when displaying poster
 			var poster = t.container.querySelector(t.options.classPrefix + 'poster img');
 			if (poster) {
 				poster.style.display = '';
 			}
 
-			// calculate new width and height
 			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
 			    initHeight = t.height,
 			    initWidth = t.width,
-
-			// scale to the target width
-			scaleX1 = parentWidth,
+			    scaleX1 = parentWidth,
 			    scaleY1 = initHeight * parentWidth / initWidth,
-
-			// scale to the target height
-			scaleX2 = initWidth * parentHeight / initHeight,
+			    scaleX2 = initWidth * parentHeight / initHeight,
 			    scaleY2 = parentHeight,
-
-			// now figure out which one we should use
-			bScaleOnWidth = scaleX2 > parentWidth === false,
+			    bScaleOnWidth = scaleX2 > parentWidth === false,
 			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
 			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
 			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
@@ -5121,8 +4114,8 @@ var MediaElementPlayer = function () {
 		value: function setDimensions(width, height) {
 			var t = this;
 
-			width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px';
-			height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px';
+			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
+			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
 
 			t.container.style.width = width;
 			t.container.style.height = height;
@@ -5138,7 +4131,6 @@ var MediaElementPlayer = function () {
 		value: function setControlsSize() {
 			var t = this;
 
-			// skip calculation if hidden
 			if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) {
 				return;
 			}
@@ -5160,21 +4152,12 @@ var MediaElementPlayer = function () {
 
 			siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
 
-			// Substract the width of the feature siblings from time rail
 			var controlsWidth = parseFloat(t.controls.offsetWidth);
 			t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px';
 
 			var event = (0, _general.createEvent)('controlsresize', t.container);
 			t.container.dispatchEvent(event);
 		}
-
-		/**
-   * Add featured control element and cache its position in case features are reset
-   *
-   * @param {HTMLElement} element
-   * @param {String} key
-   */
-
 	}, {
 		key: 'addControlElement',
 		value: function addControlElement(element, key) {
@@ -5195,20 +4178,12 @@ var MediaElementPlayer = function () {
 				}
 			}
 		}
-
-		/**
-   * Append layer to manipulate `<iframe>` elements safely.
-   *
-   * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`.
-   */
-
 	}, {
 		key: 'createIframeLayer',
 		value: function createIframeLayer() {
-
 			var t = this;
 
-			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
+			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
 
 				var layer = _document2.default.createElement('div'),
 				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
@@ -5235,7 +4210,7 @@ var MediaElementPlayer = function () {
 		key: 'resetSize',
 		value: function resetSize() {
 			var t = this;
-			// webkit has trouble doing this without a delay
+
 			setTimeout(function () {
 				t.setPlayerSize(t.width, t.height);
 				t.setControlsSize();
@@ -5298,7 +4273,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'globalUnbind',
 		value: function globalUnbind(events, callback) {
-
 			var t = this,
 			    doc = t.node ? t.node.ownerDocument : _document2.default;
 
@@ -5325,7 +4299,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'buildposter',
 		value: function buildposter(player, controls, layers, media) {
-
 			var t = this,
 			    poster = _document2.default.createElement('div');
 
@@ -5334,12 +4307,10 @@ var MediaElementPlayer = function () {
 
 			var posterUrl = player.media.getAttribute('poster');
 
-			// priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
 			if (player.options.poster !== '') {
 				posterUrl = player.options.poster;
 			}
 
-			// second, try the real poster
 			if (posterUrl) {
 				t.setPoster(posterUrl);
 			} else {
@@ -5366,8 +4337,6 @@ var MediaElementPlayer = function () {
 
 			if (player.options.showPosterWhenPaused) {
 				media.addEventListener('pause', function () {
-					// To avoid displaying the poster when video ended, since it
-					// triggers a pause event as well
 					if (!media.ended) {
 						poster.style.display = '';
 					}
@@ -5385,12 +4354,10 @@ var MediaElementPlayer = function () {
 			var t = this,
 			    loading = _document2.default.createElement('div'),
 			    error = _document2.default.createElement('div'),
-
-			// this needs to come last so it's on top
-			bigPlay = _document2.default.createElement('div'),
+			    bigPlay = _document2.default.createElement('div'),
 			    buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
 
-			loading.style.display = 'none'; // start out hidden
+			loading.style.display = 'none';
 			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
 			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
 			layers.appendChild(loading);
@@ -5403,8 +4370,6 @@ var MediaElementPlayer = function () {
 			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
 			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
 			bigPlay.addEventListener('click', function () {
-				// Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay
-				// started and immediately stopped the video
 				if (t.options.clickToPlayPause) {
 
 					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
@@ -5419,13 +4384,23 @@ var MediaElementPlayer = function () {
 					button.setAttribute('aria-pressed', !!pressed);
 				}
 			});
+
+			bigPlay.addEventListener('keydown', function (e) {
+				var keyPressed = e.keyCode || e.which || 0;
+
+				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
+					var event = (0, _general.createEvent)('click', bigPlay);
+					bigPlay.dispatchEvent(event);
+					return false;
+				}
+			});
+
 			layers.appendChild(bigPlay);
 
-			if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
+			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
 				bigPlay.style.display = 'none';
 			}
 
-			// show/hide big play button
 			media.addEventListener('play', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = 'none';
@@ -5434,7 +4409,6 @@ var MediaElementPlayer = function () {
 				}
 				error.style.display = 'none';
 			});
-
 			media.addEventListener('playing', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = 'none';
@@ -5443,7 +4417,6 @@ var MediaElementPlayer = function () {
 				}
 				error.style.display = 'none';
 			});
-
 			media.addEventListener('seeking', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = '';
@@ -5451,7 +4424,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = '';
 				}
 			});
-
 			media.addEventListener('seeked', function () {
 				bigPlay.style.display = media.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
 				loading.style.display = 'none';
@@ -5459,7 +4431,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = '';
 				}
 			});
-
 			media.addEventListener('pause', function () {
 				loading.style.display = 'none';
 				if (!_constants.IS_STOCK_ANDROID) {
@@ -5469,7 +4440,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = 'none';
 				}
 			});
-
 			media.addEventListener('waiting', function () {
 				loading.style.display = '';
 				if (buffer) {
@@ -5477,15 +4447,12 @@ var MediaElementPlayer = function () {
 				}
 			});
 
-			// show/hide loading
 			media.addEventListener('loadeddata', function () {
 				loading.style.display = '';
 				if (buffer) {
 					buffer.style.display = '';
 				}
 
-				// Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices
-				// (https://github.com/johndyer/mediaelement/issues/1305)
 				if (_constants.IS_ANDROID) {
 					media.canplayTimeout = setTimeout(function () {
 						if (_document2.default.createEvent) {
@@ -5501,11 +4468,10 @@ var MediaElementPlayer = function () {
 				if (buffer) {
 					buffer.style.display = 'none';
 				}
-				// Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice
+
 				clearTimeout(media.canplayTimeout);
 			});
 
-			// error handling
 			media.addEventListener('error', function (e) {
 				t._handleError(e);
 				loading.style.display = 'none';
@@ -5533,7 +4499,6 @@ var MediaElementPlayer = function () {
 				t.keyboardAction = true;
 			});
 
-			// listen for key presses
 			t.globalBind('keydown', function (event) {
 				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
 				    target = t.media.closest('.' + t.options.classPrefix + 'container');
@@ -5541,7 +4506,6 @@ var MediaElementPlayer = function () {
 				return t.onkeydown(player, media, event);
 			});
 
-			// check if someone clicked outside a player region, then kill its focus
 			t.globalBind('click', function (event) {
 				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
 			});
@@ -5551,7 +4515,6 @@ var MediaElementPlayer = function () {
 		value: function onkeydown(player, media, e) {
 
 			if (player.hasFocus && player.options.enableKeyboard) {
-				// find a matching key
 				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
 					var keyAction = player.options.keyActions[i];
 
@@ -5572,7 +4535,6 @@ var MediaElementPlayer = function () {
 		value: function play() {
 			var t = this;
 
-			// only load if the current time is 0 to ensure proper playing
 			if (t.media.getCurrentTime() <= 0) {
 				t.load();
 			}
@@ -5634,17 +4596,14 @@ var MediaElementPlayer = function () {
 			}
 
 			t.media.setSrc(src);
-
 			t.createIframeLayer();
 		}
 	}, {
 		key: 'remove',
 		value: function remove() {
-
 			var t = this,
 			    rendererName = t.media.rendererName;
 
-			// Stop completely media playing
 			if (!t.media.paused) {
 				t.media.pause();
 			}
@@ -5652,55 +4611,51 @@ var MediaElementPlayer = function () {
 			var src = t.media.getSrc();
 			t.media.setSrc('');
 
-			// invoke features cleanup
 			for (var featureIndex in t.options.features) {
 				var feature = t.options.features[featureIndex];
 				if (t['clean' + feature]) {
 					try {
 						t['clean' + feature](t);
 					} catch (e) {
-						// @todo: report control error
 						console.error('error cleaning ' + feature, e);
 					}
 				}
 			}
 
-			// reset dimensions
 			var nativeWidth = t.node.getAttribute('width'),
 			    nativeHeight = t.node.getAttribute('height');
+
 			if (nativeWidth) {
-				if (nativeWidth.match('%') === null) {
+				if (nativeWidth.indexOf('%') === -1) {
 					nativeWidth = nativeWidth + 'px';
 				}
 			} else {
 				nativeWidth = 'auto';
 			}
+
 			if (nativeHeight) {
-				if (nativeHeight.match('%') === null) {
+				if (nativeHeight.indexOf('%') === -1) {
 					nativeHeight = nativeHeight + 'px';
 				}
 			} else {
 				nativeHeight = 'auto';
 			}
+
 			t.node.style.width = nativeWidth;
 			t.node.style.height = nativeHeight;
 
-			// grab video and put it back in place
 			if (!t.isDynamic) {
 				(function () {
 					t.node.setAttribute('controls', true);
 					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
 
-					// Remove `autoplay` (not worth bringing it back once player is destroyed)
 					delete t.node.autoplay;
 
-					// Reintegrate file if it can be played
 					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
 						t.node.setAttribute('src', src);
 					}
 
-					// If <iframe>, remove overlay
-					if (rendererName.match(/iframe/i) !== null) {
+					if (~rendererName.indexOf('iframe')) {
 						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
 						layer.remove();
 					}
@@ -5710,7 +4665,6 @@ var MediaElementPlayer = function () {
 					t.container.parentNode.insertBefore(node, t.container);
 					t.node.remove();
 
-					// Add children
 					if (t.mediaFiles) {
 						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
 							var source = _document2.default.createElement('source');
@@ -5735,7 +4689,6 @@ var MediaElementPlayer = function () {
 							});
 						};
 
-						// Load captions properly
 						for (var _i3 = 0, _total3 = t.trackFiles.length; _i3 < _total3; _i3++) {
 							_loop3(_i3, _total3);
 						}
@@ -5753,8 +4706,6 @@ var MediaElementPlayer = function () {
 				t.media.destroy();
 			}
 
-			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to
-			// pause a non existent Flash API.
 			delete _mejs2.default.players[t.id];
 
 			if (_typeof(t.container) === 'object') {
@@ -5775,8 +4726,6 @@ _window2.default.MediaElementPlayer = MediaElementPlayer;
 
 exports.default = MediaElementPlayer;
 
-// turn into plugin
-
 (function ($) {
 
 	if (typeof $ !== 'undefined') {
@@ -5798,7 +4747,6 @@ exports.default = MediaElementPlayer;
 		};
 
 		$(_document2.default).ready(function () {
-			// auto enable using JSON attribute
 			$('.' + config.classPrefix + 'player').mediaelementplayer();
 		});
 	}
@@ -5811,10 +4759,6 @@ var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
@@ -5827,99 +4771,28 @@ var _media = _dereq_(26);
 
 var _constants = _dereq_(23);
 
+var _dom = _dereq_(24);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native M(PEG)-Dash renderer
- *
- * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * This renderer integrates new events associated with mpd files.
- * @see https://github.com/Dash-Industry-Forum/dash.js
- *
- */
 var NativeDash = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an DASH source
-  *
-  * @param {Object} settings - an object with settings needed to load an DASH player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeDash.isLoaded) {
-			NativeDash.createInstance(settings);
-		} else {
-			NativeDash.loadScript(settings);
-			NativeDash.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load dash.mediaplayer.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an DASH player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof dashjs !== 'undefined') {
-			NativeDash.createInstance(settings);
-		} else if (!NativeDash.isScriptLoaded) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeDash.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-
-			NativeDash.isScriptLoaded = true;
-		}
-	},
-
-	/**
-  * Process queue of DASH player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-
-		NativeDash.isLoaded = true;
-		NativeDash.isScriptLoaded = true;
+			NativeDash._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js';
 
-		while (NativeDash.creationQueue.length > 0) {
-			var settings = NativeDash.creationQueue.pop();
-			NativeDash.createInstance(settings);
+			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeDash.promise.then(function () {
+				NativeDash._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of DASH player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate DASH object
-  */
-	createInstance: function createInstance(settings) {
-
+	_createPlayer: function _createPlayer(settings) {
 		var player = dashjs.MediaPlayer().create();
 		_window2.default['__ready__' + settings.id](player);
 	}
@@ -5927,33 +4800,18 @@ var NativeDash = {
 
 var DashNativeRenderer = {
 	name: 'native_dash',
-
 	options: {
 		prefix: 'native_dash',
 		dash: {
-			// Special config: used to set the local path/URL of dash.js player library
-			path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js',
+			path: 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js',
 			debug: false
 		}
 	},
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
+
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['application/dash+xml'].includes(type);
+		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -5976,10 +4834,9 @@ var DashNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (dashPlayer !== null) {
 						if (propName === 'src') {
-
 							dashPlayer.attachSource(value);
 							if (autoplay) {
 								node.play();
@@ -5996,7 +4853,6 @@ var DashNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all M-Dash events
 		_window2.default['__ready__' + id] = function (_dashPlayer) {
 
 			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
@@ -6008,7 +4864,6 @@ var DashNativeRenderer = {
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    dashEvents = dashjs.MediaPlayer.events,
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
 					dashPlayer.initialize(node, node.src, false);
 				}
@@ -6023,13 +4878,6 @@ var DashNativeRenderer = {
 				assignEvents(events[_i]);
 			}
 
-			/**
-    * Custom M(PEG)-DASH events
-    *
-    * These events can be attached to the original node using addEventListener and the name of the event,
-    * not using dashjs.MediaPlayer.events object
-    * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html
-    */
 			var assignMdashEvents = function assignMdashEvents(e) {
 				var event = (0, _general.createEvent)(e.type, node);
 				event.data = e;
@@ -6062,12 +4910,11 @@ var DashNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		NativeDash.prepareSettings({
+		NativeDash.load({
 			options: options.dash,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -6092,18 +4939,13 @@ var DashNativeRenderer = {
 	}
 };
 
-/**
- * Register Native M(PEG)-Dash type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.mpd') ? 'application/dash+xml' : null;
+	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
 });
 
 _renderer.renderer.add(DashNativeRenderer);
 
-},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){
+},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -6139,30 +4981,9 @@ var _media = _dereq_(26);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Shim that falls back to Flash if a media type is not supported.
- *
- * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
- * will play using Flash.
- */
-
-/**
- * Core detector, plugins are added below
- *
- */
 var PluginDetector = exports.PluginDetector = {
-	/**
-  * Cached version numbers
-  * @type {Array}
-  */
 	plugins: [],
 
-	/**
-  * Test a plugin version number
-  * @param {String} plugin - In this scenario 'flash' will be tested
-  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
-  * @return {Boolean}
-  */
 	hasPluginVersion: function hasPluginVersion(plugin, v) {
 		var pv = PluginDetector.plugins[plugin];
 		v[1] = v[1] || 0;
@@ -6170,36 +4991,16 @@ var PluginDetector = exports.PluginDetector = {
 		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];
 	},
 
-	/**
-  * Detect plugin and store its version number
-  *
-  * @see PluginDetector.detectPlugin
-  * @param {String} p
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  */
 	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
 		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
 	},
 
-	/**
-  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
-  *
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  * @return {int[]}
-  */
 	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
 
 		var version = [0, 0, 0],
 		    description = void 0,
 		    ax = void 0;
 
-		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
 		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
 			description = _constants.NAV.plugins[pluginName].description;
 			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
@@ -6208,7 +5009,6 @@ var PluginDetector = exports.PluginDetector = {
 					version[i] = parseInt(version[i].match(/\d+/), 10);
 				}
 			}
-			// Internet Explorer / ActiveX
 		} else if (_window2.default.ActiveXObject !== undefined) {
 			try {
 				ax = new ActiveXObject(activeX);
@@ -6223,12 +5023,7 @@ var PluginDetector = exports.PluginDetector = {
 	}
 };
 
-/**
- * Add Flash detection
- *
- */
 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
-	// adapted from SWFObject
 	var version = [],
 	    d = ax.GetVariable("$version");
 
@@ -6240,34 +5035,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl
 });
 
 var FlashMediaElementRenderer = {
-
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var flash = {};
 
-		// store main variable
 		flash.options = options;
 		flash.id = mediaElement.id + '_' + flash.options.prefix;
 		flash.mediaElement = mediaElement;
-
-		// insert data
 		flash.flashState = {};
 		flash.flashApi = null;
 		flash.flashApiStack = [];
 
-		// mediaElements for get/set
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
-
-			// add to flash state that we will store
 			flash.flashState[propName] = null;
 
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -6279,7 +5059,6 @@ var FlashMediaElementRenderer = {
 					if (flash.flashApi['get_' + propName] !== undefined) {
 						var value = flash.flashApi['get_' + propName]();
 
-						// special case for buffered to conform to HTML5's newest
 						if (propName === 'buffered') {
 							return {
 								start: function start() {
@@ -6306,11 +5085,9 @@ var FlashMediaElementRenderer = {
 					value = (0, _media.absolutizeUrl)(value);
 				}
 
-				// send value to Flash
 				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
 					flash.flashApi['set_' + propName](value);
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'set',
 						propName: propName,
@@ -6324,16 +5101,10 @@ var FlashMediaElementRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add mediaElements for native methods
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			flash[methodName] = function () {
-
 				if (flash.flashApi !== null) {
-
-					// send call up to Flash ExternalInterface API
 					if (flash.flashApi['fire_' + methodName]) {
 						try {
 							flash.flashApi['fire_' + methodName]();
@@ -6344,7 +5115,6 @@ var FlashMediaElementRenderer = {
 						
 					}
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'call',
 						methodName: methodName
@@ -6357,7 +5127,6 @@ var FlashMediaElementRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// give initial events like in others renderers
 		var initEvents = ['rendererready'];
 
 		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
@@ -6365,16 +5134,13 @@ var FlashMediaElementRenderer = {
 			mediaElement.dispatchEvent(event);
 		}
 
-		// add a ready method that Flash can call to
 		_window2.default['__ready__' + flash.id] = function () {
 
 			flash.flashReady = true;
 			flash.flashApi = _document2.default.getElementById('__' + flash.id);
 
-			// do call stack
 			if (flash.flashApiStack.length) {
 				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
-
 					var stackItem = flash.flashApiStack[_i3];
 
 					if (stackItem.type === 'set') {
@@ -6390,19 +5156,15 @@ var FlashMediaElementRenderer = {
 		};
 
 		_window2.default['__event__' + flash.id] = function (eventName, message) {
-
 			var event = (0, _general.createEvent)(eventName, flash);
 			event.message = message || '';
 
-			// send event from Flash up to the mediaElement
 			flash.mediaElement.dispatchEvent(event);
 		};
 
-		// insert Flash object
 		flash.flashWrapper = _document2.default.createElement('div');
 
-		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
-		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
 			flash.options.shimScriptAccess = 'sameDomain';
 		}
 
@@ -6492,55 +5254,42 @@ var FlashMediaElementRenderer = {
 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
 
 if (hasFlash) {
-
-	/**
-  * Register media type based on URL structure if Flash is detected
-  *
-  */
 	_media.typeChecks.push(function (url) {
-
 		url = url.toLowerCase();
 
 		if (url.startsWith('rtmp')) {
-			if (url.includes('.mp3')) {
+			if (~url.indexOf('.mp3')) {
 				return 'audio/rtmp';
 			} else {
 				return 'video/rtmp';
 			}
-		} else if (url.includes('.oga') || url.includes('.ogg')) {
+		} else if (/\.og(a|g)/i.test(url)) {
 			return 'audio/ogg';
-		} else if (url.includes('.m3u8')) {
+		} else if (~url.indexOf('.m3u8')) {
 			return 'application/x-mpegURL';
-		} else if (url.includes('.mpd')) {
+		} else if (~url.indexOf('.mpd')) {
 			return 'application/dash+xml';
-		} else if (url.includes('.flv')) {
+		} else if (~url.indexOf('.flv')) {
 			return 'video/flv';
 		} else {
 			return null;
 		}
 	});
 
-	// VIDEO
 	var FlashMediaElementVideoRenderer = {
 		name: 'flash_video',
-
 		options: {
 			prefix: 'flash_video',
 			filename: 'mediaelement-flash-video.swf',
 			enablePseudoStreaming: false,
-			// start query parameter sent to server for pseudo-streaming
+
 			pseudoStreamingStartQueryParam: 'start',
-			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+
 			pseudoStreamingType: 'byte'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
+			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -6548,88 +5297,60 @@ if (hasFlash) {
 	};
 	_renderer.renderer.add(FlashMediaElementVideoRenderer);
 
-	// HLS
 	var FlashMediaElementHlsVideoRenderer = {
 		name: 'flash_hls',
-
 		options: {
 			prefix: 'flash_hls',
 			filename: 'mediaelement-flash-video-hls.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+			return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
 
-	// M(PEG)-DASH
 	var FlashMediaElementMdashVideoRenderer = {
 		name: 'flash_dash',
-
 		options: {
 			prefix: 'flash_dash',
 			filename: 'mediaelement-flash-video-mdash.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/dash+xml'].includes(type.toLowerCase());
+			return ~['application/dash+xml'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
 
-	// AUDIO
 	var FlashMediaElementAudioRenderer = {
 		name: 'flash_audio',
-
 		options: {
 			prefix: 'flash_audio',
 			filename: 'mediaelement-flash-audio.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/mp3'].includes(type.toLowerCase());
+			return ~['audio/mp3'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementAudioRenderer);
 
-	// AUDIO - ogg
 	var FlashMediaElementAudioOggRenderer = {
 		name: 'flash_audio_ogg',
-
 		options: {
 			prefix: 'flash_audio_ogg',
 			filename: 'mediaelement-flash-audio-ogg.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -6644,10 +5365,6 @@ var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
@@ -6660,100 +5377,28 @@ var _constants = _dereq_(23);
 
 var _media = _dereq_(26);
 
+var _dom = _dereq_(24);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native FLV renderer
- *
- * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * Currently, it can only play files with the same origin.
- *
- * @see https://github.com/Bilibili/flv.js
- *
- */
 var NativeFlv = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an FLV source
-  * @param {Object} settings - an object with settings needed to load an FLV player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeFlv.isLoaded) {
-			NativeFlv.createInstance(settings);
-		} else {
-			NativeFlv.loadScript(settings);
-			NativeFlv.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load flv.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an FLV player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof flvjs !== 'undefined') {
-			NativeFlv.createInstance(settings);
-		} else if (!NativeFlv.isMediaStarted) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeFlv.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			NativeFlv.isMediaStarted = true;
-		}
-	},
-
-	/**
-  * Process queue of FLV player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-		NativeFlv.isLoaded = true;
-		NativeFlv.isMediaLoaded = true;
+			NativeFlv._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js';
 
-		while (NativeFlv.creationQueue.length > 0) {
-			var settings = NativeFlv.creationQueue.pop();
-			NativeFlv.createInstance(settings);
+			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeFlv.promise.then(function () {
+				NativeFlv._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of FLV player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate FLV object
-  */
-	createInstance: function createInstance(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = flvjs.createPlayer(settings.options);
 		_window2.default['__ready__' + settings.id](player);
 	}
@@ -6761,35 +5406,19 @@ var NativeFlv = {
 
 var FlvNativeRenderer = {
 	name: 'native_flv',
-
 	options: {
 		prefix: 'native_flv',
 		flv: {
-			// Special config: used to set the local path/URL of flv.js library
-			path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js',
-			// To modify more elements from FLV player,
-			// see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config
+			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js',
+
 			cors: true
 		}
 	},
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
+
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type);
+		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -6810,7 +5439,7 @@ var FlvNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (flvPlayer !== null) {
 						node[propName] = value;
 
@@ -6829,16 +5458,13 @@ var FlvNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all FLV events
 		_window2.default['__ready__' + id] = function (_flvPlayer) {
 
 			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
 
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
-
 					flvPlayer.unload();
 					flvPlayer.detachMediaElement();
 					flvPlayer.attachMediaElement(node);
@@ -6871,16 +5497,14 @@ var FlvNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		// Options that cannot be overridden
 		options.flv.type = 'flv';
 		options.flv.url = node.getAttribute('src');
 
-		NativeFlv.prepareSettings({
+		NativeFlv.load({
 			options: options.flv,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -6913,28 +5537,19 @@ var FlvNativeRenderer = {
 	}
 };
 
-/**
- * Register Native FLV type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.flv') ? 'video/flv' : null;
+	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
 });
 
 _renderer.renderer.add(FlvNativeRenderer);
 
-},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){
+},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){
 'use strict';
 
 var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
@@ -6947,101 +5562,28 @@ var _constants = _dereq_(23);
 
 var _media = _dereq_(26);
 
+var _dom = _dereq_(24);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native HLS renderer
- *
- * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does.
- * @see https://github.com/dailymotion/hls.js
- *
- */
 var NativeHls = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an HLS source
-  *
-  * @param {Object} settings - an object with settings needed to load an HLS player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeHls.isLoaded) {
-			NativeHls.createInstance(settings);
-		} else {
-			NativeHls.loadScript(settings);
-			NativeHls.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load hls.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an HLS player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof Hls !== 'undefined') {
-			NativeHls.createInstance(settings);
-		} else if (!NativeHls.isMediaStarted) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeHls.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			NativeHls.isMediaStarted = true;
-		}
-	},
-
-	/**
-  * Process queue of HLS player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-		NativeHls.isLoaded = true;
-		NativeHls.isMediaLoaded = true;
+			NativeHls._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js';
 
-		while (NativeHls.creationQueue.length > 0) {
-			var settings = NativeHls.creationQueue.pop();
-			NativeHls.createInstance(settings);
+			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeHls.promise.then(function () {
+				NativeHls._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of HLS player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate HLS object
-  * @return {Hls}
-  */
-	createInstance: function createInstance(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = new Hls(settings.options);
 		_window2.default['__ready__' + settings.id](player);
 		return player;
@@ -7050,37 +5592,20 @@ var NativeHls = {
 
 var HlsNativeRenderer = {
 	name: 'native_hls',
-
 	options: {
 		prefix: 'native_hls',
 		hls: {
-			// Special config: used to set the local path/URL of hls.js library
-			path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js',
-			// To modify more elements from hls.js,
-			// see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning
+			path: 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js',
+
 			autoStartLoad: false,
 			debug: false
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -7095,7 +5620,6 @@ var HlsNativeRenderer = {
 		options = Object.assign(options, mediaElement.options);
 		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
 
-		// WRAPPERS for PROPs
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -7105,14 +5629,14 @@ var HlsNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (hlsPlayer !== null) {
 						node[propName] = value;
 
 						if (propName === 'src') {
 
 							hlsPlayer.destroy();
-							hlsPlayer = NativeHls.createInstance({
+							hlsPlayer = NativeHls._createPlayer({
 								options: options.hls,
 								id: id
 							});
@@ -7129,7 +5653,6 @@ var HlsNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all HLS events
 		_window2.default['__ready__' + id] = function (_hlsPlayer) {
 
 			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
@@ -7137,9 +5660,7 @@ var HlsNativeRenderer = {
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    hlsEvents = Hls.Events,
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
-
 					var url = mediaElement.originalNode.src;
 					hlsPlayer.detachMedia();
 					hlsPlayer.loadSource(url);
@@ -7147,7 +5668,6 @@ var HlsNativeRenderer = {
 				}
 
 				node.addEventListener(eventName, function (e) {
-					// copy event
 					var event = (0, _general.createEvent)(e.type, mediaElement);
 					mediaElement.dispatchEvent(event);
 				});
@@ -7157,16 +5677,6 @@ var HlsNativeRenderer = {
 				assignEvents(events[_i]);
 			}
 
-			/**
-    * Custom HLS events
-    *
-    * These events can be attached to the original node using addEventListener and the name of the event,
-    * not using Hls.Events object
-    * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js
-    * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js
-    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events
-    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors
-    */
 			var recoverDecodingErrorDate = void 0,
 			    recoverSwapAudioCodecDate = void 0;
 			var assignHlsEvents = function assignHlsEvents(e, data) {
@@ -7177,7 +5687,6 @@ var HlsNativeRenderer = {
 				if (e === 'hlsError') {
 					console.warn(e, data);
 
-					// borrowed from http://dailymotion.github.io/hls.js/demo/
 					if (data.fatal) {
 						switch (data.type) {
 							case 'mediaError':
@@ -7200,7 +5709,6 @@ var HlsNativeRenderer = {
 							default:
 								hlsPlayer.destroy();
 								break;
-
 						}
 					}
 				}
@@ -7242,12 +5750,11 @@ var HlsNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		NativeHls.prepareSettings({
+		NativeHls.load({
 			options: options.hls,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -7284,18 +5791,13 @@ var HlsNativeRenderer = {
 	}
 };
 
-/**
- * Register Native HLS type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.m3u8') ? 'application/x-mpegURL' : null;
+	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
 });
 
 _renderer.renderer.add(HlsNativeRenderer);
 
-},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){
+},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){
 'use strict';
 
 var _window = _dereq_(3);
@@ -7318,54 +5820,31 @@ var _constants = _dereq_(23);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native HTML5 Renderer
- *
- * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
- */
 var HtmlMediaElement = {
-
 	name: 'html5',
-
 	options: {
 		prefix: 'html5'
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {String}
-  */
 	canPlayType: function canPlayType(type) {
 
 		var mediaElement = _document2.default.createElement('video');
 
-		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
-		// also consider URLs that might have obfuscated URLs
-		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+		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) {
 			return 'yes';
 		} else if (mediaElement.canPlayType) {
-			return mediaElement.canPlayType(type).replace(/no/, '');
+			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
 		} else {
 			return '';
 		}
 	},
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
+
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var id = mediaElement.id + '_' + options.prefix;
 
 		var node = null;
 
-		// CREATE NODE
 		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
 			node = _document2.default.createElement('audio');
 			mediaElement.appendChild(node);
@@ -7375,7 +5854,6 @@ var HtmlMediaElement = {
 
 		node.setAttribute('id', id);
 
-		// WRAPPERS for PROPs
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -7385,7 +5863,7 @@ var HtmlMediaElement = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					node[propName] = value;
 				}
 			};
@@ -7397,10 +5875,7 @@ var HtmlMediaElement = {
 
 		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 		    assignEvents = function assignEvents(eventName) {
-
 			node.addEventListener(eventName, function (e) {
-				// copy event
-
 				var event = (0, _general.createEvent)(e.type, mediaElement);
 				mediaElement.dispatchEvent(event);
 			});
@@ -7410,7 +5885,6 @@ var HtmlMediaElement = {
 			assignEvents(events[_i]);
 		}
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -7472,38 +5946,18 @@ var _general = _dereq_(25);
 
 var _media = _dereq_(26);
 
+var _dom = _dereq_(24);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * YouTube renderer
- *
- * Uses <iframe> approach and uses YouTube API to manipulate it.
- * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event,
- * so it doesn't work - not sure if Google problem or not.
- * @see https://developers.google.com/youtube/iframe_api_reference
- */
 var YouTubeApi = {
-	/**
-  * @type {Boolean}
-  */
 	isIframeStarted: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isIframeLoaded: false,
-	/**
-  * @type {Array}
-  */
+
 	iframeQueue: [],
 
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	enqueueIframe: function enqueueIframe(settings) {
-
-		// Check whether YouTube API is already loaded.
 		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
 
 		if (YouTubeApi.isLoaded) {
@@ -7514,24 +5968,13 @@ var YouTubeApi = {
 		}
 	},
 
-	/**
-  * Load YouTube API script on the header of the document
-  *
-  */
 	loadIframeApi: function loadIframeApi() {
 		if (!YouTubeApi.isIframeStarted) {
-			var tag = _document2.default.createElement('script');
-			tag.src = '//www.youtube.com/player_api';
-			var firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+			(0, _dom.loadScript)('https://www.youtube.com/player_api');
 			YouTubeApi.isIframeStarted = true;
 		}
 	},
 
-	/**
-  * Process queue of YouTube <iframe> element creation
-  *
-  */
 	iFrameReady: function iFrameReady() {
 
 		YouTubeApi.isLoaded = true;
@@ -7543,35 +5986,17 @@ var YouTubeApi = {
 		}
 	},
 
-	/**
-  * Create a new instance of YouTube API player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	createIframe: function createIframe(settings) {
 		return new YT.Player(settings.containerId, settings);
 	},
 
-	/**
-  * Extract ID from YouTube's URL to be loaded through API
-  * Valid URL format(s):
-  * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  * - http://www.youtube.com/v/VIDEO_ID?version=3
-  * - http://youtu.be/Djd6tPrxc08
-  * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  *
-  * @param {String} url
-  * @return {string}
-  */
 	getYouTubeId: function getYouTubeId(url) {
 
 		var youTubeId = '';
 
 		if (url.indexOf('?') > 0) {
-			// assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
 			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
 
-			// if it's http://www.youtube.com/v/VIDEO_ID?version=3
 			if (youTubeId === '') {
 				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
 			}
@@ -7582,12 +6007,6 @@ var YouTubeApi = {
 		return youTubeId;
 	},
 
-	/**
-  * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  *
-  * @param {String} url
-  * @returns {string}
-  */
 	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -7610,13 +6029,6 @@ var YouTubeApi = {
 		return youTubeId;
 	},
 
-	/**
-  * Get ID from URL with formats
-  *  - http://www.youtube.com/v/VIDEO_ID?version=3
-  *  - http://youtu.be/Djd6tPrxc08
-  * @param {String} url
-  * @return {?String}
-  */
 	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -7628,13 +6040,8 @@ var YouTubeApi = {
 		return url.substring(url.lastIndexOf('/') + 1);
 	},
 
-	/**
-  * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3
-  * @param {String} url
-  * @return {?String}
-  */
 	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
-		if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) {
+		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
 			return url;
 		}
 
@@ -7649,12 +6056,7 @@ var YouTubeIframeRenderer = {
 
 	options: {
 		prefix: 'youtube_iframe',
-		/**
-   * Custom configuration for YouTube player
-   *
-   * @see https://developers.google.com/youtube/player_parameters#Parameters
-   * @type {Object}
-   */
+
 		youtube: {
 			autoplay: 0,
 			controls: 0,
@@ -7667,32 +6069,17 @@ var YouTubeIframeRenderer = {
 			showinfo: 0,
 			start: 0,
 			iv_load_policy: 3,
-			// custom to inject `-nocookie` element in URL
+
 			nocookie: false
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/youtube', 'video/x-youtube'].includes(type);
+		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
-		// API objects
 		var youtube = {},
 		    apiStack = [],
 		    readyState = 4;
@@ -7707,39 +6094,29 @@ var YouTubeIframeRenderer = {
 		youtube.id = mediaElement.id + '_' + options.prefix;
 		youtube.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
-			// add to flash state that we will store
-
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
 			youtube['get' + capName] = function () {
 				if (youTubeApi !== null) {
 					var value = null;
 
-					// figure out how to get youtube dta here
 					switch (propName) {
 						case 'currentTime':
 							return youTubeApi.getCurrentTime();
-
 						case 'duration':
 							return youTubeApi.getDuration();
-
 						case 'volume':
 							volume = youTubeApi.getVolume() / 100;
 							return volume;
-
 						case 'paused':
 							return paused;
-
 						case 'ended':
 							return ended;
-
 						case 'muted':
 							return youTubeApi.isMuted();
-
 						case 'buffered':
 							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
 							    duration = youTubeApi.getDuration();
@@ -7754,7 +6131,6 @@ var YouTubeIframeRenderer = {
 							};
 						case 'src':
 							return youTubeApi.getVideoUrl();
-
 						case 'readyState':
 							return readyState;
 					}
@@ -7766,12 +6142,8 @@ var YouTubeIframeRenderer = {
 			};
 
 			youtube['set' + capName] = function (value) {
-
 				if (youTubeApi !== null) {
-
-					// do something
 					switch (propName) {
-
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src,
 							    _videoId = YouTubeApi.getYouTubeId(url);
@@ -7782,11 +6154,9 @@ var YouTubeIframeRenderer = {
 								youTubeApi.cueVideoById(_videoId);
 							}
 							break;
-
 						case 'currentTime':
 							youTubeApi.seekTo(value);
 							break;
-
 						case 'muted':
 							if (value) {
 								youTubeApi.mute();
@@ -7798,7 +6168,6 @@ var YouTubeIframeRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'volume':
 							volume = value;
 							youTubeApi.setVolume(value * 100);
@@ -7811,13 +6180,11 @@ var YouTubeIframeRenderer = {
 							var event = (0, _general.createEvent)('canplay', youtube);
 							mediaElement.dispatchEvent(event);
 							break;
-
 						default:
 							
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -7827,16 +6194,10 @@ var YouTubeIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			youtube[methodName] = function () {
-
 				if (youTubeApi !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							paused = false;
@@ -7846,7 +6207,6 @@ var YouTubeIframeRenderer = {
 							return youTubeApi.pauseVideo();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -7858,11 +6218,9 @@ var YouTubeIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// CREATE YouTube
 		var youtubeContainer = _document2.default.createElement('div');
 		youtubeContainer.id = youtube.id;
 
-		// If `nocookie` feature was enabled, modify original URL
 		if (youtube.options.youtube.nocookie) {
 			mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src));
 		}
@@ -7871,8 +6229,8 @@ var YouTubeIframeRenderer = {
 		mediaElement.originalNode.style.display = 'none';
 
 		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
-		    height = isAudio ? '0' : mediaElement.originalNode.height,
-		    width = isAudio ? '0' : mediaElement.originalNode.width,
+		    height = isAudio ? '1' : mediaElement.originalNode.height,
+		    width = isAudio ? '1' : mediaElement.originalNode.width,
 		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
 		    youtubeSettings = {
 			id: youtube.id,
@@ -7901,7 +6259,6 @@ var YouTubeIframeRenderer = {
 						ended: false
 					};
 
-					// do call stack
 					if (apiStack.length) {
 						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 
@@ -7918,7 +6275,6 @@ var YouTubeIframeRenderer = {
 						}
 					}
 
-					// a few more events
 					youTubeIframe = youTubeApi.getIframe();
 
 					var events = ['mouseover', 'mouseout'],
@@ -7932,7 +6288,6 @@ var YouTubeIframeRenderer = {
 						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
 					}
 
-					// send init events
 					var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
 
 					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
@@ -7941,62 +6296,43 @@ var YouTubeIframeRenderer = {
 					}
 				},
 				onStateChange: function onStateChange(e) {
-
-					// translate events
 					var events = [];
 
 					switch (e.data) {
 						case -1:
-							// not started
 							events = ['loadedmetadata'];
 							paused = true;
 							ended = false;
 							break;
-
 						case 0:
-							// YT.PlayerState.ENDED
 							events = ['ended'];
 							paused = false;
 							ended = true;
-
 							youtube.stopInterval();
 							break;
-
 						case 1:
-							// YT.PlayerState.PLAYING
 							events = ['play', 'playing'];
 							paused = false;
 							ended = false;
-
 							youtube.startInterval();
-
 							break;
-
 						case 2:
-							// YT.PlayerState.PAUSED
 							events = ['pause'];
 							paused = true;
 							ended = false;
-
 							youtube.stopInterval();
 							break;
-
 						case 3:
-							// YT.PlayerState.BUFFERING
 							events = ['progress'];
 							ended = false;
-
 							break;
 						case 5:
-							// YT.PlayerState.CUED
 							events = ['loadeddata', 'loadedmetadata', 'canplay'];
 							paused = true;
 							ended = false;
-
 							break;
 					}
 
-					// send events up
 					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
 						var event = (0, _general.createEvent)(events[_i5], youtube);
 						mediaElement.dispatchEvent(event);
@@ -8010,12 +6346,10 @@ var YouTubeIframeRenderer = {
 			}
 		};
 
-		// The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio
 		if (isAudio) {
 			youtubeSettings.playerVars.playsinline = 1;
 		}
 
-		// send it off for async loading and creation
 		YouTubeApi.enqueueIframe(youtubeSettings);
 
 		youtube.onEvent = function (eventName, player, _youTubeState) {
@@ -8047,7 +6381,6 @@ var YouTubeIframeRenderer = {
 		youtube.interval = null;
 
 		youtube.startInterval = function () {
-			// create timer
 			youtube.interval = setInterval(function () {
 
 				var event = (0, _general.createEvent)('timeupdate', youtube);
@@ -8071,14 +6404,14 @@ if (_window2.default.postMessage && _typeof(_window2.default.addEventListener))
 	};
 
 	_media.typeChecks.push(function (url) {
-		url = url.toLowerCase();
-		return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null;
+		return (/\/\/(www\.youtube|youtu\.be)/i.test(url) ? 'video/x-youtube' : null
+		);
 	});
 
 	_renderer.renderer.add(YouTubeIframeRenderer);
 }
 
-},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){
+},{"2":2,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -8102,18 +6435,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var NAV = exports.NAV = _window2.default.navigator;
 var UA = exports.UA = NAV.userAgent.toLowerCase();
-
-var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
-var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA);
+var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA);
 var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
-var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
-var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
+var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
-var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
-var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
-var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
-var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
-
+var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
+var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
+var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	var element = _document2.default.createElement('x'),
@@ -8132,7 +6463,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	return !!supports;
 }();
 
-// for IE
 var html5Elements = ['source', 'track', 'audio', 'video'];
 var video = void 0;
 
@@ -8140,28 +6470,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) {
 	video = _document2.default.createElement(html5Elements[i]);
 }
 
-// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
-var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
 
-// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
-
-// iOS
 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
 
-// W3C
 var hasNativeFullscreen = video.requestFullscreen !== undefined;
 
-// OS X 10.5 can't do this even if it says it can :(
-if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
 	hasNativeFullscreen = false;
 	hasiOSFullScreen = false;
 }
 
-// webkit/firefox/IE11+
 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
-
 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
 var fullScreenEventName = '';
@@ -8169,7 +6491,6 @@ var isFullScreen = void 0,
     requestFullScreen = void 0,
     cancelFullScreen = void 0;
 
-// Enabled?
 if (hasMozNativeFullScreen) {
 	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
 } else if (hasMsNativeFullScreen) {
@@ -8181,7 +6502,6 @@ if (IS_CHROME) {
 }
 
 if (hasTrueNativeFullScreen) {
-
 	if (hasWebkitNativeFullScreen) {
 		fullScreenEventName = 'webkitfullscreenchange';
 	} else if (hasMozNativeFullScreen) {
@@ -8201,7 +6521,6 @@ if (hasTrueNativeFullScreen) {
 	};
 
 	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
-
 		if (hasWebkitNativeFullScreen) {
 			el.webkitRequestFullScreen();
 		} else if (hasMozNativeFullScreen) {
@@ -8230,7 +6549,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
-
 exports.isFullScreen = isFullScreen;
 exports.requestFullScreen = requestFullScreen;
 exports.cancelFullScreen = cancelFullScreen;
@@ -8249,7 +6567,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI;
 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
 _mejs2.default.Features.hasMSE = HAS_MSE;
 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
-
 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
@@ -8266,15 +6583,11 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
 },{"2":2,"3":3,"6":6}],24:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript,
- * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js)
- */
-
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
 exports.removeClass = exports.addClass = exports.hasClass = undefined;
+exports.loadScript = loadScript;
 exports.offset = offset;
 exports.toggleClass = toggleClass;
 exports.fadeOut = fadeOut;
@@ -8297,6 +6610,52 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
+function TinyPromise(handler) {
+	var thens = [];
+	var state = -1;
+	var result = void 0;
+	var then = void 0;
+
+	function done(value) {
+		for (result = value; then = thens.shift();) {
+			then[state] && then[state](result);
+		}
+	}
+
+	handler(function (value) {
+		return done(value, state = 0);
+	}, function (value) {
+		return done(value, state = 1);
+	});
+
+	return {
+		then: function then() {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			~state ? args[state] && args[state](result) : thens.push(args);
+		}
+	};
+}
+
+function loadScript(url) {
+	return TinyPromise(function (resolve, reject) {
+		var script = _document2.default.createElement('script');
+		script.src = url;
+		script.async = true;
+		script.onload = function () {
+			script.remove();
+			resolve();
+		};
+		script.onerror = function () {
+			script.remove();
+			reject();
+		};
+		_document2.default.head.appendChild(script);
+	});
+}
+
 function offset(el) {
 	var rect = el.getBoundingClientRect(),
 	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
@@ -8340,7 +6699,6 @@ function toggleClass(el, className) {
 	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
 }
 
-// fade an element from the current state to full opacity in "duration" ms
 function fadeOut(el) {
 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
 	var callback = arguments[2];
@@ -8365,8 +6723,6 @@ function fadeOut(el) {
 	});
 }
 
-// fade out an element from the current state to full transparency in "duration" ms
-// display is the display style the element is assigned after the animation is done
 function fadeIn(el) {
 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
 	var callback = arguments[2];
@@ -8428,7 +6784,7 @@ function ajax(url, dataType, success, error) {
 			break;
 	}
 
-	if (!type.includes('application/x-www-form-urlencoded')) {
+	if (type !== 'application/x-www-form-urlencoded') {
 		accept = type + ', */*; q=0.01';
 	}
 
@@ -8436,19 +6792,14 @@ function ajax(url, dataType, success, error) {
 		xhr.open('GET', url, true);
 		xhr.setRequestHeader('Accept', accept);
 		xhr.onreadystatechange = function () {
-
-			// Ignore repeat invocations
 			if (completed) {
 				return;
 			}
 
 			if (xhr.readyState === 4) {
 				if (xhr.status === 200) {
-
 					completed = true;
-
 					var data = void 0;
-
 					switch (dataType) {
 						case 'json':
 							data = JSON.parse(xhr.responseText);
@@ -8460,7 +6811,6 @@ function ajax(url, dataType, success, error) {
 							data = xhr.responseText;
 							break;
 					}
-
 					success(data);
 				} else if (typeof error === 'function') {
 					error(xhr.status);
@@ -8483,6 +6833,7 @@ _mejs2.default.Utils.fadeOut = fadeOut;
 _mejs2.default.Utils.siblings = siblings;
 _mejs2.default.Utils.visible = visible;
 _mejs2.default.Utils.ajax = ajax;
+_mejs2.default.Utils.loadScript = loadScript;
 
 },{"2":2,"3":3,"6":6}],25:[function(_dereq_,module,exports){
 'use strict';
@@ -8504,11 +6855,6 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- *
- * @param {String} input
- * @return {string}
- */
 function escapeHTML(input) {
 
 	if (typeof input !== 'string') {
@@ -8527,7 +6873,6 @@ function escapeHTML(input) {
 	});
 }
 
-// taken from underscore
 function debounce(func, wait) {
 	var _this = this,
 	    _arguments = arguments;
@@ -8563,28 +6908,13 @@ function debounce(func, wait) {
 	};
 }
 
-/**
- * Determine if an object contains any elements
- *
- * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
- * @param {Object} instance
- * @return {Boolean}
- */
 function isObjectEmpty(instance) {
 	return Object.getOwnPropertyNames(instance).length <= 0;
 }
 
-/**
- * Group a string of events into `document` (d) and `window` (w) events
- *
- * @param {String} events  List of space separated events
- * @param {String} id      Namespace appended to events
- * @return {{d: Array, w: Array}}
- */
 function splitEvents(events, id) {
-	// Global events
 	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
-	// add player ID as an event namespace so it's easier to unbind them all later
+
 	var ret = { d: [], w: [] };
 	(events || '').split(' ').forEach(function (v) {
 		var eventName = '' + v + (id ? '.' + id : '');
@@ -8602,26 +6932,20 @@ function splitEvents(events, id) {
 	return ret;
 }
 
-/**
- *
- * @param {string} eventName
- * @param {*} target
- * @return {Event|Object}
- */
 function createEvent(eventName, target) {
 
 	if (typeof eventName !== 'string') {
 		throw new Error('Event name must be a string');
 	}
 
-	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
 	    detail = {
 		target: target
 	};
 
 	if (eventFrags !== null) {
-		eventName = eventFrags[0];
-		detail.namespace = eventFrags[1];
+		eventName = eventFrags[1];
+		detail.namespace = eventFrags[2];
 	}
 
 	return new window.CustomEvent(eventName, {
@@ -8629,23 +6953,11 @@ function createEvent(eventName, target) {
 	});
 }
 
-/**
- * Returns true if targetNode appears after sourceNode in the dom.
- * @param {HTMLElement} sourceNode - the source node for comparison
- * @param {HTMLElement} targetNode - the node to compare against sourceNode
- */
 function isNodeAfter(sourceNode, targetNode) {
 
-	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
-	);
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
 }
 
-/**
- * Determines if a value is a string
- *
- * @param {*} value to check
- * @returns {Boolean} True if a value is a string
- */
 function isString(value) {
 	return typeof value === 'string';
 }
@@ -8683,11 +6995,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var typeChecks = exports.typeChecks = [];
 
-/**
- *
- * @param {String} url
- * @return {String}
- */
 function absolutizeUrl(url) {
 
 	if (typeof url !== 'string') {
@@ -8699,42 +7006,21 @@ function absolutizeUrl(url) {
 	return el.firstChild.href;
 }
 
-/**
- * Get the format of a specific media, based on URL and additionally its mime type
- *
- * @param {String} url
- * @param {String} type
- * @return {String}
- */
 function formatType(url) {
 	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
 	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
 }
 
-/**
- * Return the mime part of the type in case the attribute contains the codec
- * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
- *
- * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
- * @param {String} type
- * @return {String}
- */
 function getMimeFromType(type) {
 
 	if (typeof type !== 'string') {
 		throw new Error('`type` argument must be a string');
 	}
 
-	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
 }
 
-/**
- * Get the type of media based on URL structure
- *
- * @param {String} url
- * @return {String}
- */
 function getTypeFromFile(url) {
 
 	if (typeof url !== 'string') {
@@ -8749,17 +7035,15 @@ function getTypeFromFile(url) {
 		}
 	}
 
-	// the do standard extension check
 	var ext = getExtension(url),
 	    normalizedExt = normalizeExtension(ext);
 
 	var mime = 'video/mp4';
 
-	// Obtain correct MIME types
 	if (normalizedExt) {
-		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
 			mime = 'video/' + normalizedExt;
-		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
 			mime = 'audio/' + normalizedExt;
 		}
 	}
@@ -8767,12 +7051,6 @@ function getTypeFromFile(url) {
 	return mime;
 }
 
-/**
- * Get media file extension from URL
- *
- * @param {String} url
- * @return {String}
- */
 function getExtension(url) {
 
 	if (typeof url !== 'string') {
@@ -8781,16 +7059,9 @@ function getExtension(url) {
 
 	var baseUrl = url.split('?')[0],
 	    baseName = baseUrl.split('\\').pop().split('/').pop();
-
-	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
 }
 
-/**
- * Get standard extension of a media file
- *
- * @param {String} extension
- * @return {String}
- */
 function normalizeExtension(extension) {
 
 	if (typeof extension !== 'string') {
@@ -8832,15 +7103,6 @@ var _document2 = _interopRequireDefault(_document);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Polyfill
- *
- * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
- * of polyfills provided by Babel.
- */
-
-// ChildNode.remove polyfill
-// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
 (function (arr) {
 	arr.forEach(function (item) {
 		if (item.hasOwnProperty('remove')) {
@@ -8857,11 +7119,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	});
 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-// CustomEvent polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
 (function () {
 
-	if (typeof window.CustomEvent === "function") return false;
+	if (typeof window.CustomEvent === 'function') {
+		return false;
+	}
 
 	function CustomEvent(event, params) {
 		params = params || { bubbles: false, cancelable: false, detail: undefined };
@@ -8871,18 +7133,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	}
 
 	CustomEvent.prototype = window.Event.prototype;
-
 	window.CustomEvent = CustomEvent;
 })();
 
-// Object.assign polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
 if (typeof Object.assign !== 'function') {
 	Object.assign = function (target) {
-		// .length of function is 2
 
 		if (target === null || target === undefined) {
-			// TypeError if undefined or null
 			throw new TypeError('Cannot convert undefined or null to object');
 		}
 
@@ -8892,9 +7149,7 @@ if (typeof Object.assign !== 'function') {
 			var nextSource = arguments[index];
 
 			if (nextSource !== null) {
-				// Skip over if undefined or null
 				for (var nextKey in nextSource) {
-					// Avoid bugs when hasOwnProperty is shadowed
 					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
 						to[nextKey] = nextSource[nextKey];
 					}
@@ -8905,76 +7160,6 @@ if (typeof Object.assign !== 'function') {
 	};
 }
 
-// Array.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
-if (!Array.prototype.includes) {
-	Object.defineProperty(Array.prototype, 'includes', {
-		value: function value(searchElement, fromIndex) {
-
-			// 1. const O be ? ToObject(this value).
-			if (this === null || this === undefined) {
-				throw new TypeError('"this" is null or not defined');
-			}
-
-			var o = Object(this);
-
-			// 2. const len be ? ToLength(? Get(O, "length")).
-			var len = o.length >>> 0;
-
-			// 3. If len is 0, return false.
-			if (len === 0) {
-				return false;
-			}
-
-			// 4. const n be ? ToInteger(fromIndex).
-			//    (If fromIndex is undefined, this step produces the value 0.)
-			var n = fromIndex | 0;
-
-			// 5. If n ≥ 0, then
-			//  a. const k be n.
-			// 6. Else n < 0,
-			//  a. const k be len + n.
-			//  b. If k < 0, const k be 0.
-			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-			// 7. Repeat, while k < len
-			while (k < len) {
-				// a. const elementK be the result of ? Get(O, ! ToString(k)).
-				// b. If SameValueZero(searchElement, elementK) is true, return true.
-				// c. Increase k by 1.
-				// NOTE: === provides the correct "SameValueZero" comparison needed here.
-				if (o[k] === searchElement) {
-					return true;
-				}
-				k++;
-			}
-
-			// 8. Return false
-			return false;
-		}
-	});
-}
-
-// String.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
-if (!String.prototype.includes) {
-	String.prototype.includes = function (search, start) {
-		'use strict';
-
-		if (typeof start !== 'number') {
-			start = 0;
-		}
-
-		if (start + search.length > this.length) {
-			return false;
-		} else {
-			return this.indexOf(search, start) !== -1;
-		}
-	};
-}
-
-// String.startsWith polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
 if (!String.prototype.startsWith) {
 	String.prototype.startsWith = function (searchString, position) {
 		position = position || 0;
@@ -8982,8 +7167,6 @@ if (!String.prototype.startsWith) {
 	};
 }
 
-// Element.matches polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
 if (!Element.prototype.matches) {
 	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -8993,8 +7176,6 @@ if (!Element.prototype.matches) {
 	};
 }
 
-// Element.closest polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
 if (window.Element && !Element.prototype.closest) {
 	Element.prototype.closest = function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -9008,13 +7189,6 @@ if (window.Element && !Element.prototype.closest) {
 	};
 }
 
-// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
-// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
-
-// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
-
-// MIT license
-
 (function () {
 	var lastTime = 0;
 	var vendors = ['ms', 'moz', 'webkit', 'o'];
@@ -9038,12 +7212,10 @@ if (window.Element && !Element.prototype.closest) {
 	};
 })();
 
-// Javascript workaround for FF iframe `getComputedStyle` bug
-// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009
 if (/firefox/i.test(navigator.userAgent)) {
-	window.oldGetComputedStyle = window.getComputedStyle;
+	window.mediaElementJsOldGetComputedStyle = window.getComputedStyle;
 	window.getComputedStyle = function (el, pseudoEl) {
-		var t = window.oldGetComputedStyle(el, pseudoEl);
+		var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl);
 		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
 	};
 }
@@ -9066,27 +7238,11 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976)
- *
- * @param {Number} fps - Frames per second
- * @return {Boolean}
- */
 function isDropFrame() {
 	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
 
 	return !(fps % 1 === 0);
 }
-/**
- * Format a numeric time in format '00:00:00'
- *
- * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero
- * @param {Boolean} forceHours
- * @param {Boolean} showFrameCount
- * @param {Number} fps - Frames per second
- * @param {Number} secondsDecimalLength - Number of decimals to display if any
- * @return {String}
- */
 function secondsToTimeCode(time) {
 	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
 	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
@@ -9097,8 +7253,7 @@ function secondsToTimeCode(time) {
 	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
 
 	var dropFrames = Math.round(fps * 0.066666),
-	    // Number of drop frames to drop on the minute marks (6%)
-	timeBase = Math.round(fps),
+	    timeBase = Math.round(fps),
 	    framesPer24Hours = Math.round(fps * 3600) * 24,
 	    framesPer10Minutes = Math.round(fps * 600),
 	    frameSep = isDropFrame(fps) ? ';' : ':',
@@ -9159,13 +7314,6 @@ function secondsToTimeCode(time) {
 	return result;
 }
 
-/**
- * Convert a '00:00:00' time string into seconds
- *
- * @param {String} time
- * @param {Number} fps - Frames per second
- * @return {Number}
- */
 function timeCodeToSeconds(time) {
 	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
 
@@ -9178,7 +7326,7 @@ function timeCodeToSeconds(time) {
 		time = time.replace(';', ':');
 	}
 
-	if (!time.match(/\d{2}(\:\d{2}){0,3}/)) {
+	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
 		throw new TypeError('Time code must have the format `00:00:00`');
 	}
 
@@ -9191,8 +7339,7 @@ function timeCodeToSeconds(time) {
 	    frames = 0,
 	    totalMinutes = 0,
 	    dropFrames = Math.round(fps * 0.066666),
-	    // Number of drop frames to drop on the minute marks (6%)
-	timeBase = Math.round(fps),
+	    timeBase = Math.round(fps),
 	    hFrames = timeBase * 3600,
 	    mFrames = timeBase * 60;
 
@@ -9228,15 +7375,6 @@ function timeCodeToSeconds(time) {
 	return parseFloat(output.toFixed(3));
 }
 
-/**
- * Calculate the time format to use
- *
- * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media
- * duration. Format: 'hh:mm:ss:ff'
- * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero
- * @param {Object} options
- * @param {Number} fps - Frames per second
- */
 function calculateTimeFormat(time, options) {
 	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
 
@@ -9257,7 +7395,7 @@ function calculateTimeFormat(time, options) {
 	    required = false;
 
 	for (var i = 0, len = lis.length; i < len; i++) {
-		if (format.indexOf(lis[i][1]) > -1) {
+		if (~format.indexOf(lis[i][1])) {
 			required = true;
 		} else if (required) {
 			var hasNextValue = false;
@@ -9286,12 +7424,6 @@ function calculateTimeFormat(time, options) {
 	options.currentTimeFormat = format;
 }
 
-/**
- * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds
- *
- * @param {String} SMPTE
- * @return {Number}
- */
 function convertSMPTEtoSeconds(SMPTE) {
 
 	if (typeof SMPTE !== 'string') {
@@ -9300,7 +7432,7 @@ function convertSMPTEtoSeconds(SMPTE) {
 
 	SMPTE = SMPTE.replace(',', '.');
 
-	var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0;
+	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
 
 	var secs = 0,
 	    multiplier = 1;
diff --git a/lib/mejs/mediaelement-and-player.min.js b/lib/mejs/mediaelement-and-player.min.js
index f976b7414e625034da18a2bc767419006b442f70..3adfcf1ca84bee1b152868056c17c08e7cb9a66c 100644
--- a/lib/mejs/mediaelement-and-player.min.js
+++ b/lib/mejs/mediaelement-and-player.min.js
@@ -8,29 +8,5 @@
  * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- *//*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(25),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,25:25,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(25),m=a(26),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,25:25,26:26,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(23),o=d(n),p=a(25),q=a(24);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,a.detectFullscreenMode();var b=this,c=p.isString(b.options.fullscreenText)?b.options.fullscreenText:k["default"].t("mejs.fullscreen"),d=i["default"].createElement("div");if(d.className=b.options.classPrefix+"button "+b.options.classPrefix+"fullscreen-button",d.innerHTML='<button type="button" aria-controls="'+b.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>',b.addControlElement(d,"fullscreen"),d.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=d,b.globalBind("keydown",function(c){var d=c.which||c.keyCode||0;27===d&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||b.isFullScreen)&&a.exitFullScreen()}),b.normalHeight=0,b.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var e=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,e)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN)return void("function"==typeof a.media.webkitEnterFullscreen?a.media.webkitEnterFullscreen():a.media.originalNode.webkitEnterFullscreen());if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen")),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(25),l=a(24);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){null===d.rendererName.match(/flash/)&&e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(28),m=a(24);Object.assign(g.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-hovered no-hover"></span>')+('<span class="'+i.options.classPrefix+'time-handle"><span class="'+i.options.classPrefix+'time-handle-content"></span></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.hovered=b.querySelector("."+i.options.classPrefix+"time-hovered"),i.newTime=0,i.forcedHandlePause=!1,i.setTransformStyle=function(a,b){a.style.transform=b,a.style.webkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b};var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=function(){return void 0!==c.webkitTransform?"webkitTransform":void 0!==c.mozTransform?"mozTransform ":void 0!==c.oTransform?"oTransform":void 0!==c.msTransform?"msTransform":"transform"}(),j=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),n=0,o=0,p=void 0;if(p=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(p<e.left?p=e.left:p>f+e.left&&(p=f+e.left),o=p-e.left,n=o/f,i.newTime=.02>=n?0:n*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),!k.IS_IOS&&!k.IS_ANDROID&&i.timefloat)){if(0>o&&(o=0),i.options.useSmoothHover&&null!==j&&"undefined"!=typeof window[j]){var q=new window[j](getComputedStyle(i.handle)[h]),r=q.m41,s=o/parseFloat(getComputedStyle(i.total).width)-r/parseFloat(getComputedStyle(i.total).width);i.hovered.style.left=r+"px",i.setTransformStyle(i.hovered,"scaleX("+s+")"),i.hovered.setAttribute("pos",o),s>=0?m.removeClass(i.hovered,"negative"):m.addClass(i.hovered,"negative")}i.timefloat.style.left=o+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"}},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){
-a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){if(i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)){d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a);for(var b=["mouseup","touchend"],c=0,e=b.length;e>c;c++)i.container.addEventListener(b[c],function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)});i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.container.addEventListener("mousemove",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"),i.hovered&&!k.IS_IOS&&!k.IS_ANDROID&&i.options.useSmoothHover&&m.removeClass(i.hovered,"no-hover"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none"),i.hovered&&i.options.useSmoothHover&&m.addClass(i.hovered,"no-hover")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&c.setTransformStyle(c.loaded,"scaleX("+b+")"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=parseFloat(getComputedStyle(a.total).width),e=Math.round(d*c/a.media.duration),f=e-Math.round(a.handle.offsetWidth/2);if(f=0>f?0:f,a.setTransformStyle(a.current,"scaleX("+e/d+")"),a.setTransformStyle(a.handle,"translateX("+f+"px)"),a.options.useSmoothHover&&!m.hasClass(a.hovered,"no-hover")){var g=parseInt(a.hovered.getAttribute("pos"));g=isNaN(g)?0:g;var h=g/d-f/d;a.hovered.style.left=f+"px",a.setTransformStyle(a.hovered,"scaleX("+h+")"),h>=0?m.removeClass(a.hovered,"negative"):m.addClass(a.hovered,"negative")}}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(28),j=a(24);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,24:24,28:28}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(28),n=a(25),o=a(24);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(a.tracks.length||a.trackFiles&&0!==!a.trackFiles.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=null===a.trackFiles?a.tracks.length:a.trackFiles.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-input").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=null===a.trackFiles?a.node.querySelectorAll("track"):a.trackFiles,c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;if(void 0===e||void 0===e.fadeIn){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}else if(!o.visible(e)){var h=o.siblings(self,function(a){return h(a)});o.fadeIn(c.slidesContainer.querySelector(e));for(var i=0,j=h.length;j>i;i++)o.fadeOut(h[i])}}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(25),m=a(24);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(a,b,c){"use strict";/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
  */
-Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(23),t=a(25),u=a(28),v=a(26),w=a(24),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;if(void 0===c){var g=d.node.getAttribute("data-mejsoptions");c=g?JSON.parse(g):{}}d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var h=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),i=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==i&&"video"!==i,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==i&&d.options.isVideo,d.mediaFiles=null,d.trackFiles=null,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var j=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),k=l["default"].createElement("span");if(k.className=d.options.classPrefix+"offscreen",k.innerText=j,d.media.parentNode.insertBefore(k,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",j),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var m=l["default"].createElement("div");m.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(m,d.container),m.appendChild(d.container)}if(s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),s.IS_SAFARI&&!s.IS_IOS){x.addClass(d.container,d.options.classPrefix+"hide-cues");for(var o=d.node.cloneNode(),q=d.node.childNodes,w=[],z=[],A=0,B=q.length;B>A;A++){var C=q[A];C&&C.nodeType!==Node.TEXT_NODE&&!function(){switch(C.tagName.toLowerCase()){case"source":var a={};Array.prototype.slice.call(C.attributes).forEach(function(b){a[b.name]=b.value}),a.type=v.formatType(a.src,a.type),w.push(a);break;case"track":C.mode="hidden",z.push(C);break;default:o.appendChild(C)}}()}d.node.remove(),d.node=d.media=o,w.length&&(d.mediaFiles=w),z.length&&(d.trackFiles=z)}d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var D=d.isVideo?"video":"audio",E=D.substring(0,1).toUpperCase()+D.substring(1);d.options[D+"Width"]>0||d.options[D+"Width"].toString().indexOf("%")>-1?d.width=d.options[D+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+E+"Width"],d.options[D+"Height"]>0||d.options[D+"Height"].toString().indexOf("%")>-1?d.height=d.options[D+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+E+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),h.pluginWidth=d.width,h.pluginHeight=d.height}if(new p["default"](d.media,h,d.mediaFiles),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var F=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(F)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),void(c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)));c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var g=0,h=c.options.features.length;h>g;g++){var i=c.options.features[g];if(c["build"+i])try{c["build"+i](c,c.controls,c.layers,c.media)}catch(k){console.error("error building "+i,k)}}var m=t.createEvent("controlsready",c.container);c.container.dispatchEvent(m),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-loading");a&&a.parentNode&&(a.parentNode.style.display="none")},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var o=null;c.media.addEventListener("timeupdate",function(){o!==c.media.duration&&(o=c.media.duration,u.calculateTimeFormat(o,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(m.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;switch("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node&&a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node&&a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){try{if(j["default"].self!==j["default"].top){if(null!==j["default"].frameElement)return j["default"].frameElement;b=j["default"].frameElement.parentNode}else b=c.parentElement}catch(d){b=c.parentElement}if(b&&x.visible(b))return b;c=b}return null}(),c=b?getComputedStyle(b,null):getComputedStyle(l["default"].body,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=void 0;try{b=j["default"].self!==j["default"].top?j["default"].frameElement.parentNode:a.outerContainer}catch(c){b=a.outerContainer}var d=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height="auto"),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth="none"),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight="none"),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height="auto"),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth="none"),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="none")),parseFloat(d.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(d.height)||(b.style.height=a.media.offsetHeight+"px"),d=getComputedStyle(b);var e=parseFloat(d.width),f=parseFloat(d.height);a.setDimensions("100%","100%");var g=a.container.querySelector(a.options.classPrefix+"poster img");g&&(g.style.display="");for(var h=a.container.querySelectorAll("object, embed, iframe, video"),i=a.height,k=a.width,l=e,m=i*e/k,n=k*f/i,o=f,p=n>e==!1,q=p?Math.floor(l):Math.floor(n),r=p?Math.floor(m):Math.floor(o),s=p?e+"px":q+"px",t=p?r+"px":f+"px",u=0,v=h.length;v>u;u++)h[u].style.height=t,h[u].style.width=s,a.media.setSize&&a.media.setSize(s,t),h[u].style.marginLeft=Math.floor((e-q)/2)+"px",h[u].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display=d.paused&&!s.IS_STOCK_ANDROID?"":"none",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),a.message&&(g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message)}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play();
-}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();var c=a.media.getSrc();a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic?a.container.parentNode.insertBefore(a.node,a.container):!function(){if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,""!==a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var d=l["default"].getElementById(a.media.id+"-iframe-overlay");d.remove()}var e=a.node.cloneNode();if(e.style.display="",a.container.parentNode.insertBefore(e,a.container),a.node.remove(),a.mediaFiles)for(var f=0,g=a.mediaFiles.length;g>f;f++){var h=l["default"].createElement("source");h.setAttribute("src",a.mediaFiles[f].src),h.setAttribute("type",a.mediaFiles[f].type),e.appendChild(h)}if(a.trackFiles)for(var i=function(b,c){var d=a.trackFiles[b],f=l["default"].createElement("track");f.kind=d.kind,f.label=d.label,f.srclang=d.srclang,f.src=d.src,e.appendChild(f),f.addEventListener("load",function(){this.mode="showing",e.textTracks[b].mode="showing"})},j=0,k=a.trackFiles.length;k>j;j++)i(j,k);delete a.node,delete a.mediaFiles,delete a.trackFiles}(),"function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var j=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");j.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(26),n=a(23),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof dashjs)o.createInstance(a);else if(!o.isScriptLoaded){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;i=d.cloneNode(!0),b=Object.assign(b,a.options);for(var n=j["default"].html5media.properties,p=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);i["get"+b]=function(){return null!==m?i[a]:null},i["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&("src"===a&&(m.attachSource(b),h&&i.play()),i[a]=b)}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=m=c,m.getDebug().setLogToBrowserConsole(b.dash.debug),m.setAutoPlay(g&&"auto"===g||h),m.setScheduleWhilePaused(g&&"auto"===g||h);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&m.initialize(i,i.src,!1),i.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},k=0,n=d.length;n>k;k++)f(d[k]);var o=function(b){var c=l.createEvent(b.type,i);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var p in e)e.hasOwnProperty(p)&&m.on(e[p],o)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){i.setAttribute("src",c[s].src);break}i.setAttribute("id",e),d.parentNode.insertBefore(i,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),i.setSize=function(a,b){return i.style.width=a+"px",i.style.height=b+"px",i},i.hide=function(){return i.pause(),i.style.display="none",i},i.show=function(){return i.style.display="",i};var u=l.createEvent("rendererready",i);return a.dispatchEvent(u),i}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(25),p=a(23),q=a(26),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof flvjs)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,h=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var i=j["default"].html5media.properties,m=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==h?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==h&&(g[a]=b,"src"===a&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()))}},n=0,p=i.length;p>n;n++)m(i[n]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=h=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()),g.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var q=0,r=c.length;r>q;q++)if(k.renderer.renderers[b.prefix].canPlayType(c[q].type)){g.setAttribute("src",c[q].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==h&&h.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==h&&h.destroy()};var s=l.createEvent("rendererready",g);return a.dispatchEvent(s),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof Hls)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;m=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||h;for(var n=j["default"].html5media.properties,p=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+c]=function(){return null!==i?m[a]:null},m["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(m[a]=c,"src"===a&&(i.destroy(),i=o.createInstance({options:b.hls,id:e}),i.loadSource(c),i.attachMedia(m)))}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){var c=a.originalNode.src;i.detachMedia(),i.loadSource(c),i.attachMedia(m)}m.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var h=void 0,k=void 0,n=function(b,c){var d=l.createEvent(b,m);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!h||e-h>3e3?(h=(new Date).getTime(),i.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),i.swapAudioCodec(),i.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:i.destroy()}};for(var o in d)d.hasOwnProperty(o)&&i.on(d[o],n)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){m.setAttribute("src",c[s].src);break}"auto"===g||h||(m.addEventListener("play",function(){null!==i&&i.startLoad()}),m.addEventListener("pause",function(){null!==i&&i.stopLoad()})),m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==i&&i.destroy()},m.stop=function(){null!==i&&i.stopLoad()};var u=l.createEvent("rendererready",m);return a.dispatchEvent(u),m}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(25),n=a(26),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},e=[],f=4,h=null,j=!0,l=!1,n=null,p=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var q=k["default"].html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==h){var a=null;switch(b){case"currentTime":return h.getCurrentTime();case"duration":return h.getDuration();case"volume":return p=h.getVolume()/100;case"paused":return j;case"ended":return l;case"muted":return h.isMuted();case"buffered":var c=h.getVideoLoadedFraction(),d=h.getDuration();return{start:function(){return 0},end:function(){return c*d},length:1};case"src":return h.getVideoUrl();case"readyState":return f}return a}return null},d["set"+c]=function(c){if(null!==h)switch(b){case"src":var f="string"==typeof c?c:c[0].src,g=o.getYouTubeId(f);a.originalNode.autoplay?h.loadVideoById(g):h.cueVideoById(g);break;case"currentTime":h.seekTo(c);break;case"muted":c?h.mute():h.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":p=c,h.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var i=m.createEvent("canplay",d);a.dispatchEvent(i)}else e.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=k["default"].html5media.methods,v=function(a){d[a]=function(){if(null!==h)switch(a){case"play":return j=!1,h.playVideo();case"pause":return j=!0,h.pauseVideo();case"load":return null}else e.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);var y=i["default"].createElement("div");y.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(y,a.originalNode),a.originalNode.style.display="none";var z="audio"===a.originalNode.tagName.toLowerCase(),A=z?"0":a.originalNode.height,B=z?"0":a.originalNode.width,C=o.getYouTubeId(c[0].src),D={id:d.id,containerId:y.id,videoId:C,height:A,width:B,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=h=b.target,a.youTubeState={paused:!0,ended:!1},e.length)for(var c=0,f=e.length;f>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);d["set"+j](g.value)}else"call"===g.type&&d[g.methodName]()}n=h.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},o=0,p=k.length;p>o;o++)n.addEventListener(k[o],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],j=!0,l=!1;break;case 0:c=["ended"],j=!1,l=!0,d.stopInterval();break;case 1:c=["play","playing"],j=!1,l=!1,d.startInterval();break;case 2:c=["pause"],j=!0,l=!1,d.stopInterval();break;case 3:c=["progress"],l=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],j=!0,l=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return z&&(D.playerVars.playsinline=1),o.enqueueIframe(D),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==h&&h.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),n&&(n.style.display="none")},d.show=function(){n&&(n.style.display="")},d.destroy=function(){h.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{2:2,25:25,26:26,3:3,6:6,7:7}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,
-j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(1-g/b,2);a.style.opacity=0>h?0:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(g/b,2);a.style.opacity=h>1?1:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],25:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],26:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(25),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{25:25,6:6}],27:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}],28:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]);
\ No newline at end of file
+!function e(t,n,i){function o(r,s){if(!n[r]){if(!t[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(a)return a(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[r]={exports:{}};t[r][0].call(u.exports,function(e){var n=t[r][1][e];return o(n||e)},u,u.exports,e,t,n,i)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var i=void 0!==n?n:"undefined"!=typeof window?window:{},o=e(1);if("undefined"!=typeof document)t.exports=document;else{var a=i["__GLOBAL_DOCUMENT_CACHE@4"];a||(a=i["__GLOBAL_DOCUMENT_CACHE@4"]=o),t.exports=a}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),a=e(14),r=e(25),s={lang:"en",en:a.EN};s.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");s.lang=t[0],void 0===s[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])?t[1]:{},s[t[0]]=(0,r.isObjectEmpty)(t[1])?a.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])&&(s[t[0]]=t[1])}return s.lang},s.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,a=s.language(),l=function(e,t,n){return"object"!==(void 0===e?"undefined":i(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==s[a]&&(n=s[a][e],null!==t&&"number"==typeof t&&(o=s[a]["mejs.plural-form"],n=l.apply(null,[n,t,o]))),!n&&s.en&&(n=s.en[e],null!==t&&"number"==typeof t&&(o=s.en["mejs.plural-form"],n=l.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,r.escapeHTML)(n)}return e},o.default.i18n=s,"undefined"!=typeof mejsL10n&&o.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=s},{14:14,25:25,6:6}],5:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(25),d=e(26),u=e(7),c=e(23),f=function e(t,n,i){var f=this;o(this,e);var p=this;i=Array.isArray(i)?i:null,p.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(p.defaults,n),p.mediaElement=r.default.createElement(n.fakeNodeName),p.mediaElement.options=n;var m=t,h=!1;if("string"==typeof t?p.mediaElement.originalNode=r.default.getElementById(t):(p.mediaElement.originalNode=t,m=t.id),m=m||"mejs_"+Math.random().toString().slice(2),void 0!==p.mediaElement.originalNode&&null!==p.mediaElement.originalNode&&p.mediaElement.appendChild){p.mediaElement.originalNode.setAttribute("id",m+"_from_mejs");var v=p.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!p.mediaElement.originalNode.getAttribute("preload")&&p.mediaElement.originalNode.setAttribute("preload","none"),p.mediaElement.originalNode.parentNode.insertBefore(p.mediaElement,p.mediaElement.originalNode),p.mediaElement.appendChild(p.mediaElement.originalNode)}p.mediaElement.id=m,p.mediaElement.renderers={},p.mediaElement.renderer=null,p.mediaElement.rendererName=null,p.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var i=n.mediaElement.renderers[e],o=null;if(void 0!==i&&null!==i)return i.show(),i.setSrc(t[0].src),n.mediaElement.renderer=i,n.mediaElement.rendererName=e,!0;for(var a=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,r=0,s=a.length;r<s;r++){var l=a[r];if(l===e){o=u.renderer.renderers[l];var d=Object.assign(o.options,n.mediaElement.options);return i=o.create(n.mediaElement,d,t),i.name=e,n.mediaElement.renderers[o.name]=i,n.mediaElement.renderer=i,n.mediaElement.rendererName=e,i.show(),!0}}return!1},p.mediaElement.setSize=function(e,t){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer.setSize(e,t)},p.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=r.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=p.mediaElement.options.customError;if(!n){var i=p.mediaElement.originalNode.getAttribute("poster");i&&(n+='<img src="'+i+'" width="100%" height="100%" alt="'+s.default.i18n.t("mejs.download-file")+'">');for(var o=0,a=e.length;o<a;o++){var l=e[o];n+='<a href="'+l.src+'" data-type="'+l.type+'"><span>'+s.default.i18n.t("mejs.download-file")+": "+l.src+"</span></a>"}}t.innerHTML=n,p.mediaElement.originalNode.parentNode.insertBefore(t,p.mediaElement.originalNode),p.mediaElement.originalNode.style.display="none",h=!0};var y=s.default.html5media.properties,g=s.default.html5media.methods,b=function(e,t,n,i){var o=e[t],a=function(){return n.apply(e,[o])},r=function(t){return o=i.apply(e,[t])};Object.defineProperty(e,t,{get:a,set:r})},E=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer.getSrc():null},S=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,i=e.length;n<i;n++){var o=(0,d.absolutizeUrl)(e[n].src),a=e[n].type;t.push({src:o,type:""!==a&&null!==a&&void 0!==a||!o?a:(0,d.getTypeFromFile)(o)})}var r=u.renderer.select(t,p.mediaElement.options.renderers.length?p.mediaElement.options.renderers:[]),s=void 0;if(p.mediaElement.paused||(p.mediaElement.pause(),s=(0,l.createEvent)("pause",p.mediaElement),p.mediaElement.dispatchEvent(s)),p.mediaElement.originalNode.setAttribute("src",t[0].src||""),p.mediaElement.querySelector(".me_cannotplay")&&p.mediaElement.querySelector(".me_cannotplay").remove(),null===r)return p.mediaElement.createErrorMessage(t),s=(0,l.createEvent)("error",p.mediaElement),s.message="No renderer found",void p.mediaElement.dispatchEvent(s);p.mediaElement.changeRenderer(r.rendererName,t),void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer||((s=(0,l.createEvent)("error",p.mediaElement)).message="Error creating renderer",p.mediaElement.dispatchEvent(s),p.mediaElement.createErrorMessage(t))};b(p.mediaElement,"src",E,S),p.mediaElement.getSrc=E,p.mediaElement.setSrc=S;for(var x=0,w=y.length;x<w;x++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer["get"+t]():null},i=function(e){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer["set"+t](e)};b(p.mediaElement,e,n,i),p.mediaElement["get"+t]=n,p.mediaElement["set"+t]=i}}(y[x]);for(var P=0,T=g.length;P<T;P++)!function(e){p.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];if(void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&"function"==typeof p.mediaElement.renderer[e])try{p.mediaElement.renderer[e](n)}catch(e){p.mediaElement.createErrorMessage()}return null}}(g[P]);p.mediaElement.events={},p.mediaElement.addEventListener=function(e,t){p.mediaElement.events[e]=p.mediaElement.events[e]||[],p.mediaElement.events[e].push(t)},p.mediaElement.removeEventListener=function(e,t){if(!e)return p.mediaElement.events={},!0;var n=p.mediaElement.events[e];if(!n)return!0;if(!t)return p.mediaElement.events[e]=[],!0;for(var i=0;i<n.length;i++)if(n[i]===t)return p.mediaElement.events[e].splice(i,1),!0;return!1},p.mediaElement.dispatchEvent=function(e){var t=p.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var C=function(e,t){if(s.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===a.default.location.protocol&&c.IS_IOS&&!a.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(a.default.URL||a.default.webkitURL).createObjectURL(this.response);return p.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},k=void 0;if(null!==i)k=i;else if(null!==p.mediaElement.originalNode)switch(k=[],p.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":k.push({type:"",src:p.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var _=p.mediaElement.originalNode.childNodes.length,N=p.mediaElement.originalNode.getAttribute("src");if(N){var A=p.mediaElement.originalNode,L=(0,d.formatType)(N,A.getAttribute("type"));k.push({type:L,src:C(N,L)})}for(var F=0;F<_;F++){var j=p.mediaElement.originalNode.childNodes[F];if(j.nodeType===Node.ELEMENT_NODE&&"source"===j.tagName.toLowerCase()){var I=j.getAttribute("src"),M=(0,d.formatType)(I,j.getAttribute("type"));k.push({type:M,src:C(I,M)})}}}return k.length&&(p.mediaElement.src=k),p.mediaElement.options.success&&p.mediaElement.options.success(p.mediaElement,p.mediaElement.originalNode),h&&p.mediaElement.options.error&&p.mediaElement.options.error(p.mediaElement,p.mediaElement.originalNode),p.mediaElement};a.default.MediaElement=f,n.default=f},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),o={};o.version="4.1.1",o.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},i.default.mejs=o,n.default=o},{3:3}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),s=function(){function e(){i(this,e),this.renderers={},this.order=[]}return a(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var i=[/^(html5|native)/i,/^flash/i,/iframe$/i],o=function(e){for(var t=0,n=i.length;t<n;t++)if(i[t].test(e))return t;return i.length};t.sort(function(e,t){return o(e)-o(t)})}for(var a=0,r=t.length;a<r;a++){var s=t[a],l=this.renderers[s];if(null!==l&&void 0!==l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":o(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),l=n.renderer=new s;r.default.Renderers=l},{6:6}],8:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(4)),s=e(16),l=i(s),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(23)),u=e(25),c=e(24);Object.assign(s.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(l.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(e){if(e.isVideo){e.isInIframe=o.default.location!==o.default.parent.location,e.detectFullscreenMode();var t=this,n=(0,u.isString)(t.options.fullscreenText)?t.options.fullscreenText:r.default.t("mejs.fullscreen"),i=a.default.createElement("div");if(i.className=t.options.classPrefix+"button "+t.options.classPrefix+"fullscreen-button",i.innerHTML='<button type="button" aria-controls="'+t.id+'" title="'+n+'" aria-label="'+n+'" tabindex="0"></button>',t.addControlElement(i,"fullscreen"),i.addEventListener("click",function(){d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||e.isFullScreen?e.exitFullScreen():e.enterFullScreen()}),e.fullscreenBtn=i,t.globalBind("keydown",function(n){27===(n.which||n.keyCode||0)&&(d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||t.isFullScreen)&&e.exitFullScreen()}),t.normalHeight=0,t.normalWidth=0,d.HAS_TRUE_NATIVE_FULLSCREEN){var s=function(){e.isFullScreen&&(d.isFullScreen()?(e.isNativeFullScreen=!0,e.setControlsSize()):(e.isNativeFullScreen=!1,e.exitFullScreen()))};e.globalBind(d.FULLSCREEN_EVENT_NAME,s)}}},detectFullscreenMode:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName),n="";return n=d.HAS_TRUE_NATIVE_FULLSCREEN&&t?"native-native":d.HAS_TRUE_NATIVE_FULLSCREEN&&!t?"plugin-native":e.usePluginFullScreen&&d.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",e.fullscreenMode=n,n},cleanfullscreen:function(e){e.exitFullScreen()},enterFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(html5|native)/i.test(e.media.rendererName),n=getComputedStyle(e.container);if(d.IS_IOS&&d.HAS_IOS_FULLSCREEN)"function"==typeof e.media.webkitEnterFullscreen?e.media.webkitEnterFullscreen():e.media.originalNode.webkitEnterFullscreen();else{if((0,c.addClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.normalHeight=parseFloat(n.height),e.normalWidth=parseFloat(n.width),"native-native"!==e.fullscreenMode&&"plugin-native"!==e.fullscreenMode||(d.requestFullScreen(e.container),e.isInIframe&&setTimeout(function t(){if(e.isNativeFullScreen){var n=o.default.innerWidth||a.default.documentElement.clientWidth||a.default.body.clientWidth,i=screen.width;Math.abs(i-n)>.002*i?e.exitFullScreen():setTimeout(t,500)}},1e3)),e.container.style.width="100%",e.container.style.height="100%",e.containerSizeTimeout=setTimeout(function(){e.container.style.width="100%",e.container.style.height="100%",e.setControlsSize()},500),t)e.node.style.width="100%",e.node.style.height="100%";else for(var i=e.container.querySelectorAll("iframe, embed, object, video"),r=i.length,s=0;s<r;s++)i[s].style.width="100%",i[s].style.height="100%";e.options.setDimensions&&"function"==typeof e.media.setSize&&e.media.setSize(screen.width,screen.height);for(var l=e.layers.childNodes,f=l.length,p=0;p<f;p++)l[p].style.width="100%",l[p].style.height="100%";e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen")),e.setControlsSize(),e.isFullScreen=!0;var m=Math.min(screen.width/e.width,screen.height/e.height),h=e.container.querySelector("."+e.options.classPrefix+"captions-text");h&&(h.style.fontSize=100*m+"%",h.style.lineHeight="normal",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="45px");var v=(0,u.createEvent)("enteredfullscreen",e.container);e.container.dispatchEvent(v)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(clearTimeout(e.containerSizeTimeout),d.HAS_TRUE_NATIVE_FULLSCREEN&&(d.IS_FULLSCREEN||e.isFullScreen)&&d.cancelFullScreen(),(0,c.removeClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.removeClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.container.style.width=e.normalWidth+"px",e.container.style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.container.querySelectorAll("iframe, embed, object, video"),i=n.length,o=0;o<i;o++)n[o].style.width=e.normalWidth+"px",n[o].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.layers.childNodes,s=r.length,l=0;l<s;l++)r[l].style.width=e.normalWidth+"px",r[l].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var f=e.container.querySelector("."+e.options.classPrefix+"captions-text");f&&(f.style.fontSize="",f.style.lineHeight="",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var p=(0,u.createEvent)("exitedfullscreen",e.container);e.container.dispatchEvent(p)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(25),d=e(24);Object.assign(a.config,{playText:null,pauseText:null}),Object.assign(r.default.prototype,{buildplaypause:function(e,t,n,i){function a(e){"play"===e?((0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"pause"),m.setAttribute("title",f),m.setAttribute("aria-label",f)):((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"play"),m.setAttribute("title",c),m.setAttribute("aria-label",c))}var r=this,u=r.options,c=(0,l.isString)(u.playText)?u.playText:s.default.t("mejs.play"),f=(0,l.isString)(u.pauseText)?u.pauseText:s.default.t("mejs.pause"),p=o.default.createElement("div");p.className=r.options.classPrefix+"button "+r.options.classPrefix+"playpause-button "+r.options.classPrefix+"play",p.innerHTML='<button type="button" aria-controls="'+r.id+'" title="'+c+'" aria-label="'+f+'" tabindex="0"></button>',p.addEventListener("click",function(){i.paused?i.play():i.pause()});var m=p.querySelector("button");r.addControlElement(p,"playpause"),a("pse"),i.addEventListener("loadedmetadata",function(){-1===i.rendererName.indexOf("flash")&&a("pse")}),i.addEventListener("play",function(){a("play")}),i.addEventListener("playing",function(){a("play")}),i.addEventListener("pause",function(){a("pse")}),i.addEventListener("ended",function(){e.options.loop||((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.addClass)(p,r.options.classPrefix+"replay"),m.setAttribute("title",c),m.setAttribute("aria-label",c))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(28),u=e(24);Object.assign(a.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(r.default.prototype,{buildprogress:function(e,t,n,i){var a=0,r=!1,c=!1,f=this,p=e.options.autoRewind,m=e.options.enableProgressTooltip?'<span class="'+f.options.classPrefix+'time-float"><span class="'+f.options.classPrefix+'time-float-current">00:00</span><span class="'+f.options.classPrefix+'time-float-corner"></span></span>':"",h=o.default.createElement("div");h.className=f.options.classPrefix+"time-rail",h.innerHTML='<span class="'+f.options.classPrefix+"time-total "+f.options.classPrefix+'time-slider"><span class="'+f.options.classPrefix+'time-buffering"></span><span class="'+f.options.classPrefix+'time-loaded"></span><span class="'+f.options.classPrefix+'time-current"></span><span class="'+f.options.classPrefix+'time-hovered no-hover"></span><span class="'+f.options.classPrefix+'time-handle"><span class="'+f.options.classPrefix+'time-handle-content"></span></span>'+m+"</span>",f.addControlElement(h,"progress"),t.querySelector("."+f.options.classPrefix+"time-buffering").style.display="none",f.rail=t.querySelector("."+f.options.classPrefix+"time-rail"),f.total=t.querySelector("."+f.options.classPrefix+"time-total"),f.loaded=t.querySelector("."+f.options.classPrefix+"time-loaded"),f.current=t.querySelector("."+f.options.classPrefix+"time-current"),f.handle=t.querySelector("."+f.options.classPrefix+"time-handle"),f.timefloat=t.querySelector("."+f.options.classPrefix+"time-float"),f.timefloatcurrent=t.querySelector("."+f.options.classPrefix+"time-float-current"),f.slider=t.querySelector("."+f.options.classPrefix+"time-slider"),f.hovered=t.querySelector("."+f.options.classPrefix+"time-hovered"),f.newTime=0,f.forcedHandlePause=!1,f.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t};var v=function(t){var n=getComputedStyle(f.total),o=(0,u.offset)(f.total),a=parseFloat(n.width),s=function(){return void 0!==n.webkitTransform?"webkitTransform":void 0!==n.mozTransform?"mozTransform ":void 0!==n.oTransform?"oTransform":void 0!==n.msTransform?"msTransform":"transform"}(),c=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),p=0,m=0,h=void 0;if(h=t.originalEvent&&t.originalEvent.changedTouches?t.originalEvent.changedTouches[0].pageX:t.changedTouches?t.changedTouches[0].pageX:t.pageX,i.duration&&(h<o.left?h=o.left:h>a+o.left&&(h=a+o.left),m=h-o.left,p=m/a,f.newTime=p<=.02?0:p*i.duration,r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(f.setCurrentRailHandle(f.newTime),f.updateCurrent(f.newTime)),!l.IS_IOS&&!l.IS_ANDROID&&f.timefloat)){if(m<0&&(m=0),f.options.useSmoothHover&&null!==c&&void 0!==window[c]){var v=new window[c](getComputedStyle(f.handle)[s]).m41,y=m/parseFloat(getComputedStyle(f.total).width)-v/parseFloat(getComputedStyle(f.total).width);f.hovered.style.left=v+"px",f.setTransformStyle(f.hovered,"scaleX("+y+")"),f.hovered.setAttribute("pos",m),y>=0?(0,u.removeClass)(f.hovered,"negative"):(0,u.addClass)(f.hovered,"negative")}f.timefloat.style.left=m+"px",f.timefloatcurrent.innerHTML=(0,d.secondsToTimeCode)(f.newTime,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),f.timefloat.style.display="block"}},y=function(){var t=i.currentTime,n=s.default.t("mejs.time-slider"),o=(0,d.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),a=i.duration;f.slider.setAttribute("role","slider"),f.slider.tabIndex=0,i.paused?(f.slider.setAttribute("aria-label",n),f.slider.setAttribute("aria-valuemin",0),f.slider.setAttribute("aria-valuemax",a),f.slider.setAttribute("aria-valuenow",t),f.slider.setAttribute("aria-valuetext",o)):(f.slider.removeAttribute("aria-label"),f.slider.removeAttribute("aria-valuemin"),f.slider.removeAttribute("aria-valuemax"),f.slider.removeAttribute("aria-valuenow"),f.slider.removeAttribute("aria-valuetext"))},g=function(){new Date-a>=1e3&&i.play()},b=function(){r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(i.setCurrentTime(f.newTime),e.setCurrentRail(),f.updateCurrent(f.newTime)),f.forcedHandlePause&&f.media.play(),f.forcedHandlePause=!1};f.slider.addEventListener("focus",function(){e.options.autoRewind=!1}),f.slider.addEventListener("blur",function(){e.options.autoRewind=p}),f.slider.addEventListener("keydown",function(t){if(new Date-a>=1e3&&(c=i.paused),f.options.keyActions.length){var n=t.which||t.keyCode||0,o=i.duration,r=e.options.defaultSeekForwardInterval(i),s=e.options.defaultSeekBackwardInterval(i),d=i.currentTime;switch(n){case 37:case 40:i.duration!==1/0&&(d-=s);break;case 39:case 38:i.duration!==1/0&&(d+=r);break;case 36:d=0;break;case 35:d=o;break;case 32:return void(l.IS_FIREFOX||(i.paused?i.play():i.pause()));case 13:return void(i.paused?i.play():i.pause());default:return}d=d<0?0:d>=o?o:Math.floor(d),a=new Date,c||i.pause(),d<i.duration&&!c&&setTimeout(g,1100),i.setCurrentTime(d),t.preventDefault(),t.stopPropagation()}});var E=["mousedown","touchstart"];f.slider.addEventListener("dragstart",function(){return!1});for(var S=0,x=E.length;S<x;S++)f.slider.addEventListener(E[S],function(e){if(f.forcedHandlePause=!1,i.duration!==1/0&&(1===e.which||0===e.which)){i.paused||(f.media.pause(),f.forcedHandlePause=!0),r=!0,v(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)f.container.addEventListener(t[n],function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)});f.globalBind("mouseup.dur touchend.dur",function(){b(),r=!1,f.timefloat&&(f.timefloat.style.display="none"),f.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});f.slider.addEventListener("mouseenter",function(e){e.target===f.slider&&i.duration!==1/0&&(f.container.addEventListener("mousemove",function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)}),!f.timefloat||l.IS_IOS||l.IS_ANDROID||(f.timefloat.style.display="block"),f.hovered&&!l.IS_IOS&&!l.IS_ANDROID&&f.options.useSmoothHover&&(0,u.removeClass)(f.hovered,"no-hover"))}),f.slider.addEventListener("mouseleave",function(){i.duration!==1/0&&(r||(f.globalUnbind("mousemove.dur"),f.timefloat&&(f.timefloat.style.display="none"),f.hovered&&f.options.useSmoothHover&&(0,u.addClass)(f.hovered,"no-hover")))}),i.addEventListener("progress",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n);else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),f.slider.style.display="none"}}),i.addEventListener("timeupdate",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n),y();else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),t.querySelector("."+f.options.classPrefix+"time-rail").appendChild(r),f.slider.style.display="none"}}),f.container.addEventListener("controlsresize",function(t){i.duration!==1/0&&(e.setProgressRail(t),f.forcedHandlePause||e.setCurrentRail(t))})},setProgressRail:function(e){var t=this,n=void 0!==e?e.target:t.media,i=null;n&&n.buffered&&n.buffered.length>0&&n.buffered.end&&n.duration?i=n.buffered.end(n.buffered.length-1)/n.duration:n&&void 0!==n.bytesTotal&&n.bytesTotal>0&&void 0!==n.bufferedBytes?i=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(i=e.loaded/e.total),null!==i&&(i=Math.min(1,Math.max(0,i)),t.loaded&&t.total&&t.setTransformStyle(t.loaded,"scaleX("+i+")"))},setCurrentRailHandle:function(e){var t=this;t.setCurrentRailMain(t,e)},setCurrentRail:function(){var e=this;e.setCurrentRailMain(e)},setCurrentRailMain:function(e,t){if(void 0!==e.media.currentTime&&e.media.duration){var n=void 0===t?e.media.currentTime:t;if(e.total&&e.handle){var i=parseFloat(getComputedStyle(e.total).width),o=Math.round(i*n/e.media.duration),a=o-Math.round(e.handle.offsetWidth/2);if(a=a<0?0:a,e.setTransformStyle(e.current,"scaleX("+o/i+")"),e.setTransformStyle(e.handle,"translateX("+a+"px)"),e.options.useSmoothHover&&!(0,u.hasClass)(e.hovered,"no-hover")){var r=parseInt(e.hovered.getAttribute("pos")),s=(r=isNaN(r)?0:r)/i-a/i;e.hovered.style.left=a+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),s>=0?(0,u.removeClass)(e.hovered,"negative"):(0,u.addClass)(e.hovered,"negative")}}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=e(28),l=e(24);Object.assign(a.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(r.default.prototype,{buildcurrent:function(e,t,n,i){var a=this,r=o.default.createElement("div");r.className=a.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+a.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"current"),i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateCurrent()})},buildduration:function(e,t,n,i){var a=this;if(t.lastChild.querySelector("."+a.options.classPrefix+"currenttime"))t.querySelector("."+a.options.classPrefix+"time").innerHTML+=a.options.timeAndDurationSeparator+'<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>";else{t.querySelector("."+a.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+a.options.classPrefix+"currenttime").parentNode,a.options.classPrefix+"currenttime-container");var r=o.default.createElement("div");r.className=a.options.classPrefix+"time "+a.options.classPrefix+"duration-container",r.innerHTML='<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"duration")}i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateDuration()})},updateCurrent:function(){var e=this,t=e.media.currentTime;isNaN(t)&&(t=0),e.controls.querySelector("."+e.options.classPrefix+"currenttime")&&(e.controls.querySelector("."+e.options.classPrefix+"currenttime").innerText=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength))},updateDuration:function(){var e=this,t=e.media.duration;(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),e.options.duration>0&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength);n.length>5&&(0,l.toggleClass)(e.container,e.options.classPrefix+"long-video"),e.controls.querySelector("."+e.options.classPrefix+"duration")&&t>0&&(e.controls.querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,24:24,28:28}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=i(e(6)),r=i(e(4)),s=e(16),l=i(s),d=e(28),u=e(25),c=e(24);Object.assign(s.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l.default.prototype,{hasChapters:!1,buildtracks:function(e,t,n,i){if(e.tracks.length||e.trackFiles&&0!==!e.trackFiles.length){var a=this,s=a.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",l=(0,u.isString)(a.options.tracksText)?a.options.tracksText:r.default.t("mejs.captions-subtitles"),d=(0,u.isString)(a.options.chaptersText)?a.options.chaptersText:r.default.t("mejs.captions-chapters"),f=null===e.trackFiles?e.tracks.length:e.trackFiles.length;if(a.domNode.textTracks)for(var p=a.domNode.textTracks.length-1;p>=0;p--)a.domNode.textTracks[p].mode="hidden";a.cleartracks(e),e.captions=o.default.createElement("div"),e.captions.className=a.options.classPrefix+"captions-layer "+a.options.classPrefix+"layer",e.captions.innerHTML='<div class="'+a.options.classPrefix+"captions-position "+a.options.classPrefix+'captions-position-hover"'+s+'><span class="'+a.options.classPrefix+'captions-text"></span></div>',e.captions.style.display="none",n.insertBefore(e.captions,n.firstChild),e.captionsText=e.captions.querySelector("."+a.options.classPrefix+"captions-text"),e.captionsButton=o.default.createElement("div"),e.captionsButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"captions-button",e.captionsButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+l+'" aria-label="'+l+'" tabindex="0"></button><div class="'+a.options.classPrefix+"captions-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'captions-selector-list"><li class="'+a.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+a.options.classPrefix+'captions-selector-input" name="'+e.id+'_captions" id="'+e.id+'_captions_none" value="none" checked disabled><label class="'+a.options.classPrefix+"captions-selector-label "+a.options.classPrefix+'captions-selected" for="'+e.id+'_captions_none">'+r.default.t("mejs.none")+"</label></li></ul></div>",a.addControlElement(e.captionsButton,"tracks"),e.captionsButton.querySelector("."+a.options.classPrefix+"captions-selector-input").disabled=!1,e.chaptersButton=o.default.createElement("div"),e.chaptersButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"chapters-button",e.chaptersButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+d+'" aria-label="'+d+'" tabindex="0"></button><div class="'+a.options.classPrefix+"chapters-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'chapters-selector-list"></ul></div>';for(var m=0,h=0;h<f;h++){var v=e.tracks[h].kind;"subtitles"===v||"captions"===v?m++:"chapters"!==v||t.querySelector("."+a.options.classPrefix+"chapter-selector")||e.captionsButton.parentNode.insertBefore(e.chaptersButton,e.captionsButton)}e.trackToLoad=-1,e.selectedTrack=null,e.isLoadingTrack=!1;for(var y=0;y<f;y++){var g=e.tracks[y].kind;"subtitles"!==g&&"captions"!==g||e.addTrackButton(e.tracks[y].trackId,e.tracks[y].srclang,e.tracks[y].label)}e.loadNextTrack();var b=["mouseenter","focusin"],E=["mouseleave","focusout"];if(a.options.toggleCaptionsButtonWhenOnlyOne&&1===m)e.captionsButton.addEventListener("click",function(){var t="none";null===e.selectedTrack&&(t=e.tracks[0].trackId),e.setTrack(t)});else{for(var S=e.captionsButton.querySelectorAll("."+a.options.classPrefix+"captions-selector-label"),x=e.captionsButton.querySelectorAll("input[type=radio]"),w=0,P=b.length;w<P;w++)e.captionsButton.addEventListener(b[w],function(){(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var T=0,C=E.length;T<C;T++)e.captionsButton.addEventListener(E[T],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var k=0,_=x.length;k<_;k++)x[k].addEventListener("click",function(){e.setTrack(this.value)});for(var N=0,A=S.length;N<A;N++)S[N].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)});e.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var L=0,F=b.length;L<F;L++)e.chaptersButton.addEventListener(b[L],function(){this.querySelector("."+a.options.classPrefix+"chapters-selector-list").childNodes.length&&(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});for(var j=0,I=E.length;j<I;j++)e.chaptersButton.addEventListener(E[j],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});e.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),e.options.alwaysShowControls?(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover"):(e.container.addEventListener("controlsshown",function(){(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")}),e.container.addEventListener("controlshidden",function(){i.paused||(0,c.removeClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")})),i.addEventListener("timeupdate",function(){e.displayCaptions()}),""!==e.options.slidesSelector&&(e.slidesContainer=o.default.querySelectorAll(e.options.slidesSelector),i.addEventListener("timeupdate",function(){e.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.controls,e.layers,e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var i=0;i<n;i++){var o=t[i],a=o.getAttribute("srclang").toLowerCase()||"",r=e.id+"_track_"+i+"_"+o.getAttribute("kind")+"_"+a;e.tracks.push({trackId:r,srclang:a,src:o.getAttribute("src"),kind:o.getAttribute("kind"),label:o.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e){for(var t=this,n=t.captionsButton.querySelectorAll('input[type="radio"]'),i=t.captionsButton.querySelectorAll("."+t.options.classPrefix+"captions-selected"),o=t.captionsButton.querySelector('input[value="'+e+'"]'),a=0,r=n.length;a<r;a++)n[a].checked=!1;for(var s=0,l=i.length;s<l;s++)(0,c.removeClass)(i[s],t.options.classPrefix+"captions-selected");o.checked=!0;for(var d=(0,c.siblings)(o,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),f=0,p=d.length;f<p;f++)(0,c.addClass)(d[f],t.options.classPrefix+"captions-selected");if("none"===e)t.selectedTrack=null,(0,c.removeClass)(t.captionsButton,t.options.classPrefix+"captions-enabled");else for(var m=0,h=t.tracks.length;m<h;m++){var v=t.tracks[m];if(v.trackId===e){null===t.selectedTrack&&(0,c.addClass)(t.captionsButton,t.options.classPrefix+"captions-enabled"),t.selectedTrack=v,t.captions.setAttribute("lang",t.selectedTrack.srclang),t.displayCaptions();break}}var y=(0,u.createEvent)("captionschange",t.media);y.detail.caption=t.selectedTrack,t.media.dispatchEvent(y)},loadNextTrack:function(){var e=this;++e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,c.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?a.default.TrackFormatParser.dfxp.parse(e):a.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,i=o.default.getElementById(""+e.trackId);if(i){var s=e.label;""===s&&(s=r.default.t(a.default.language.codes[n])||n),i.disabled=!1;for(var l=(0,c.siblings)(i,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),d=0,f=l.length;d<f;d++)l[d].innerHTML=s;if(t.options.startLanguage===n){i.checked=!0;var p=(0,u.createEvent)("click",i);i.dispatchEvent(p)}}},removeTrackButton:function(e){var t=o.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var i=this;""===n&&(n=r.default.t(a.default.language.codes[t])||t),i.captionsButton.querySelector("ul").innerHTML+='<li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+i.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+i.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,i=e.tracks.length;n<i;n++){var o=e.tracks[n].kind;if(("subtitles"===o||"captions"===o)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(n>-1)return e.captionsText.innerHTML=function(e){var t=o.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),i=n.length;i--;)n[i].remove();for(var a=t.getElementsByTagName("*"),r=0,s=a.length;r<s;r++)for(var l=a[r].attributes,d=Array.prototype.slice.call(l),u=0,c=d.length;u<c;u++)d[u].name.startsWith("on")||d[u].value.startsWith("javascript")?a[r].remove():"style"===d[u].name&&a[r].removeAttribute(d[u].name);return t.innerHTML}(t.entries[n].text),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px");e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){var t=this;t.slides=e,t.slides.entries.imgs=[t.slides.entries.length],t.showSlide(0)},showSlide:function(e){var t=this,n=this;if(void 0!==n.tracks&&void 0!==n.slidesContainer){var i=n.slides.entries[e].text,a=n.slides.entries[e].imgs;if(void 0===a||void 0===a.fadeIn){var r=o.default.createElement("img");r.src=i,r.addEventListener("load",function(){var e=t,i=(0,c.siblings)(e,function(e){return i(e)});e.style.display="none",n.slidesContainer.innerHTML+=e.innerHTML,(0,c.fadeIn)(n.slidesContainer.querySelector(r));for(var o=0,a=i.length;o<a;o++)(0,c.fadeOut)(i[o],400)}),n.slides.entries[e].imgs=a=r}else if(!(0,c.visible)(a)){var s=(0,c.siblings)(self,function(e){return s(e)});(0,c.fadeIn)(n.slidesContainer.querySelector(a));for(var l=0,d=s.length;l<d;l++)(0,c.fadeOut)(s[l])}}},displaySlides:function(){var e=this;if(void 0!==this.slides){var t=e.slides,n=e.searchTrackPosition(t.entries,e.media.currentTime);n>-1&&e.showSlide(n)}},drawChapters:function(e){var t=this,n=e.entries.length;if(n){t.chaptersButton.querySelector("ul").innerHTML="";for(var i=0;i<n;i++)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="'+e.entries[i].start+'" disabled><label class="'+t.options.classPrefix+'chapters-selector-label"for="'+t.id+"_chapters_"+i+'">'+e.entries[i].text+"</label></li>";for(var o=t.chaptersButton.querySelectorAll('input[type="radio"]'),a=t.chaptersButton.querySelectorAll("."+t.options.classPrefix+"chapters-selector-label"),r=0,s=o.length;r<s;r++)o[r].disabled=!1,o[r].checked=!1,o[r].addEventListener("click",function(){var e=this,n=t.chaptersButton.querySelectorAll("li"),i=(0,c.siblings)(e,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"chapters-selector-label")})[0];e.checked=!0,e.parentNode.setAttribute("aria-checked",!0),(0,c.addClass)(i,t.options.classPrefix+"chapters-selected"),(0,c.removeClass)(t.chaptersButton.querySelector("."+t.options.classPrefix+"chapters-selected"),t.options.classPrefix+"chapters-selected");for(var o=0,a=n.length;o<a;o++)n[o].setAttribute("aria-checked",!1);t.media.setCurrentTime(parseFloat(e.value)),t.media.paused&&t.media.play()});for(var l=0,d=a.length;l<d;l++)a[l].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)})}},searchTrackPosition:function(e,t){for(var n=0,i=e.length-1,o=void 0,a=void 0,r=void 0;n<=i;){if(o=n+i>>1,a=e[o].start,r=e[o].stop,t>=a&&t<r)return o;a<t?n=o+1:a>t&&(i=o-1)}return-1}}),a.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},a.default.TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],i=void 0,o=void 0,a=void 0,r=0,s=t.length;r<s;r++){if((i=this.pattern.exec(t[r]))&&r<t.length){for(r-1>=0&&""!==t[r-1]&&(a=t[r-1]),o=t[++r],r++;""!==t[r]&&r<t.length;)o=o+"\n"+t[r],r++;o=o.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:a,start:0===(0,d.convertSMPTEtoSeconds)(i[1])?.2:(0,d.convertSMPTEtoSeconds)(i[1]),stop:(0,d.convertSMPTEtoSeconds)(i[3]),text:o,settings:i[5]})}a=""}return n}},dfxp:{parse:function(e){var t=(e=$(e).filter("tt")).firstChild,n=t.querySelectorAll("p"),i=e.getElementById(""+t.attr("style")),o=[],a=void 0;if(i.length){i.removeAttribute("id");var r=i.attributes;if(r.length){a={};for(var s=0,l=r.length;s<l;s++)a[r[s].name.split(":")[1]]=r[s].value}}for(var u=0,c=n.length;u<c;u++){var f=void 0,p={start:null,stop:null,style:null,text:null};if(n.eq(u).attr("begin")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("begin"))),!p.start&&n.eq(u-1).attr("end")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u-1).attr("end"))),n.eq(u).attr("end")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("end"))),!p.stop&&n.eq(u+1).attr("begin")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u+1).attr("begin"))),a){f="";for(var m in a)f+=m+":"+a[m]+";"}f&&(p.style=f),0===p.start&&(p.start=.2),p.text=n.eq(u).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),o.push(p)}return o}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(25),u=e(24);Object.assign(a.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(r.default.prototype,{buildvolume:function(e,t,n,i){if(!l.IS_ANDROID&&!l.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,r=a.isVideo?a.options.videoVolume:a.options.audioVolume,c=(0,d.isString)(a.options.muteText)?a.options.muteText:s.default.t("mejs.mute"),f=(0,d.isString)(a.options.unmuteText)?a.options.unmuteText:s.default.t("mejs.unmute"),p=(0,d.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:s.default.t("mejs.volume-help-text"),m=o.default.createElement("div");if(m.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",m.innerHTML="horizontal"===r?'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+s.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(m,"volume"),"horizontal"===r){var h=o.default.createElement("a");h.className=a.options.classPrefix+"horizontal-volume-slider",h.href="javascript:void(0);",h.setAttribute("aria-label",s.default.t("mejs.volume-slider")),h.setAttribute("aria-valuemin",0),h.setAttribute("aria-valuemax",100),h.setAttribute("role","slider"),h.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',m.parentNode.insertBefore(h,m.nextSibling)}var v=!1,y=!1,g=function(){var e=Math.floor(100*i.volume);b.setAttribute("aria-valuenow",e),b.setAttribute("aria-valuetext",e+"%")},b="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-slider"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),E="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-total"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-total"),S="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-current"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-current"),x="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-handle"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),w=function(e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute");var t=m.firstElementChild;t.setAttribute("title",f),t.setAttribute("aria-label",f)}else{(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute");var n=m.firstElementChild;n.setAttribute("title",c),n.setAttribute("aria-label",c)}var i=100*e+"%",o=getComputedStyle(x);"vertical"===r?(S.style.bottom=0,S.style.height=i,x.style.bottom=i,x.style.marginBottom=-parseFloat(o.height)/2+"px"):(S.style.left=0,S.style.width=i,x.style.left=i,x.style.marginLeft=-parseFloat(o.width)/2+"px")},P=function(e){var t=(0,u.offset)(E),n=getComputedStyle(E),o=null;if("vertical"===r){var a=parseFloat(n.height);if(o=(a-(e.pageY-t.top))/a,0===t.top||0===t.left)return}else{var s=parseFloat(n.width);o=(e.pageX-t.left)/s}o=Math.max(0,o),o=Math.min(o,1),w(o),0===o?i.setMuted(!0):i.setMuted(!1),i.setVolume(o),e.preventDefault(),e.stopPropagation()};m.addEventListener("mouseenter",function(e){e.target===m&&(b.style.display="block",y=!0,e.preventDefault(),e.stopPropagation())}),m.addEventListener("focusin",function(){b.style.display="block",y=!0}),m.addEventListener("focusout",function(e){e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider")||"vertical"!==r||(b.style.display="none")}),m.addEventListener("mouseleave",function(){y=!1,v||"vertical"!==r||(b.style.display="none")}),m.addEventListener("focusout",function(){y=!1}),m.addEventListener("keydown",function(e){if(a.options.keyActions.length){var t=e.which||e.keyCode||0,n=i.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}v=!1,w(n),i.setVolume(n),e.preventDefault(),e.stopPropagation()}}),m.querySelector("button").addEventListener("click",function(){i.setMuted(!i.muted);var e=(0,d.createEvent)("volumechange",i);i.dispatchEvent(e)}),b.addEventListener("dragstart",function(){return!1}),b.addEventListener("mouseover",function(){y=!0}),b.addEventListener("focusin",function(){b.style.display="block",y=!0}),b.addEventListener("focusout",function(){y=!1,v||"vertical"!==r||(b.style.display="none")}),b.addEventListener("mousedown",function(e){P(e),a.globalBind("mousemove.vol",function(e){var t=e.target;v&&(t===b||t.closest("vertical"===r?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&P(e)}),a.globalBind("mouseup.vol",function(){v=!1,a.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==r||(b.style.display="none")}),v=!0,e.preventDefault(),e.stopPropagation()}),i.addEventListener("volumechange",function(e){v||(i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))),g()}),0===e.options.startVolume&&i.setMuted(!0),i.setVolume(e.options.startVolume),a.container.addEventListener("controlsresize",function(){i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6));"undefined"!=typeof jQuery?a.default.$=o.default.jQuery=o.default.$=jQuery:"undefined"!=typeof Zepto?a.default.$=o.default.Zepto=o.default.$=Zepto:"undefined"!=typeof ender&&(a.default.$=o.default.ender=o.default.$=ender)},{3:3,6:6}],16:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=i(e(3)),l=i(e(2)),d=i(e(6)),u=i(e(5)),c=i(e(4)),f=e(23),p=e(25),m=e(28),h=e(26),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(24));d.default.mepIndex=0,d.default.players={};var y=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.duration},defaultSeekForwardInterval:function(e){return.05*e.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(e,t){f.IS_FIREFOX||(t.paused||t.ended?t.play():t.pause())}},{keys:[38],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.volume+.1,1);t.setVolume(n),n>0&&t.setMuted(!1)}},{keys:[40],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.volume-.1,0);t.setVolume(n),n<=.1&&t.setMuted(!0)}},{keys:[37,227],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.currentTime-e.options.defaultSeekBackwardInterval(t),0);t.setCurrentTime(n)}}},{keys:[39,228],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.currentTime+e.options.defaultSeekForwardInterval(t),t.duration);t.setCurrentTime(n)}}},{keys:[70],action:function(e,t,n,i){i.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}},{keys:[77],action:function(e){e.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}]};d.default.MepDefaults=y;var g=function(){function e(t,n){o(this,e);var i=this,a="string"==typeof t?l.default.getElementById(t):t;if(i.hasFocus=!1,i.controlsAreVisible=!0,i.controlsEnabled=!0,i.controlsTimer=null,!(i instanceof e))return new e(a,n);if(i.node=i.media=a,i.node){if(void 0!==i.media.player)return i.media.player;if(void 0===n){var r=i.node.getAttribute("data-mejsoptions");n=r?JSON.parse(r):{}}i.options=Object.assign({},y,n),i.options.timeFormat||(i.options.timeFormat="mm:ss",i.options.alwaysShowHours&&(i.options.timeFormat="hh:mm:ss"),i.options.showTimecodeFrameCount&&(i.options.timeFormat+=":ff")),(0,m.calculateTimeFormat)(0,i.options,i.options.framesPerSecond||25),i.id="mep_"+d.default.mepIndex++,d.default.players[i.id]=i;var s=Object.assign({},i.options,{success:function(e,t){i._meReady(e,t)},error:function(e){i._handleError(e)}}),g=i.node.tagName.toLowerCase();if(i.isDynamic="audio"!==g&&"video"!==g,i.isVideo=i.isDynamic?i.options.isVideo:"audio"!==g&&i.options.isVideo,i.mediaFiles=null,i.trackFiles=null,f.IS_IPAD&&i.options.iPadUseNativeControls||f.IS_IPHONE&&i.options.iPhoneUseNativeControls)i.node.setAttribute("controls",!0),f.IS_IPAD&&i.node.getAttribute("autoplay")&&i.play();else if(!(i.isVideo||!i.isVideo&&i.options.features.length)||f.IS_ANDROID&&i.options.AndroidUseNativeControls)i.isVideo||i.options.features.length||(i.node.style.display="none");else{i.node.removeAttribute("controls");var b=i.isVideo?c.default.t("mejs.video-player"):c.default.t("mejs.audio-player"),E=l.default.createElement("span");if(E.className=i.options.classPrefix+"offscreen",E.innerText=b,i.media.parentNode.insertBefore(E,i.media),i.container=l.default.createElement("div"),i.container.id=i.id,i.container.className=i.options.classPrefix+"container "+i.options.classPrefix+"container-keyboard-inactive "+i.media.className,i.container.tabIndex=0,i.container.setAttribute("role","application"),i.container.setAttribute("aria-label",b),i.container.innerHTML='<div class="'+i.options.classPrefix+'inner"><div class="'+i.options.classPrefix+'mediaelement"></div><div class="'+i.options.classPrefix+'layers"></div><div class="'+i.options.classPrefix+'controls"></div><div class="'+i.options.classPrefix+'clear"></div></div>',i.container.addEventListener("focus",function(e){if(!i.controlsAreVisible&&!i.hasFocus&&i.controlsEnabled){i.showControls(!0);var t=(0,p.isNodeAfter)(e.relatedTarget,i.container)?"."+i.options.classPrefix+"controls ."+i.options.classPrefix+"button:last-child > button":"."+i.options.classPrefix+"playpause-button > button";i.container.querySelector(t).focus()}}),i.node.parentNode.insertBefore(i.container,i.node),i.options.features.length||(i.container.style.background="transparent",i.container.querySelector("."+i.options.classPrefix+"controls").style.display="none"),i.isVideo&&"fill"===i.options.stretching&&!v.hasClass(i.container.parentNode,i.options.classPrefix+"fill-container")){i.outerContainer=i.media.parentNode;var S=l.default.createElement("div");S.className=i.options.classPrefix+"fill-container",i.container.parentNode.insertBefore(S,i.container),S.appendChild(i.container)}if(f.IS_ANDROID&&v.addClass(i.container,i.options.classPrefix+"android"),f.IS_IOS&&v.addClass(i.container,i.options.classPrefix+"ios"),f.IS_IPAD&&v.addClass(i.container,i.options.classPrefix+"ipad"),f.IS_IPHONE&&v.addClass(i.container,i.options.classPrefix+"iphone"),v.addClass(i.container,i.isVideo?i.options.classPrefix+"video":i.options.classPrefix+"audio"),f.IS_SAFARI&&!f.IS_IOS){v.addClass(i.container,i.options.classPrefix+"hide-cues");for(var x=i.node.cloneNode(),w=i.node.childNodes,P=[],T=[],C=0,k=w.length;C<k;C++){var _=w[C];_&&_.nodeType!==Node.TEXT_NODE&&function(){switch(_.tagName.toLowerCase()){case"source":var e={};Array.prototype.slice.call(_.attributes).forEach(function(t){e[t.name]=t.value}),e.type=(0,h.formatType)(e.src,e.type),P.push(e);break;case"track":_.mode="hidden",T.push(_);break;default:x.appendChild(_)}}()}i.node.remove(),i.node=i.media=x,P.length&&(i.mediaFiles=P),T.length&&(i.trackFiles=T)}i.container.querySelector("."+i.options.classPrefix+"mediaelement").appendChild(i.node),i.media.player=i,i.controls=i.container.querySelector("."+i.options.classPrefix+"controls"),i.layers=i.container.querySelector("."+i.options.classPrefix+"layers");var N=i.isVideo?"video":"audio",A=N.substring(0,1).toUpperCase()+N.substring(1);i.options[N+"Width"]>0||i.options[N+"Width"].toString().indexOf("%")>-1?i.width=i.options[N+"Width"]:""!==i.node.style.width&&null!==i.node.style.width?i.width=i.node.style.width:i.node.getAttribute("width")?i.width=i.node.getAttribute("width"):i.width=i.options["default"+A+"Width"],i.options[N+"Height"]>0||i.options[N+"Height"].toString().indexOf("%")>-1?i.height=i.options[N+"Height"]:""!==i.node.style.height&&null!==i.node.style.height?i.height=i.node.style.height:i.node.getAttribute("height")?i.height=i.node.getAttribute("height"):i.height=i.options["default"+A+"Height"],i.initialAspectRatio=i.height>=i.width?i.width/i.height:i.height/i.width,i.setPlayerSize(i.width,i.height),s.pluginWidth=i.width,s.pluginHeight=i.height}if(new u.default(i.media,s,i.mediaFiles),void 0!==i.container&&i.options.features.length&&i.controlsAreVisible&&!i.options.hideVideoControlsOnLoad){var L=(0,p.createEvent)("controlsshown",i.container);i.container.dispatchEvent(L)}return i}}return r(e,[{key:"showControls",value:function(e){var t=this;if(e=void 0===e||e,!t.controlsAreVisible&&t.isVideo){if(e)!function(){v.removeClass(t.controls,t.options.classPrefix+"offscreen"),v.fadeIn(t.controls,200,function(){var e=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(e)});for(var e=t.container.querySelectorAll("."+t.options.classPrefix+"control"),n=0,i=e.length;n<i;n++)!function(n,i){v.fadeIn(e[n],200,function(){v.removeClass(e[n],t.options.classPrefix+"offscreen")})}(n)}();else{v.removeClass(t.controls,t.options.classPrefix+"offscreen"),t.controls.style.display="",t.controls.style.opacity=1;for(var n=t.container.querySelectorAll("."+t.options.classPrefix+"control"),i=0,o=n.length;i<o;i++)v.removeClass(n[i],t.options.classPrefix+"offscreen"),n[i].style.display="";var a=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(a)}t.controlsAreVisible=!0,t.setControlsSize()}}},{key:"hideControls",value:function(e,t){var n=this;if(e=void 0===e||e,!0===t||!(!n.controlsAreVisible||n.options.alwaysShowControls||n.keyboardAction||n.media.paused&&4===n.media.readyState&&(!n.options.hideVideoControlsOnLoad&&n.media.currentTime<=0||!n.options.hideVideoControlsOnPause&&n.media.currentTime>0)||n.isVideo&&!n.options.hideVideoControlsOnLoad&&!n.media.readyState||n.media.ended)){if(e)!function(){v.fadeOut(n.controls,200,function(){v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="";var e=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(e)});for(var e=n.container.querySelectorAll("."+n.options.classPrefix+"control"),t=0,i=e.length;t<i;t++)!function(t,i){v.fadeOut(e[t],200,function(){v.addClass(e[t],n.options.classPrefix+"offscreen"),e[t].style.display=""})}(t)}();else{v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="",n.controls.style.opacity=0;for(var i=n.container.querySelectorAll("."+n.options.classPrefix+"control"),o=0,a=i.length;o<a;o++)v.addClass(i[o],n.options.classPrefix+"offscreen"),i[o].style.display="";var r=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(r)}n.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){var e=this;null!==e.controlsTimer&&(clearTimeout(e.controlsTimer),delete e.controlsTimer,e.controlsTimer=null)}},{key:"disableControls",value:function(){var e=this;e.killControlsTimer(),e.controlsEnabled=!0,e.hideControls(!1,!0)}},{key:"enableControls",value:function(){var e=this;e.controlsEnabled=!0,e.showControls(!1)}},{key:"_meReady",value:function(e,t){var n=this,i=t.getAttribute("autoplay"),o=!(void 0===i||null===i||"false"===i),a=null!==e.rendererName&&/(native|html5)/i.test(n.media.rendererName);if(n.controls&&n.enableControls(),n.container&&n.container.querySelector("."+n.options.classPrefix+"overlay-play")&&(n.container.querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(f.IS_ANDROID&&n.options.AndroidUseNativeControls||f.IS_IPAD&&n.options.iPadUseNativeControls||f.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length)return o&&a&&n.play(),void(n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));n.buildposter(n,n.controls,n.layers,n.media),n.buildkeyboard(n,n.controls,n.layers,n.media),n.buildoverlays(n,n.controls,n.layers,n.media),n.findTracks(),n.featurePosition={};for(var r=0,u=n.options.features.length;r<u;r++){var c=n.options.features[r];if(n["build"+c])try{n["build"+c](n,n.controls,n.layers,n.media)}catch(e){console.error("error building "+c,e)}}var h=(0,p.createEvent)("controlsready",n.container);n.container.dispatchEvent(h),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.media.paused&&t?n.pause():n.media.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t)}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!f.IS_ANDROID&&!f.IS_IOS||n.options.alwaysShowControls?(n.container.addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.container.addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.container.addEventListener("mouseleave",function(){n.controlsEnabled&&(n.media.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),o&&!n.options.alwaysShowControls&&n.hideControls(),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&null!==e.target&&!isNaN(e.target.videoHeight)&&(n.setPlayerSize(e.target.videoWidth,e.target.videoHeight),n.setControlsSize(),n.media.setSize(e.target.videoWidth,e.target.videoHeight))})),n.media.addEventListener("play",function(){n.hasFocus=!0;for(var e in d.default.players)if(d.default.players.hasOwnProperty(e)){var t=d.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||(t.pause(),t.hasFocus=!1)}}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.media.setCurrentTime(0),setTimeout(function(){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.stop?n.media.stop():n.media.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,m.calculateTimeFormat)(n.duration,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var y=null;n.media.addEventListener("timeupdate",function(){y!==n.media.duration&&(y=n.media.duration,(0,m.calculateTimeFormat)(y,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.container.addEventListener("click",function(e){v.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.container.addEventListener("focusin",function(e){v.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),n.controlsEnabled&&!n.options.alwaysShowControls&&n.showControls(!1)}),n.container.addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,n.isVideo&&!n.options.alwaysShowControls&&n.hideControls(!0))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalBind("resize",function(){n.isFullScreen||f.HAS_TRUE_NATIVE_FULLSCREEN&&l.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()})}o&&a&&n.play(),n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e){var t=this;t.controls&&t.disableControls();var n=t.layers.querySelector("."+t.options.classPrefix+"overlay-play");n&&(n.style.display="none"),t.options.error&&t.options.error(e)}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var e=this,t=function(){for(var t=void 0,n=e.container;n;){try{if(f.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&s.default.self!==s.default.top&&null!==s.default.frameElement)return s.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&v.visible(t))return t;n=t}return null}(),n=t?getComputedStyle(t,null):getComputedStyle(l.default.body,null),i=function(){return e.isVideo?e.media.videoWidth&&e.media.videoWidth>0?e.media.videoWidth:e.node.getAttribute("width")?e.node.getAttribute("width"):e.options.defaultVideoWidth:e.options.defaultAudioWidth}(),o=function(){return e.isVideo?e.media.videoHeight&&e.media.videoHeight>0?e.media.videoHeight:e.node.getAttribute("height")?e.node.getAttribute("height"):e.options.defaultVideoHeight:e.options.defaultAudioHeight}(),a=function(){var t=1;return e.isVideo?(t=e.media.videoWidth&&e.media.videoWidth>0&&e.media.videoHeight&&e.media.videoHeight>0?e.height>=e.width?e.media.videoWidth/e.media.videoHeight:e.media.videoHeight/e.media.videoWidth:e.initialAspectRatio,(isNaN(t)||t<.01||t>100)&&(t=1),t):t}(),r=parseFloat(n.height),d=void 0,u=parseFloat(n.width);if(d=e.isVideo?"100%"===e.height?parseFloat(u*o/i,10):e.height>=e.width?parseFloat(u/a,10):parseFloat(u*a,10):o,isNaN(d)&&(d=r),e.container.parentNode.length>0&&"body"===e.container.parentNode.tagName.toLowerCase()&&(u=s.default.innerWidth||l.default.documentElement.clientWidth||l.default.body.clientWidth,d=s.default.innerHeight||l.default.documentElement.clientHeight||l.default.body.clientHeight),d&&u){e.container.style.width=u+"px",e.container.style.height=d+"px",e.node.style.width="100%",e.node.style.height="100%",e.isVideo&&e.media.setSize&&e.media.setSize(u,d);for(var c=e.layers.childNodes,p=0,m=c.length;p<m;p++)c[p].style.width="100%",c[p].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=void 0,n=!1;try{s.default.self!==s.default.top?(n=!0,t=s.default.frameElement):t=e.outerContainer}catch(n){t=e.outerContainer}var i=getComputedStyle(t);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),n||parseFloat(i.width)||(t.style.width=e.media.offsetWidth+"px"),n||parseFloat(i.height)||(t.style.height=e.media.offsetHeight+"px"),i=getComputedStyle(t);var o=parseFloat(i.width),a=parseFloat(i.height);e.setDimensions("100%","100%");var r=e.container.querySelector(e.options.classPrefix+"poster img");r&&(r.style.display="");for(var l=e.container.querySelectorAll("object, embed, iframe, video"),d=e.height,u=e.width,c=o,f=d*o/u,p=u*a/d,m=a,h=p>o==!1,v=h?Math.floor(c):Math.floor(p),y=h?Math.floor(f):Math.floor(m),g=h?o+"px":v+"px",b=h?y+"px":a+"px",E=0,S=l.length;E<S;E++)l[E].style.height=b,l[E].style.width=g,e.media.setSize&&e.media.setSize(g,b),l[E].style.marginLeft=Math.floor((o-v)/2)+"px",l[E].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,p.isString)(e)&&e.indexOf("%")>-1?e:parseFloat(e)+"px",t=(0,p.isString)(t)&&t.indexOf("%")>-1?t:parseFloat(t)+"px",n.container.style.width=e,n.container.style.height=t;for(var i=n.layers.childNodes,o=0,a=i.length;o<a;o++)i[o].style.width=e,i[o].style.height=t}},{key:"setControlsSize",value:function(){var e=this;if(v.visible(e.container)&&e.rail&&v.visible(e.rail)){for(var t=getComputedStyle(e.rail),n=getComputedStyle(e.total),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),o=parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=0,r=v.siblings(e.rail,function(t){return t!==e.rail}),s=r.length,l=0;l<s;l++)a+=r[l].offsetWidth;a+=o+(0===o?2*i:i)+1;var d=parseFloat(e.controls.offsetWidth);e.rail.style.width=(a>d?0:d-a)+"px";var u=(0,p.createEvent)("controlsresize",e.container);e.container.dispatchEvent(u)}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var i=n.controls.childNodes[n.featurePosition[t]-1];i.parentNode.insertBefore(e,i.nextSibling)}else{n.controls.appendChild(e);for(var o=n.controls.childNodes,a=0,r=o.length;a<r;a++)if(e==o[a]){n.featurePosition[t]=a;break}}}},{key:"createIframeLayer",value:function(){var e=this;if(e.isVideo&&null!==e.media.rendererName&&e.media.rendererName.indexOf("iframe")>-1&&!l.default.getElementById(e.media.id+"-iframe-overlay")){var t=l.default.createElement("div"),n=l.default.getElementById(e.media.id+"_"+e.media.rendererName);t.id=e.media.id+"-iframe-overlay",t.className=e.options.classPrefix+"iframe-overlay",t.addEventListener("click",function(t){e.options.clickToPlayPause&&(e.media.paused?e.media.play():e.media.pause(),t.preventDefault(),t.stopPropagation())}),n.parentNode.insertBefore(t,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this,n=t.container.querySelector("."+t.options.classPrefix+"poster"),i=n.querySelector("img");i||((i=l.default.createElement("img")).className=t.options.classPrefix+"poster-img",i.width="100%",i.height="100%",n.appendChild(i)),i.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")'}},{key:"changeSkin",value:function(e){var t=this;t.container.className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.addEventListener(n,t,!1),n},"");if(e.w)for(var d=e.w.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.addEventListener(n,t,!1),n},"")}},{key:"globalUnbind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.removeEventListener(n,t,!1),n},"");if(e.w)for(var d=e.d.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.removeEventListener(n,t,!1),n},"")}},{key:"buildposter",value:function(e,t,n,i){var o=this,a=l.default.createElement("div");a.className=o.options.classPrefix+"poster "+o.options.classPrefix+"layer",n.appendChild(a);var r=e.media.getAttribute("poster");""!==e.options.poster&&(r=e.options.poster),r?o.setPoster(r):a.style.display="none",i.addEventListener("play",function(){a.style.display="none"}),i.addEventListener("playing",function(){a.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&i.addEventListener("ended",function(){a.style.display=""}),i.addEventListener("error",function(){a.style.display="none"}),e.options.showPosterWhenPaused&&i.addEventListener("pause",function(){i.ended||(a.style.display="")})}},{key:"buildoverlays",value:function(e,t,n,i){if(e.isVideo){var o=this,a=l.default.createElement("div"),r=l.default.createElement("div"),s=l.default.createElement("div"),d=t.querySelector("."+o.options.classPrefix+"time-buffering");a.style.display="none",a.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",a.innerHTML='<div class="'+o.options.classPrefix+'overlay-loading"><span class="'+o.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(a),r.style.display="none",r.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",r.innerHTML='<div class="'+o.options.classPrefix+'overlay-error"></div>',n.appendChild(r),s.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer "+o.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+o.options.classPrefix+'overlay-button" role="button" tabindex="0"aria-label="'+c.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(o.options.clickToPlayPause){var e=o.container.querySelector("."+o.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t)}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||f.IS_FIREFOX&&32===t){var n=(0,p.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==o.media.rendererName&&(/(youtube|facebook)/i.test(o.media.rendererName)&&!e.media.originalNode.getAttribute("poster")&&!e.options.poster||f.IS_STOCK_ANDROID)&&(s.style.display="none"),i.addEventListener("play",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("playing",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("seeking",function(){s.style.display="none",a.style.display="",d&&(d.style.display="")}),i.addEventListener("seeked",function(){s.style.display=i.paused&&!f.IS_STOCK_ANDROID?"":"none",a.style.display="none",d&&(d.style.display="")}),i.addEventListener("pause",function(){a.style.display="none",f.IS_STOCK_ANDROID||(s.style.display=""),d&&(d.style.display="none")}),i.addEventListener("waiting",function(){a.style.display="",d&&(d.style.display="")}),i.addEventListener("loadeddata",function(){a.style.display="",d&&(d.style.display=""),f.IS_ANDROID&&(i.canplayTimeout=setTimeout(function(){if(l.default.createEvent){var e=l.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),i.dispatchEvent(e)}},300))}),i.addEventListener("canplay",function(){a.style.display="none",d&&(d.style.display="none"),clearTimeout(i.canplayTimeout)}),i.addEventListener("error",function(e){o._handleError(e),a.style.display="none",s.style.display="none",d&&(d.style.display="none"),e.message&&(r.style.display="block",r.querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=e.message)}),i.addEventListener("keydown",function(t){o.onkeydown(e,i,t)})}}},{key:"buildkeyboard",value:function(e,t,n,i){var o=this;o.container.addEventListener("keydown",function(){o.keyboardAction=!0}),o.globalBind("keydown",function(t){var n=l.default.activeElement.closest("."+o.options.classPrefix+"container"),a=o.media.closest("."+o.options.classPrefix+"container");return o.hasFocus=!(!n||!a||n.id!==a.id),o.onkeydown(e,i,t)}),o.globalBind("click",function(e){o.hasFocus=!!e.target.closest("."+o.options.classPrefix+"container")})}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var i=0,o=e.options.keyActions.length;i<o;i++)for(var a=e.options.keyActions[i],r=0,s=a.keys.length;r<s;r++)n.keyCode===a.keys[r]&&(a.action(e,t,n.keyCode,n),n.preventDefault(),n.stopPropagation());return!0}},{key:"play",value:function(){var e=this;e.media.getCurrentTime()<=0&&e.load(),e.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(e){}}},{key:"load",value:function(){var e=this;e.isLoaded||e.media.load(),e.isLoaded=!0}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(e){var t=this,n=l.default.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer()}},{key:"remove",value:function(){var e=this,t=e.media.rendererName;e.media.paused||e.media.pause();var n=e.media.getSrc();e.media.setSrc("");for(var i in e.options.features){var o=e.options.features[i];if(e["clean"+o])try{e["clean"+o](e)}catch(e){console.error("error cleaning "+o,e)}}var r=e.node.getAttribute("width"),s=e.node.getAttribute("height");r?-1===r.indexOf("%")&&(r+="px"):r="auto",s?-1===s.indexOf("%")&&(s+="px"):s="auto",e.node.style.width=r,e.node.style.height=s,e.isDynamic?e.container.parentNode.insertBefore(e.node,e.container):function(){e.node.setAttribute("controls",!0),e.node.setAttribute("id",e.node.getAttribute("id").replace("_"+t,"").replace("_from_mejs","")),delete e.node.autoplay,""!==e.media.canPlayType((0,h.getTypeFromFile)(n))&&e.node.setAttribute("src",n),~t.indexOf("iframe")&&l.default.getElementById(e.media.id+"-iframe-overlay").remove();var i=e.node.cloneNode();if(i.style.display="",e.container.parentNode.insertBefore(i,e.container),e.node.remove(),e.mediaFiles)for(var o=0,a=e.mediaFiles.length;o<a;o++){var r=l.default.createElement("source");r.setAttribute("src",e.mediaFiles[o].src),r.setAttribute("type",e.mediaFiles[o].type),i.appendChild(r)}if(e.trackFiles)for(var s=0,d=e.trackFiles.length;s<d;s++)!function(t,n){var o=e.trackFiles[t],a=l.default.createElement("track");a.kind=o.kind,a.label=o.label,a.srclang=o.srclang,a.src=o.src,i.appendChild(a),a.addEventListener("load",function(){this.mode="showing",i.textTracks[t].mode="showing"})}(s);delete e.node,delete e.mediaFiles,delete e.trackFiles}(),"function"==typeof e.media.destroy&&e.media.destroy(),delete d.default.players[e.id],"object"===a(e.container)&&(e.container.parentNode.querySelector("."+e.options.classPrefix+"offscreen").remove(),e.container.remove()),e.globalUnbind(),delete e.media.player}}]),e}();s.default.MediaElementPlayer=g,n.default=g,function(e){void 0!==e&&(e.fn.mediaelementplayer=function(t){return!1===t?this.each(function(){var t=e(this).data("mediaelementplayer");t&&t.remove(),e(this).removeData("mediaelementplayer")}):this.each(function(){e(this).data("mediaelementplayer",new g(this,t))}),this},e(l.default).ready(function(){e("."+y.classPrefix+"player").mediaelementplayer()}))}(d.default.$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(26),d=e(23),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof dashjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();o.default["__ready__"+e.id](t)}},f={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(e){return d.HAS_MSE&&["application/dash+xml"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=i.getAttribute("preload"),u=i.autoplay,f=null,p=null;f=i.cloneNode(!0),t=Object.assign(t,e.options);for(var m=a.default.html5media.properties,h=0,v=m.length;h<v;h++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);f["get"+t]=function(){return null!==p?f[e]:null},f["set"+t]=function(t){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==p&&("src"===e&&(p.attachSource(t),u&&f.play()),f[e]=t)}}(m[h]);if(o.default["__ready__"+l]=function(n){e.dashPlayer=p=n,p.getDebug().setLogToBrowserConsole(t.dash.debug),p.setAutoPlay(d&&"auto"===d||u),p.setScheduleWhilePaused(d&&"auto"===d||u);for(var i=a.default.html5media.events.concat(["click","mouseover","mouseout"]),o=dashjs.MediaPlayer.events,r=0,l=i.length;r<l;r++)!function(t){"loadedmetadata"===t&&p.initialize(f,f.src,!1),f.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(i[r]);var c=function(t){var n=(0,s.createEvent)(t.type,f);n.data=t,e.dispatchEvent(n),"error"===t.type.toLowerCase()&&console.error(t)};for(var m in o)o.hasOwnProperty(m)&&p.on(o[m],c)},n&&n.length>0)for(var y=0,g=n.length;y<g;y++)if(r.renderer.renderers[t.prefix].canPlayType(n[y].type)){f.setAttribute("src",n[y].src);break}f.setAttribute("id",l),i.parentNode.insertBefore(f,i),i.autoplay=!1,i.style.display="none",c.load({options:t.dash,id:l}),f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f};var b=(0,s.createEvent)("rendererready",f);return e.dispatchEvent(b),f}};l.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=i(e(4)),d=e(7),u=e(25),c=e(23),f=e(26),p=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=p.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,i,o){p.plugins[e]=p.detectPlugin(t,n,i,o)},detectPlugin:function(e,t,n,i){var r=[0,0,0],s=void 0,l=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===o(c.NAV.plugins[e])){if((s=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(r=s.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)r[d]=parseInt(r[d].match(/\d+/),10)}else if(void 0!==a.default.ActiveXObject)try{(l=new ActiveXObject(n))&&(r=i(l))}catch(e){}return r}};p.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var m={create:function(e,t,n){var i={};i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var o=s.default.html5media.properties,p=0,m=o.length;p<m;p++)!function(e){i.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);i["get"+t]=function(){if(null!==i.flashApi){if(void 0!==i.flashApi["get_"+e]){var t=i.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},i["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==i.flashApi&&void 0!==i.flashApi["set_"+e]?i.flashApi["set_"+e](t):i.flashApiStack.push({type:"set",propName:e,value:t})}}(o[p]);var h=s.default.html5media.methods;h.push("stop");for(var v=0,y=h.length;v<y;v++)!function(e){i[e]=function(){if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var g=["rendererready"],b=0,E=g.length;b<E;b++){var S=(0,u.createEvent)(g[b],i);e.dispatchEvent(S)}a.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=r.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var o=n.propName,a=""+o.substring(0,1).toUpperCase()+o.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},a.default["__event__"+i.id]=function(e,t){var n=(0,u.createEvent)(e,i);n.message=t||"",i.mediaElement.dispatchEvent(n)},i.flashWrapper=r.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var x=e.originalNode.autoplay,w=["uid="+i.id,"autoplay="+x,"allowScriptAccess="+i.options.shimScriptAccess],P=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),T=P?e.originalNode.height:1,C=P?e.originalNode.width:1;e.originalNode.getAttribute("src")&&w.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(w.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),w.push("pseudostreamtype="+i.options.pseudoStreamingType)),e.appendChild(i.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var k=[];if(c.IS_IE){var _=r.default.createElement("div");i.flashWrapper.appendChild(_),k=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),_.outerHTML="<object "+k.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+w.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+l.default.t("mejs.install-flash")+"</div></object>"}else k=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+w.join("&")+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),i.flashWrapper.innerHTML="<embed "+k.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){P&&(i.flashNode.style.display="none")},i.show=function(){P&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&n.length>0)for(var N=0,A=n.length;N<A;N++)if(d.renderer.renderers[t.prefix].canPlayType(n[N].type)){i.setSrc(n[N].src);break}return i}};if(p.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(v);var y={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(y);var g={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(g);var b={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(b)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof flvjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=flvjs.createPlayer(e.options);o.default["__ready__"+e.id](t)}},f={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(e){return l.HAS_MSE&&["video/x-flv","video/flv"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=null,u=null;d=i.cloneNode(!0),t=Object.assign(t,e.options);for(var f=a.default.html5media.properties,p=0,m=f.length;p<m;p++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);d["get"+t]=function(){return null!==u?d[e]:null},d["set"+t]=function(t){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==u&&(d[e]=t,"src"===e&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()))}}(f[p]);if(o.default["__ready__"+l]=function(t){e.flvPlayer=u=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=0,o=n.length;i<o;i++)!function(t){"loadedmetadata"===t&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[i])},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(r.renderer.renderers[t.prefix].canPlayType(n[h].type)){d.setAttribute("src",n[h].src);break}d.setAttribute("id",l),i.parentNode.insertBefore(d,i),i.autoplay=!1,i.style.display="none",t.flv.type="flv",t.flv.url=d.getAttribute("src"),c.load({options:t.flv,id:l}),d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var y=(0,s.createEvent)("rendererready",d);return e.dispatchEvent(y),d}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof Hls?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=new Hls(e.options);return o.default["__ready__"+e.id](t),t}},f={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return l.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=i.getAttribute("preload"),u=i.autoplay,f=null,p=null;p=i.cloneNode(!0),(t=Object.assign(t,e.options)).hls.autoStartLoad=d&&"none"!==d||u;for(var m=a.default.html5media.properties,h=0,v=m.length;h<v;h++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);p["get"+n]=function(){return null!==f?p[e]:null},p["set"+n]=function(n){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&null!==f&&(p[e]=n,"src"===e&&(f.destroy(),(f=c._createPlayer({options:t.hls,id:l})).loadSource(n),f.attachMedia(p)))}}(m[h]);if(o.default["__ready__"+l]=function(t){e.hlsPlayer=f=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=Hls.Events,o=0,r=n.length;o<r;o++)!function(t){if("loadedmetadata"===t){var n=e.originalNode.src;f.detachMedia(),f.loadSource(n),f.attachMedia(p)}p.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[o]);var l=void 0,d=void 0,u=function(t,n){var i=(0,s.createEvent)(t,p);if(i.data=n,e.dispatchEvent(i),"hlsError"===t&&(console.warn(t,n),n.fatal))switch(n.type){case"mediaError":var o=(new Date).getTime();!l||o-l>3e3?(l=(new Date).getTime(),f.recoverMediaError()):!d||o-d>3e3?(d=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),f.swapAudioCodec(),f.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:f.destroy()}};for(var c in i)i.hasOwnProperty(c)&&f.on(i[c],u)},n&&n.length>0)for(var y=0,g=n.length;y<g;y++)if(r.renderer.renderers[t.prefix].canPlayType(n[y].type)){p.setAttribute("src",n[y].src);break}"auto"===d||u||(p.addEventListener("play",function(){null!==f&&f.startLoad()}),p.addEventListener("pause",function(){null!==f&&f.stopLoad()})),p.setAttribute("id",l),i.parentNode.insertBefore(p,i),i.autoplay=!1,i.style.display="none",c.load({options:t.hls,id:l}),p.setSize=function(e,t){return p.style.width=e+"px",p.style.height=t+"px",p},p.hide=function(){return p.pause(),p.style.display="none",p},p.show=function(){return p.style.display="",p},p.destroy=function(){null!==f&&f.destroy()},p.stop=function(){null!==f&&f.stopLoad()};var b=(0,s.createEvent)("rendererready",p);return e.dispatchEvent(b),p}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],21:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=e(7),l=e(25),d=e(23),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=a.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var i=e.id+"_"+t.prefix,o=null;void 0===e.originalNode||null===e.originalNode?(o=a.default.createElement("audio"),e.appendChild(o)):o=e.originalNode,o.setAttribute("id",i);for(var d=r.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);o["get"+t]=function(){return o[e]},o["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&(o[e]=t)}}(d[u]);for(var f=r.default.html5media.events.concat(["click","mouseover","mouseout"]),p=0,m=f.length;p<m;p++)!function(t){o.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[p]);if(o.setSize=function(e,t){return o.style.width=e+"px",o.style.height=t+"px",o},o.hide=function(){return o.style.display="none",o},o.show=function(){return o.style.display="",o},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(s.renderer.renderers[t.prefix].canPlayType(n[h].type)){o.setAttribute("src",n[h].src);break}var y=(0,l.createEvent)("rendererready",o);return e.dispatchEvent(y),o}};o.default.HtmlMediaElement=r.default.HtmlMediaElement=u,s.renderer.add(u)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(7),d=e(25),u=e(26),c=e(24),f={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){f.isLoaded="undefined"!=typeof YT&&YT.loaded,f.isLoaded?f.createIframe(e):(f.loadIframeApi(),f.iframeQueue.push(e))},loadIframeApi:function(){f.isIframeStarted||((0,c.loadScript)("https://www.youtube.com/player_api"),f.isIframeStarted=!0)},iFrameReady:function(){for(f.isLoaded=!0,f.isIframeLoaded=!0;f.iframeQueue.length>0;){var e=f.iframeQueue.pop();f.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return e.indexOf("?")>0?""===(t=f.getYouTubeIdFromParam(e))&&(t=f.getYouTubeIdFromUrl(e)):t=f.getYouTubeIdFromUrl(e),t},getYouTubeIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",i=0,o=t.length;i<o;i++){var a=t[i].split("=");if("v"===a[0]){n=a[1];break}}return n},getYouTubeIdFromUrl:function(e){return void 0!==e&&null!==e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(void 0===e||null===e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(e,t,n){var i={},o=[],l=null,u=!0,c=!1,p=null,m=1;i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var h=s.default.html5media.properties,v=0,y=h.length;v<y;v++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+n]=function(){if(null!==l){switch(t){case"currentTime":return l.getCurrentTime();case"duration":return l.getDuration();case"volume":return m=l.getVolume()/100;case"paused":return u;case"ended":return c;case"muted":return l.isMuted();case"buffered":var e=l.getVideoLoadedFraction(),n=l.getDuration();return{start:function(){return 0},end:function(){return e*n},length:1};case"src":return l.getVideoUrl();case"readyState":return 4}return null}return null},i["set"+n]=function(n){if(null!==l)switch(t){case"src":var a="string"==typeof n?n:n[0].src,r=f.getYouTubeId(a);e.originalNode.autoplay?l.loadVideoById(r):l.cueVideoById(r);break;case"currentTime":l.seekTo(n);break;case"muted":n?l.mute():l.unMute(),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":m=n,l.setVolume(100*n),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var s=(0,d.createEvent)("canplay",i);e.dispatchEvent(s)}else o.push({type:"set",propName:t,value:n})}}(h[v]);for(var g=s.default.html5media.methods,b=0,E=g.length;b<E;b++)!function(e){i[e]=function(){if(null!==l)switch(e){case"play":return u=!1,l.playVideo();case"pause":return u=!0,l.pauseVideo();case"load":return null}else o.push({type:"call",methodName:e})}}(g[b]);var S=r.default.createElement("div");S.id=i.id,i.options.youtube.nocookie&&e.originalNode.setAttribute("src",f.getYouTubeNoCookieUrl(n[0].src)),e.originalNode.parentNode.insertBefore(S,e.originalNode),e.originalNode.style.display="none";var x="audio"===e.originalNode.tagName.toLowerCase(),w=x?"1":e.originalNode.height,P=x?"1":e.originalNode.width,T=f.getYouTubeId(n[0].src),C={id:i.id,containerId:S.id,videoId:T,height:w,width:P,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},i.options.youtube),origin:a.default.location.host,events:{onReady:function(t){if(e.youTubeApi=l=t.target,e.youTubeState={paused:!0,ended:!1},o.length)for(var n=0,a=o.length;n<a;n++){var r=o[n];if("set"===r.type){var s=r.propName,u=""+s.substring(0,1).toUpperCase()+s.substring(1);i["set"+u](r.value)}else"call"===r.type&&i[r.methodName]()}p=l.getIframe();for(var c=["mouseover","mouseout"],f=function(t){var n=(0,d.createEvent)(t.type,i);e.dispatchEvent(n)},m=0,h=c.length;m<h;m++)p.addEventListener(c[m],f,!1);for(var v=["rendererready","loadeddata","loadedmetadata","canplay"],y=0,g=v.length;y<g;y++){var b=(0,d.createEvent)(v[y],i);e.dispatchEvent(b)}},onStateChange:function(t){var n=[];switch(t.data){case-1:n=["loadedmetadata"],u=!0,c=!1;break;case 0:n=["ended"],u=!1,c=!0,i.stopInterval();break;case 1:n=["play","playing"],u=!1,c=!1,i.startInterval();break;case 2:n=["pause"],u=!0,c=!1,i.stopInterval();break;case 3:n=["progress"],c=!1;break;case 5:n=["loadeddata","loadedmetadata","canplay"],u=!0,c=!1}for(var o=0,a=n.length;o<a;o++){var r=(0,d.createEvent)(n[o],i);e.dispatchEvent(r)}},onError:function(t){var n=(0,d.createEvent)("error",i);n.data=t.data,e.dispatchEvent(n)}}};return x&&(C.playerVars.playsinline=1),f.enqueueIframe(C),i.onEvent=function(t,n,i){null!==i&&void 0!==i&&(e.youTubeState=i)},i.setSize=function(e,t){null!==l&&l.setSize(e,t)},i.hide=function(){i.stopInterval(),i.pause(),p&&(p.style.display="none")},i.show=function(){p&&(p.style.display="")},i.destroy=function(){l.destroy()},i.interval=null,i.startInterval=function(){i.interval=setInterval(function(){var t=(0,d.createEvent)("timeupdate",i);e.dispatchEvent(t)},250)},i.stopInterval=function(){i.interval&&clearInterval(i.interval)},i}};a.default.postMessage&&o(a.default.addEventListener)&&(a.default.onYouTubePlayerAPIReady=function(){f.iFrameReady()},u.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.be)/i.test(e)?"video/x-youtube":null}),l.renderer.add(p))},{2:2,24:24,25:25,26:26,3:3,6:6,7:7}],23:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=n.NAV=o.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l),u=n.IS_IPHONE=/iphone/i.test(l),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(l)),f=n.IS_IE=/(trident|microsoft)/i.test(s.appName),p=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in a.default)),m=n.IS_CHROME=/chrome/i.test(l),h=n.IS_FIREFOX=/firefox/i.test(l),v=n.IS_SAFARI=/safari/i.test(l)&&!m,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),g=(n.HAS_MSE="MediaSource"in o.default),b=(n.SUPPORT_POINTER_EVENTS=function(){var e=a.default.createElement("x"),t=a.default.documentElement,n=o.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var i=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!i}()),E=["source","track","audio","video"],S=void 0,x=0,w=E.length;x<w;x++)S=a.default.createElement(E[x]);var P=n.SUPPORTS_NATIVE_HLS=v||c&&(m||y)||f&&/edge/i.test(l),T=void 0!==S.webkitEnterFullscreen,C=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(l)&&(C=!1,T=!1);var k=void 0!==S.webkitRequestFullScreen,_=void 0!==S.mozRequestFullScreen,N=void 0!==S.msRequestFullscreen,A=k||_||N,L=A,F="",j=void 0,I=void 0,M=void 0;_?L=a.default.mozFullScreenEnabled:N&&(L=a.default.msFullscreenEnabled),m&&(T=!1),A&&(k?F="webkitfullscreenchange":_?F="mozfullscreenchange":N&&(F="MSFullscreenChange"),n.isFullScreen=j=function(){return _?a.default.mozFullScreen:k?a.default.webkitIsFullScreen:N?null!==a.default.msFullscreenElement:void 0},n.requestFullScreen=I=function(e){k?e.webkitRequestFullScreen():_?e.mozRequestFullScreen():N&&e.msRequestFullscreen()},n.cancelFullScreen=M=function(){k?a.default.webkitCancelFullScreen():_?a.default.mozCancelFullScreen():N&&a.default.msExitFullscreen()});var O=n.HAS_NATIVE_FULLSCREEN=C,H=n.HAS_WEBKIT_NATIVE_FULLSCREEN=k,q=n.HAS_MOZ_NATIVE_FULLSCREEN=_,R=n.HAS_MS_NATIVE_FULLSCREEN=N,U=n.HAS_IOS_FULLSCREEN=T,V=n.HAS_TRUE_NATIVE_FULLSCREEN=A,D=n.HAS_NATIVE_FULLSCREEN_ENABLED=L,B=n.FULLSCREEN_EVENT_NAME=F;n.isFullScreen=j,n.requestFullScreen=I,n.cancelFullScreen=M,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=c,r.default.Features.isIE=f,r.default.Features.isEdge=p,r.default.Features.isChrome=m,r.default.Features.isFirefox=h,r.default.Features.isSafari=v,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=g,r.default.Features.supportsNativeHLS=P,r.default.Features.supportsPointerEvents=b,r.default.Features.hasiOSFullScreen=U,r.default.Features.hasNativeFullscreen=O,r.default.Features.hasWebkitNativeFullScreen=H,r.default.Features.hasMozNativeFullScreen=q,r.default.Features.hasMsNativeFullScreen=R,r.default.Features.hasTrueNativeFullScreen=V,r.default.Features.nativeFullScreenEnabled=D,r.default.Features.fullScreenEventName=B,r.default.Features.isFullScreen=j,r.default.Features.requestFullScreen=I,r.default.Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){for(o=e;a=n.shift();)a[i]&&a[i](o)}var n=[],i=-1,o=void 0,a=void 0;return e(function(e){return t(e,i=0)},function(e){return t(e,i=1)}),{then:function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];~i?t[i]&&t[i](o):n.push(t)}}}function a(e){return o(function(t,n){var i=m.default.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},m.default.head.appendChild(i)})}function r(e){var t=e.getBoundingClientRect(),n=p.default.pageXOffset||m.default.documentElement.scrollLeft,i=p.default.pageYOffset||m.default.documentElement.scrollTop;return{top:t.top+i,left:t.left+n}}function s(e,t){b(e,t)?S(e,t):E(e,t)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(1-r/t,2);e.style.opacity=s<0?0:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(r/t,2);e.style.opacity=s>1?1:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,i){var o=p.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),a="application/x-www-form-urlencoded; charset=UTF-8",r=!1,s="*/".concat("*");switch(t){case"text":a="text/plain";break;case"json":a="application/json, text/javascript";break;case"html":a="text/html";break;case"xml":a="application/xml, text/xml"}"application/x-www-form-urlencoded"!==a&&(s=a+", */*; q=0.01"),o&&(o.open("GET",e,!0),o.setRequestHeader("Accept",s),o.onreadystatechange=function(){if(!r&&4===o.readyState)if(200===o.status){r=!0;var e=void 0;switch(t){case"json":e=JSON.parse(o.responseText);break;case"xml":e=o.responseXML;break;default:e=o.responseText}n(e)}else"function"==typeof i&&i(o.status)},o.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=r,n.toggleClass=s,n.fadeOut=l,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var p=i(e(3)),m=i(e(2)),h=i(e(6)),v=void 0,y=void 0,g=void 0;"classList"in m.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},y=function(e,t){return e.classList.add(t)},g=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},y=function(e,t){b(e,t)||(e.className+=" "+t)},g=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var b=n.hasClass=v,E=n.addClass=y,S=n.removeClass=g;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=r,h.default.Utils.hasClass=b,h.default.Utils.addClass=E,h.default.Utils.removeClass=S,h.default.Utils.toggleClass=s,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=l,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=a},{2:2,3:3,6:6}],25:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return e.replace(/[&<>"]/g,function(e){return t[e]})}function o(e,t){var n=this,i=arguments,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var a=void 0;return function(){var r=n,s=i,l=function(){a=null,o||e.apply(r,s)},d=o&&!a;clearTimeout(a),a=setTimeout(l,t),d&&e.apply(r,s)}}function a(e){return Object.getOwnPropertyNames(e).length<=0}function r(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var o=e+(t?"."+t:"");o.startsWith(".")?(i.d.push(o),i.w.push(o)):i[n.test(e)?"w":"d"].push(o)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function s(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),i={target:t};return null!==n&&(e=n[1],i.namespace=n[2]),new window.CustomEvent(e,{detail:i})}function l(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=i,n.debounce=o,n.isObjectEmpty=a,n.splitEvents=r,n.createEvent=s,n.isNodeAfter=l,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=i,u.default.Utils.debounce=o,u.default.Utils.isObjectEmpty=a,u.default.Utils.splitEvents=r,u.default.Utils.createEvent=s,u.default.Utils.isNodeAfter=l,u.default.Utils.isString=d},{6:6}],26:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?r(e):a(t)}function a(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var i=c[t](e);if(i)return i}var o=l(s(e)),a="video/mp4";return o&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(o)?a="video/"+o:~["mp3","oga","wav","mid","midi"].indexOf(o)&&(a="audio/"+o)),a}function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function l(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=i,n.formatType=o,n.getMimeFromType=a,n.getTypeFromFile=r,n.getExtension=s,n.normalizeExtension=l;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(25),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=i,d.default.Utils.formatType=o,d.default.Utils.getMimeFromType=a,d.default.Utils.getTypeFromFile=r,d.default.Utils.getExtension=s,d.default.Utils.normalizeExtension=l},{25:25,6:6}],27:[function(e,t,n){"use strict";var i=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,i=arguments.length;n<i;n++){var o=arguments[n];if(null!==o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,i=this;do{for(n=t.length;--n>=0&&t.item(n)!==i;);}while(n<0&&(i=i.parentElement));return i}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+i)},i);return e=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}],28:[function(e,t,n){"use strict";function i(){return!((arguments.length>0&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;e=!e||"number"!=typeof e||e<0?0:e;var r=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=i(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(i(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*r*Math.floor(h/d),v>r&&(h+=r*Math.floor((v-r)/Math.round(60*s-r)));var y=Math.floor(h/s);c=Math.floor(Math.floor(y/60)/60),f=Math.floor(y/60)%60,p=n?y%60:(h/s%60).toFixed(a)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):(e%60).toFixed(a);c=c<=0?0:c,f=f<=0?0:f,p=p<=0?0:p;var g=t||c>0?(c<10?"0"+c:c)+":":"";return g+=(f<10?"0"+f:f)+":",g+=""+(p<10?"0"+p:p),n&&(g+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10?u+"0"+m:""+u+m),g}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(e.indexOf(";")>0&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,a=0,r=0,s=0,l=0,d=0,u=Math.round(.066666*t),c=Math.round(t),f=3600*c,p=60*c;switch(n.length){default:case 1:s=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),s=parseInt(n[1],10);break;case 3:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10);break;case 4:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10),l=parseInt(n[3],10)}return o=i(t)?f*a+p*r+c*s+l-u*((d=60*a+r)-Math.floor(d/10)):(f*a+p*r+t*s+l)/t,parseFloat(o.toFixed(3))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var i=Math.floor(e/3600)%24,o=Math.floor(e/60)%60,a=Math.floor(e%60),r=[[Math.floor((e%1*n).toFixed(3)),"f"],[a,"s"],[o,"m"],[i,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=r.length;p<m;p++)if(~s.indexOf(r[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(r[v][0]>0){h=!0;break}if(!h)break;l||(s=c+s),s=r[p][1]+u+s,l&&(s=r[p][1]+s),c=r[p][1]}t.currentTimeFormat=s}function s(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,i=1,o=0,a=(e=e.split(":").reverse()).length;o<a;o++)i=1,o>0&&(i=Math.pow(60,o)),n+=Number(e[o])*i;return Number(n.toFixed(t))}Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=i,n.secondsToTimeCode=o,n.timeCodeToSeconds=a,n.calculateTimeFormat=r,n.convertSMPTEtoSeconds=s;var l=function(e){return e&&e.__esModule?e:{default:e}}(e(6));l.default.Utils=l.default.Utils||{},l.default.Utils.secondsToTimeCode=o,l.default.Utils.timeCodeToSeconds=a,l.default.Utils.calculateTimeFormat=r,l.default.Utils.convertSMPTEtoSeconds=s},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]);
\ No newline at end of file
diff --git a/lib/mejs/mediaelement.js b/lib/mejs/mediaelement.js
index b89b2bba689635cd12297f201bdc733a0d294efc..2d0ffd6afa9abe1c5e8f93a42915d759b850004d 100644
--- a/lib/mejs/mediaelement.js
+++ b/lib/mejs/mediaelement.js
@@ -57,24 +57,12 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 var _en = _dereq_(8);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Locale.
- *
- * This object manages translations with pluralization. Also deals with WordPress compatibility.
- * @type {Object}
- */
 var i18n = { lang: 'en', en: _en.EN };
 
-/**
- * Language setter/getter
- *
- * @param {*} args  Can pass the language code and/or the translation strings as an Object
- * @return {string}
- */
 i18n.language = function () {
 	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 		args[_key] = arguments[_key];
@@ -86,13 +74,12 @@ i18n.language = function () {
 			throw new TypeError('Language code must be a string value');
 		}
 
-		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
 			throw new TypeError('Language code must have format `xx` or `xx-xx`');
 		}
 
 		i18n.lang = args[0];
 
-		// Check if language strings were added; otherwise, check the second argument or set to English as default
 		if (i18n[args[0]] === undefined) {
 			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
 			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
@@ -104,13 +91,6 @@ i18n.language = function () {
 	return i18n.lang;
 };
 
-/**
- * Translate a string in the language set up (or English by default)
- *
- * @param {string} message
- * @param {number} pluralParam
- * @return {string}
- */
 i18n.t = function (message) {
 	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
 
@@ -122,57 +102,20 @@ i18n.t = function (message) {
 
 		var language = i18n.language();
 
-		/**
-   * Modify string using algorithm to detect plural forms.
-   *
-   * @private
-   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
-   * @param {String|String[]} input   - String or array of strings to pick the plural form
-   * @param {Number} number           - Number to determine the proper plural form
-   * @param {Number} form             - Number of language family to apply plural form
-   * @return {String}
-   */
 		var _plural = function _plural(input, number, form) {
 
 			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
 				return input;
 			}
 
-			/**
-    *
-    * @return {Function[]}
-    * @private
-    */
 			var _pluralForms = function () {
-				return [
-				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
-				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
-				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
-				function () {
+				return [function () {
 					return arguments.length <= 1 ? undefined : arguments[1];
-				},
-
-				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
-				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
-				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
-				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
-				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
-				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
-				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
-				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
-				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
-				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
-				function () {
+				}, function () {
 					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];
-				},
-
-				// 3: Latvian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
@@ -180,10 +123,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 4: Scottish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
@@ -193,10 +133,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 5:  Romanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -204,10 +141,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 6: Lithuanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -215,10 +149,7 @@ i18n.t = function (message) {
 					} else {
 						return [3];
 					}
-				},
-
-				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -226,10 +157,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 8:  Slovak, Czech
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
@@ -237,10 +165,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 9: Polish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -248,10 +173,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 10: Slovenian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
 						return arguments.length <= 2 ? undefined : arguments[2];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
@@ -261,10 +183,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					}
-				},
-
-				// 11: Irish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -276,10 +195,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 5 ? undefined : arguments[5];
 					}
-				},
-
-				// 12: Arabic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -293,10 +209,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 6 ? undefined : arguments[6];
 					}
-				},
-
-				// 13: Maltese
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -306,10 +219,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 14: Macedonian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
@@ -317,19 +227,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 15:  Icelandic
-				function () {
+				}, function () {
 					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];
-				},
-
-				// New additions
-
-				// 16:  Kashubian
-				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
-				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -337,10 +237,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 17:  Welsh
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -350,15 +247,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 18:  Javanese
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 19:  Cornish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -368,10 +259,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 20:  Mandinka
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -382,11 +270,9 @@ i18n.t = function (message) {
 				}];
 			}();
 
-			// Perform plural form or return original text
 			return _pluralForms[form].apply(null, [number].concat(input));
 		};
 
-		// Fetch the localized version of the string
 		if (i18n[language] !== undefined) {
 			str = i18n[language][message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -395,7 +281,6 @@ i18n.t = function (message) {
 			}
 		}
 
-		// Fallback to default language if requested uid is not translated
 		if (!str && i18n.en) {
 			str = i18n.en[message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -404,11 +289,8 @@ i18n.t = function (message) {
 			}
 		}
 
-		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
-		// (in which uid was the english text)
 		str = str || message;
 
-		// Replace token
 		if (pluralParam !== null && typeof pluralParam === 'number') {
 			str = str.replace('%1', pluralParam);
 		}
@@ -421,14 +303,13 @@ i18n.t = function (message) {
 
 _mejs2.default.i18n = i18n;
 
-// `i18n` compatibility workflow with WordPress
 if (typeof mejsL10n !== 'undefined') {
 	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
 }
 
 exports.default = i18n;
 
-},{"16":16,"6":6,"8":8}],5:[function(_dereq_,module,exports){
+},{"17":17,"6":6,"8":8}],5:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -447,32 +328,19 @@ var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
-var _media = _dereq_(17);
+var _media = _dereq_(18);
 
 var _renderer = _dereq_(7);
 
+var _constants = _dereq_(15);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- * Media Core
- *
- * This class is the foundation to create/render different media formats.
- * @class MediaElement
- */
-var MediaElement =
-
-/**
- *
- * @param {String|Node} idOrNode
- * @param {Object} options
- * @param {Object[]} sources
- * @returns {Element|*}
- */
-function MediaElement(idOrNode, options, sources) {
+var MediaElement = function MediaElement(idOrNode, options, sources) {
 	var _this = this;
 
 	_classCallCheck(this, MediaElement);
@@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) {
 	sources = Array.isArray(sources) ? sources : null;
 
 	t.defaults = {
-		/**
-   * List of the renderers to use
-   * @type {String[]}
-   */
 		renderers: [],
-		/**
-   * Name of MediaElement container
-   * @type {String}
-   */
+
 		fakeNodeName: 'mediaelementwrapper',
-		/**
-   * The path where shims are located
-   * @type {String}
-   */
+
 		pluginPath: 'build/',
-		/**
-   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
-   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
-   */
+
 		shimScriptAccess: 'sameDomain',
-		/**
-   * If error happens, set up HTML message
-   * @type {String}
-   */
+
 		customError: ''
 	};
 
 	options = Object.assign(t.defaults, options);
 
-	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
 	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
 	t.mediaElement.options = options;
 
@@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) {
 	id = id || 'mejs_' + Math.random().toString().slice(2);
 
 	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
-		// change id
 		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
 
-		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
-		// only if video/audio tags are detected
 		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
-		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+		if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
 			t.mediaElement.originalNode.setAttribute('preload', 'none');
 		}
 
-		// add next to this one
 		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
 
-		// insert this one inside
 		t.mediaElement.appendChild(t.mediaElement.originalNode);
-	} else {
-		// TODO: where to put the node?
-	}
+	} else {}
 
 	t.mediaElement.id = id;
 	t.mediaElement.renderers = {};
 	t.mediaElement.renderer = null;
 	t.mediaElement.rendererName = null;
-	/**
-  * Determine whether the renderer was found or not
-  *
-  * @public
-  * @param {String} rendererName
-  * @param {Object[]} mediaFiles
-  * @return {Boolean}
-  */
+
 	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
 
 		var t = _this;
 
-		// check for a match on the current renderer
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) {
 			return true;
 		}
 
-		// if existing renderer is not the right one, then hide it
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.renderer.hide();
 		}
 
-		// see if we have the renderer already created
 		var newRenderer = t.mediaElement.renderers[rendererName],
 		    newRendererType = null;
 
@@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) {
 
 		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
 
-		// find the desired renderer in the array of possible ones
 		for (var i = 0, total = rendererArray.length; i < total; i++) {
 
 			var index = rendererArray[i];
 
 			if (index === rendererName) {
-
-				// create the renderer
 				var rendererList = _renderer.renderer.renderers;
 				newRendererType = rendererList[index];
 
@@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) {
 				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
 				newRenderer.name = rendererName;
 
-				// store for later
 				t.mediaElement.renderers[newRendererType.name] = newRenderer;
 				t.mediaElement.renderer = newRenderer;
 				t.mediaElement.rendererName = rendererName;
@@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  * Set the element dimensions based on selected renderer's setSize method
-  *
-  * @public
-  * @param {number} width
-  * @param {number} height
-  */
 	t.mediaElement.setSize = function (width, height) {
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.setSize(width, height);
 		}
 	};
 
-	/**
-  *
-  * @param {Object[]} urlList
-  */
 	t.mediaElement.createErrorMessage = function (urlList) {
 
 		urlList = Array.isArray(urlList) ? urlList : [];
@@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) {
 	var props = _mejs2.default.html5media.properties,
 	    methods = _mejs2.default.html5media.methods,
 	    addProperty = function addProperty(obj, name, onGet, onSet) {
-
-		// wrapper functions
 		var oldValue = obj[name];
 		var getFn = function getFn() {
 			return onGet.apply(obj, [oldValue]);
@@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement['set' + capName] = setFn;
 		}
 	},
-
-	// `src` is a property separated from the others since it carries the logic to set the proper renderer
-	// based on the media files detected
-	getSrc = function getSrc() {
+	    getSrc = function getSrc() {
 		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
 	},
 	    setSrc = function setSrc(value) {
-
 		var mediaFiles = [];
 
-		// clean up URLs
 		if (typeof value === 'string') {
 			mediaFiles.push({
 				src: value,
@@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) {
 			}
 		}
 
-		// find a renderer and URL match
 		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
 		    event = void 0;
 
-		// Ensure that the original gets the first source found
 		if (!t.mediaElement.paused) {
 			t.mediaElement.pause();
 			event = (0, _general.createEvent)('pause', t.mediaElement);
@@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.querySelector('.me_cannotplay').remove();
 		}
 
-		// did we find a renderer?
 		if (renderInfo === null) {
 			t.mediaElement.createErrorMessage(mediaFiles);
 			event = (0, _general.createEvent)('error', t.mediaElement);
@@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) {
 			return;
 		}
 
-		// turn on the renderer (this checks for the existing renderer already)
 		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
 
 		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
@@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) {
 			event.message = 'Error creating renderer';
 			t.mediaElement.dispatchEvent(event);
 			t.mediaElement.createErrorMessage(mediaFiles);
-			return;
 		}
 	},
 	    assignMethods = function assignMethods(methodName) {
-		// run the method on the current renderer
 		t.mediaElement[methodName] = function () {
 			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 				args[_key] = arguments[_key];
@@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) {
 		};
 	};
 
-	// Assign all methods/properties/events to fake node if renderer was found
 	addProperty(t.mediaElement, 'src', getSrc, setSrc);
 	t.mediaElement.getSrc = getSrc;
 	t.mediaElement.setSrc = setSrc;
@@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) {
 		assignMethods(methods[_i]);
 	}
 
-	// IE && iOS
 	t.mediaElement.events = {};
 
-	// start: fake events
 	t.mediaElement.addEventListener = function (eventName, callback) {
-		// create or find the array of callbacks for this eventName
 		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
 
-		// push the callback into the stack
 		t.mediaElement.events[eventName].push(callback);
 	};
 	t.mediaElement.removeEventListener = function (eventName, callback) {
-		// no eventName means remove all listeners
 		if (!eventName) {
 			t.mediaElement.events = {};
 			return true;
 		}
 
-		// see if we have any callbacks for this eventName
 		var callbacks = t.mediaElement.events[eventName];
 
 		if (!callbacks) {
 			return true;
 		}
 
-		// check for a specific callback
 		if (!callback) {
 			t.mediaElement.events[eventName] = [];
 			return true;
 		}
 
-		// remove the specific callback
 		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
 			if (callbacks[_i2] === callback) {
 				t.mediaElement.events[eventName].splice(_i2, 1);
@@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  *
-  * @param {Event} event
-  */
 	t.mediaElement.dispatchEvent = function (event) {
 
 		var callbacks = t.mediaElement.events[event.type];
@@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) {
 		}
 	};
 
+	var processURL = function processURL(url, type) {
+
+		if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) {
+			var xhr = new XMLHttpRequest();
+			xhr.onreadystatechange = function () {
+				if (this.readyState === 4 && this.status === 200) {
+					var _url = _window2.default.URL || _window2.default.webkitURL,
+					    blobUrl = _url.createObjectURL(this.response);
+					t.mediaElement.originalNode.setAttribute('src', blobUrl);
+					return blobUrl;
+				}
+				return url;
+			};
+			xhr.open('GET', url);
+			xhr.responseType = 'blob';
+			xhr.send();
+		}
+
+		return url;
+	};
+
 	var mediaFiles = void 0;
 
 	if (sources !== null) {
@@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) {
 		mediaFiles = [];
 
 		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
-
 			case 'iframe':
 				mediaFiles.push({
 					type: '',
@@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) {
 				});
 
 				break;
-
 			case 'audio':
 			case 'video':
 				var _sources = t.mediaElement.originalNode.childNodes.length,
 				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
 
-				// Consider if node contains the `src` and `type` attributes
 				if (nodeSource) {
-					var node = t.mediaElement.originalNode;
+					var node = t.mediaElement.originalNode,
+					    type = (0, _media.formatType)(nodeSource, node.getAttribute('type'));
 					mediaFiles.push({
-						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
-						src: nodeSource
+						type: type,
+						src: processURL(nodeSource, type)
 					});
 				}
 
-				// test <source> types to see if they are usable
 				for (var _i4 = 0; _i4 < _sources; _i4++) {
 					var n = t.mediaElement.originalNode.childNodes[_i4];
 					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
 						var src = n.getAttribute('src'),
-						    type = (0, _media.formatType)(src, n.getAttribute('type'));
-						mediaFiles.push({ type: type, src: src });
+						    _type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: _type, src: processURL(src, _type) });
 					}
 				}
 				break;
 		}
 	}
 
-	// Set the best match based on renderers
 	if (mediaFiles.length) {
 		t.mediaElement.src = mediaFiles;
 	}
@@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement;
 
 exports.default = MediaElement;
 
-},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+},{"15":15,"17":17,"18":18,"2":2,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-// Namespace
 var mejs = {};
 
-// version number
-mejs.version = '4.1.0';
+mejs.version = '4.1.1';
 
-// Basic HTML5 settings
 mejs.html5media = {
-	/**
-  * @type {String[]}
-  */
-	properties: [
-	// GET/SET
-	'volume', 'src', 'currentTime', 'muted',
-
-	// GET only
-	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
-
-	// OTHERS
-	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	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'],
 	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
-	/**
-  * @type {String[]}
-  */
+
 	methods: ['load', 'play', 'pause', 'canPlayType'],
-	/**
-  * @type {String[]}
-  */
+
 	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
-	/**
-  * @type {String[]}
-  */
-	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']
+
+	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']
 };
 
 _window2.default.mejs = mejs;
@@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- *
- * Class to manage renderer selection and addition.
- * @class Renderer
- */
 var Renderer = function () {
 	function Renderer() {
 		_classCallCheck(this, Renderer);
@@ -1014,18 +799,9 @@ var Renderer = function () {
 		this.order = [];
 	}
 
-	/**
-  * Register a new renderer.
-  *
-  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
-  * @method add
-  */
-
-
 	_createClass(Renderer, [{
 		key: 'add',
 		value: function add(renderer) {
-
 			if (renderer.name === undefined) {
 				throw new TypeError('renderer must contain at least `name` property');
 			}
@@ -1033,35 +809,20 @@ var Renderer = function () {
 			this.renderers[renderer.name] = renderer;
 			this.order.push(renderer.name);
 		}
-
-		/**
-   * Iterate a list of renderers to determine which one should the player use.
-   *
-   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
-   * @param {?String[]} renderers - Optional list of pre-selected renderers
-   * @return {?Object} The renderer's name and source selected
-   * @method select
-   */
-
 	}, {
 		key: 'select',
 		value: function select(mediaFiles) {
 			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
 
-
 			var renderersLength = renderers.length;
 
 			renderers = renderers.length ? renderers : this.order;
 
-			// If renderers are not set, set a default order:
-			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
-			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
-			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
 			if (!renderersLength) {
-				var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
 				    rendererRanking = function rendererRanking(renderer) {
 					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
-						if (renderer.match(rendererIndicator[i]) !== null) {
+						if (rendererIndicator[i].test(renderer)) {
 							return i;
 						}
 					}
@@ -1091,13 +852,9 @@ var Renderer = function () {
 
 			return null;
 		}
-
-		// Setters/getters
-
 	}, {
 		key: 'order',
 		set: function set(order) {
-
 			if (!Array.isArray(order)) {
 				throw new TypeError('order must be an array of strings.');
 			}
@@ -1110,7 +867,6 @@ var Renderer = function () {
 	}, {
 		key: 'renderers',
 		set: function set(renderers) {
-
 			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
 				throw new TypeError('renderers must be an array of objects.');
 			}
@@ -1132,53 +888,33 @@ _mejs2.default.Renderers = renderer;
 },{"6":6}],8:[function(_dereq_,module,exports){
 'use strict';
 
-/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
- */
-
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
 var EN = exports.EN = {
 	"mejs.plural-form": 1,
 
-	// core/mediaelement.js
 	"mejs.download-file": "Download File",
 
-	// renderers/flash.js
 	"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/",
 
-	// features/fullscreen.js
 	"mejs.fullscreen": "Fullscreen",
 
-	// features/playpause.js
 	"mejs.play": "Play",
 	"mejs.pause": "Pause",
 
-	// features/progress.js
 	"mejs.time-slider": "Time Slider",
 	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
 	"mejs.live-broadcast": "Live Broadcast",
 
-	// features/volume.js
 	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
 	"mejs.unmute": "Unmute",
 	"mejs.mute": "Mute",
 	"mejs.volume-slider": "Volume Slider",
 
-	// core/player.js
 	"mejs.video-player": "Video Player",
 	"mejs.audio-player": "Audio Player",
 
-	// features/tracks.js
 	"mejs.captions-subtitles": "Captions/Subtitles",
 	"mejs.captions-chapters": "Chapters",
 	"mejs.none": "None",
@@ -1246,115 +982,40 @@ var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
-var _media = _dereq_(17);
+var _media = _dereq_(18);
 
 var _constants = _dereq_(15);
 
+var _dom = _dereq_(16);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native M(PEG)-Dash renderer
- *
- * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * This renderer integrates new events associated with mpd files.
- * @see https://github.com/Dash-Industry-Forum/dash.js
- *
- */
 var NativeDash = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an DASH source
-  *
-  * @param {Object} settings - an object with settings needed to load an DASH player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeDash.isLoaded) {
-			NativeDash.createInstance(settings);
-		} else {
-			NativeDash.loadScript(settings);
-			NativeDash.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load dash.mediaplayer.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an DASH player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof dashjs !== 'undefined') {
-			NativeDash.createInstance(settings);
-		} else if (!NativeDash.isScriptLoaded) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeDash.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-
-			NativeDash.isScriptLoaded = true;
-		}
-	},
-
-	/**
-  * Process queue of DASH player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-
-		NativeDash.isLoaded = true;
-		NativeDash.isScriptLoaded = true;
+			NativeDash._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js';
 
-		while (NativeDash.creationQueue.length > 0) {
-			var settings = NativeDash.creationQueue.pop();
-			NativeDash.createInstance(settings);
+			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeDash.promise.then(function () {
+				NativeDash._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of DASH player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate DASH object
-  */
-	createInstance: function createInstance(settings) {
-
+	_createPlayer: function _createPlayer(settings) {
 		var player = dashjs.MediaPlayer().create();
 		_window2.default['__ready__' + settings.id](player);
 	}
@@ -1362,33 +1023,18 @@ var NativeDash = {
 
 var DashNativeRenderer = {
 	name: 'native_dash',
-
 	options: {
 		prefix: 'native_dash',
 		dash: {
-			// Special config: used to set the local path/URL of dash.js player library
-			path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js',
+			path: 'https://cdn.dashjs.org/latest/dash.mediaplayer.min.js',
 			debug: false
 		}
 	},
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
+
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['application/dash+xml'].includes(type);
+		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -1411,10 +1057,9 @@ var DashNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (dashPlayer !== null) {
 						if (propName === 'src') {
-
 							dashPlayer.attachSource(value);
 							if (autoplay) {
 								node.play();
@@ -1431,7 +1076,6 @@ var DashNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all M-Dash events
 		_window2.default['__ready__' + id] = function (_dashPlayer) {
 
 			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
@@ -1443,7 +1087,6 @@ var DashNativeRenderer = {
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    dashEvents = dashjs.MediaPlayer.events,
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
 					dashPlayer.initialize(node, node.src, false);
 				}
@@ -1458,13 +1101,6 @@ var DashNativeRenderer = {
 				assignEvents(events[_i]);
 			}
 
-			/**
-    * Custom M(PEG)-DASH events
-    *
-    * These events can be attached to the original node using addEventListener and the name of the event,
-    * not using dashjs.MediaPlayer.events object
-    * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html
-    */
 			var assignMdashEvents = function assignMdashEvents(e) {
 				var event = (0, _general.createEvent)(e.type, node);
 				event.data = e;
@@ -1497,12 +1133,11 @@ var DashNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		NativeDash.prepareSettings({
+		NativeDash.load({
 			options: options.dash,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -1527,18 +1162,13 @@ var DashNativeRenderer = {
 	}
 };
 
-/**
- * Register Native M(PEG)-Dash type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.mpd') ? 'application/dash+xml' : null;
+	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
 });
 
 _renderer.renderer.add(DashNativeRenderer);
 
-},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],10:[function(_dereq_,module,exports){
+},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],10:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -1566,38 +1196,17 @@ var _i18n2 = _interopRequireDefault(_i18n);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 var _constants = _dereq_(15);
 
-var _media = _dereq_(17);
+var _media = _dereq_(18);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Shim that falls back to Flash if a media type is not supported.
- *
- * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
- * will play using Flash.
- */
-
-/**
- * Core detector, plugins are added below
- *
- */
 var PluginDetector = exports.PluginDetector = {
-	/**
-  * Cached version numbers
-  * @type {Array}
-  */
 	plugins: [],
 
-	/**
-  * Test a plugin version number
-  * @param {String} plugin - In this scenario 'flash' will be tested
-  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
-  * @return {Boolean}
-  */
 	hasPluginVersion: function hasPluginVersion(plugin, v) {
 		var pv = PluginDetector.plugins[plugin];
 		v[1] = v[1] || 0;
@@ -1605,36 +1214,16 @@ var PluginDetector = exports.PluginDetector = {
 		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];
 	},
 
-	/**
-  * Detect plugin and store its version number
-  *
-  * @see PluginDetector.detectPlugin
-  * @param {String} p
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  */
 	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
 		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
 	},
 
-	/**
-  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
-  *
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  * @return {int[]}
-  */
 	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
 
 		var version = [0, 0, 0],
 		    description = void 0,
 		    ax = void 0;
 
-		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
 		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
 			description = _constants.NAV.plugins[pluginName].description;
 			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
@@ -1643,7 +1232,6 @@ var PluginDetector = exports.PluginDetector = {
 					version[i] = parseInt(version[i].match(/\d+/), 10);
 				}
 			}
-			// Internet Explorer / ActiveX
 		} else if (_window2.default.ActiveXObject !== undefined) {
 			try {
 				ax = new ActiveXObject(activeX);
@@ -1658,12 +1246,7 @@ var PluginDetector = exports.PluginDetector = {
 	}
 };
 
-/**
- * Add Flash detection
- *
- */
 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
-	// adapted from SWFObject
 	var version = [],
 	    d = ax.GetVariable("$version");
 
@@ -1675,34 +1258,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl
 });
 
 var FlashMediaElementRenderer = {
-
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var flash = {};
 
-		// store main variable
 		flash.options = options;
 		flash.id = mediaElement.id + '_' + flash.options.prefix;
 		flash.mediaElement = mediaElement;
-
-		// insert data
 		flash.flashState = {};
 		flash.flashApi = null;
 		flash.flashApiStack = [];
 
-		// mediaElements for get/set
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
-
-			// add to flash state that we will store
 			flash.flashState[propName] = null;
 
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -1714,7 +1282,6 @@ var FlashMediaElementRenderer = {
 					if (flash.flashApi['get_' + propName] !== undefined) {
 						var value = flash.flashApi['get_' + propName]();
 
-						// special case for buffered to conform to HTML5's newest
 						if (propName === 'buffered') {
 							return {
 								start: function start() {
@@ -1741,11 +1308,9 @@ var FlashMediaElementRenderer = {
 					value = (0, _media.absolutizeUrl)(value);
 				}
 
-				// send value to Flash
 				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
 					flash.flashApi['set_' + propName](value);
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'set',
 						propName: propName,
@@ -1759,16 +1324,10 @@ var FlashMediaElementRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add mediaElements for native methods
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			flash[methodName] = function () {
-
 				if (flash.flashApi !== null) {
-
-					// send call up to Flash ExternalInterface API
 					if (flash.flashApi['fire_' + methodName]) {
 						try {
 							flash.flashApi['fire_' + methodName]();
@@ -1779,7 +1338,6 @@ var FlashMediaElementRenderer = {
 						
 					}
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'call',
 						methodName: methodName
@@ -1792,7 +1350,6 @@ var FlashMediaElementRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// give initial events like in others renderers
 		var initEvents = ['rendererready'];
 
 		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
@@ -1800,16 +1357,13 @@ var FlashMediaElementRenderer = {
 			mediaElement.dispatchEvent(event);
 		}
 
-		// add a ready method that Flash can call to
 		_window2.default['__ready__' + flash.id] = function () {
 
 			flash.flashReady = true;
 			flash.flashApi = _document2.default.getElementById('__' + flash.id);
 
-			// do call stack
 			if (flash.flashApiStack.length) {
 				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
-
 					var stackItem = flash.flashApiStack[_i3];
 
 					if (stackItem.type === 'set') {
@@ -1825,19 +1379,15 @@ var FlashMediaElementRenderer = {
 		};
 
 		_window2.default['__event__' + flash.id] = function (eventName, message) {
-
 			var event = (0, _general.createEvent)(eventName, flash);
 			event.message = message || '';
 
-			// send event from Flash up to the mediaElement
 			flash.mediaElement.dispatchEvent(event);
 		};
 
-		// insert Flash object
 		flash.flashWrapper = _document2.default.createElement('div');
 
-		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
-		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
 			flash.options.shimScriptAccess = 'sameDomain';
 		}
 
@@ -1927,55 +1477,42 @@ var FlashMediaElementRenderer = {
 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
 
 if (hasFlash) {
-
-	/**
-  * Register media type based on URL structure if Flash is detected
-  *
-  */
 	_media.typeChecks.push(function (url) {
-
 		url = url.toLowerCase();
 
 		if (url.startsWith('rtmp')) {
-			if (url.includes('.mp3')) {
+			if (~url.indexOf('.mp3')) {
 				return 'audio/rtmp';
 			} else {
 				return 'video/rtmp';
 			}
-		} else if (url.includes('.oga') || url.includes('.ogg')) {
+		} else if (/\.og(a|g)/i.test(url)) {
 			return 'audio/ogg';
-		} else if (url.includes('.m3u8')) {
+		} else if (~url.indexOf('.m3u8')) {
 			return 'application/x-mpegURL';
-		} else if (url.includes('.mpd')) {
+		} else if (~url.indexOf('.mpd')) {
 			return 'application/dash+xml';
-		} else if (url.includes('.flv')) {
+		} else if (~url.indexOf('.flv')) {
 			return 'video/flv';
 		} else {
 			return null;
 		}
 	});
 
-	// VIDEO
 	var FlashMediaElementVideoRenderer = {
 		name: 'flash_video',
-
 		options: {
 			prefix: 'flash_video',
 			filename: 'mediaelement-flash-video.swf',
 			enablePseudoStreaming: false,
-			// start query parameter sent to server for pseudo-streaming
+
 			pseudoStreamingStartQueryParam: 'start',
-			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+
 			pseudoStreamingType: 'byte'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
+			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -1983,88 +1520,60 @@ if (hasFlash) {
 	};
 	_renderer.renderer.add(FlashMediaElementVideoRenderer);
 
-	// HLS
 	var FlashMediaElementHlsVideoRenderer = {
 		name: 'flash_hls',
-
 		options: {
 			prefix: 'flash_hls',
 			filename: 'mediaelement-flash-video-hls.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+			return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
 
-	// M(PEG)-DASH
 	var FlashMediaElementMdashVideoRenderer = {
 		name: 'flash_dash',
-
 		options: {
 			prefix: 'flash_dash',
 			filename: 'mediaelement-flash-video-mdash.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/dash+xml'].includes(type.toLowerCase());
+			return ~['application/dash+xml'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
 
-	// AUDIO
 	var FlashMediaElementAudioRenderer = {
 		name: 'flash_audio',
-
 		options: {
 			prefix: 'flash_audio',
 			filename: 'mediaelement-flash-audio.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/mp3'].includes(type.toLowerCase());
+			return ~['audio/mp3'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementAudioRenderer);
 
-	// AUDIO - ogg
 	var FlashMediaElementAudioOggRenderer = {
 		name: 'flash_audio_ogg',
-
 		options: {
 			prefix: 'flash_audio_ogg',
 			filename: 'mediaelement-flash-audio-ogg.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -2072,123 +1581,47 @@ if (hasFlash) {
 	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
 }
 
-},{"15":15,"16":16,"17":17,"2":2,"3":3,"4":4,"6":6,"7":7}],11:[function(_dereq_,module,exports){
+},{"15":15,"17":17,"18":18,"2":2,"3":3,"4":4,"6":6,"7":7}],11:[function(_dereq_,module,exports){
 'use strict';
 
 var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 var _constants = _dereq_(15);
 
-var _media = _dereq_(17);
+var _media = _dereq_(18);
+
+var _dom = _dereq_(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native FLV renderer
- *
- * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * Currently, it can only play files with the same origin.
- *
- * @see https://github.com/Bilibili/flv.js
- *
- */
 var NativeFlv = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an FLV source
-  * @param {Object} settings - an object with settings needed to load an FLV player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeFlv.isLoaded) {
-			NativeFlv.createInstance(settings);
-		} else {
-			NativeFlv.loadScript(settings);
-			NativeFlv.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load flv.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an FLV player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof flvjs !== 'undefined') {
-			NativeFlv.createInstance(settings);
-		} else if (!NativeFlv.isMediaStarted) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeFlv.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			NativeFlv.isMediaStarted = true;
-		}
-	},
+			NativeFlv._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js';
 
-	/**
-  * Process queue of FLV player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-		NativeFlv.isLoaded = true;
-		NativeFlv.isMediaLoaded = true;
-
-		while (NativeFlv.creationQueue.length > 0) {
-			var settings = NativeFlv.creationQueue.pop();
-			NativeFlv.createInstance(settings);
+			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeFlv.promise.then(function () {
+				NativeFlv._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of FLV player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate FLV object
-  */
-	createInstance: function createInstance(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = flvjs.createPlayer(settings.options);
 		_window2.default['__ready__' + settings.id](player);
 	}
@@ -2196,35 +1629,19 @@ var NativeFlv = {
 
 var FlvNativeRenderer = {
 	name: 'native_flv',
-
 	options: {
 		prefix: 'native_flv',
 		flv: {
-			// Special config: used to set the local path/URL of flv.js library
-			path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js',
-			// To modify more elements from FLV player,
-			// see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config
+			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js',
+
 			cors: true
 		}
 	},
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
+
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type);
+		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -2245,7 +1662,7 @@ var FlvNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (flvPlayer !== null) {
 						node[propName] = value;
 
@@ -2264,16 +1681,13 @@ var FlvNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all FLV events
 		_window2.default['__ready__' + id] = function (_flvPlayer) {
 
 			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
 
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
-
 					flvPlayer.unload();
 					flvPlayer.detachMediaElement();
 					flvPlayer.attachMediaElement(node);
@@ -2306,16 +1720,14 @@ var FlvNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		// Options that cannot be overridden
 		options.flv.type = 'flv';
 		options.flv.url = node.getAttribute('src');
 
-		NativeFlv.prepareSettings({
+		NativeFlv.load({
 			options: options.flv,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -2348,135 +1760,53 @@ var FlvNativeRenderer = {
 	}
 };
 
-/**
- * Register Native FLV type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.flv') ? 'video/flv' : null;
+	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
 });
 
 _renderer.renderer.add(FlvNativeRenderer);
 
-},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],12:[function(_dereq_,module,exports){
+},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],12:[function(_dereq_,module,exports){
 'use strict';
 
 var _window = _dereq_(3);
 
 var _window2 = _interopRequireDefault(_window);
 
-var _document = _dereq_(2);
-
-var _document2 = _interopRequireDefault(_document);
-
 var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 var _constants = _dereq_(15);
 
-var _media = _dereq_(17);
+var _media = _dereq_(18);
+
+var _dom = _dereq_(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native HLS renderer
- *
- * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client.
- * It relies on HTML5 video and MediaSource Extensions for playback.
- * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does.
- * @see https://github.com/dailymotion/hls.js
- *
- */
 var NativeHls = {
-	/**
-  * @type {Boolean}
-  */
-	isMediaStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isMediaLoaded: false,
-	/**
-  * @type {Array}
-  */
-	creationQueue: [],
-
-	/**
-  * Create a queue to prepare the loading of an HLS source
-  *
-  * @param {Object} settings - an object with settings needed to load an HLS player instance
-  */
-	prepareSettings: function prepareSettings(settings) {
-		if (NativeHls.isLoaded) {
-			NativeHls.createInstance(settings);
-		} else {
-			NativeHls.loadScript(settings);
-			NativeHls.creationQueue.push(settings);
-		}
-	},
 
-	/**
-  * Load hls.js script on the header of the document
-  *
-  * @param {Object} settings - an object with settings needed to load an HLS player instance
-  */
-	loadScript: function loadScript(settings) {
+	promise: null,
 
-		// Skip script loading since it is already loaded
+	load: function load(settings) {
 		if (typeof Hls !== 'undefined') {
-			NativeHls.createInstance(settings);
-		} else if (!NativeHls.isMediaStarted) {
-
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js';
-
-			var script = _document2.default.createElement('script'),
-			    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = settings.options.path;
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					NativeHls.mediaReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			NativeHls.isMediaStarted = true;
-		}
-	},
+			NativeHls._createPlayer(settings);
+		} else {
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js';
 
-	/**
-  * Process queue of HLS player creation
-  *
-  */
-	mediaReady: function mediaReady() {
-		NativeHls.isLoaded = true;
-		NativeHls.isMediaLoaded = true;
-
-		while (NativeHls.creationQueue.length > 0) {
-			var settings = NativeHls.creationQueue.pop();
-			NativeHls.createInstance(settings);
+			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
+			NativeHls.promise.then(function () {
+				NativeHls._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of HLS player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to instantiate HLS object
-  * @return {Hls}
-  */
-	createInstance: function createInstance(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = new Hls(settings.options);
 		_window2.default['__ready__' + settings.id](player);
 		return player;
@@ -2485,37 +1815,20 @@ var NativeHls = {
 
 var HlsNativeRenderer = {
 	name: 'native_hls',
-
 	options: {
 		prefix: 'native_hls',
 		hls: {
-			// Special config: used to set the local path/URL of hls.js library
-			path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js',
-			// To modify more elements from hls.js,
-			// see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning
+			path: 'https://cdn.jsdelivr.net/hls.js/latest/hls.min.js',
+
 			autoStartLoad: false,
 			debug: false
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var originalNode = mediaElement.originalNode,
@@ -2530,7 +1843,6 @@ var HlsNativeRenderer = {
 		options = Object.assign(options, mediaElement.options);
 		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
 
-		// WRAPPERS for PROPs
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -2540,14 +1852,14 @@ var HlsNativeRenderer = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					if (hlsPlayer !== null) {
 						node[propName] = value;
 
 						if (propName === 'src') {
 
 							hlsPlayer.destroy();
-							hlsPlayer = NativeHls.createInstance({
+							hlsPlayer = NativeHls._createPlayer({
 								options: options.hls,
 								id: id
 							});
@@ -2564,7 +1876,6 @@ var HlsNativeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// Initial method to register all HLS events
 		_window2.default['__ready__' + id] = function (_hlsPlayer) {
 
 			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
@@ -2572,9 +1883,7 @@ var HlsNativeRenderer = {
 			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 			    hlsEvents = Hls.Events,
 			    assignEvents = function assignEvents(eventName) {
-
 				if (eventName === 'loadedmetadata') {
-
 					var url = mediaElement.originalNode.src;
 					hlsPlayer.detachMedia();
 					hlsPlayer.loadSource(url);
@@ -2582,7 +1891,6 @@ var HlsNativeRenderer = {
 				}
 
 				node.addEventListener(eventName, function (e) {
-					// copy event
 					var event = (0, _general.createEvent)(e.type, mediaElement);
 					mediaElement.dispatchEvent(event);
 				});
@@ -2592,16 +1900,6 @@ var HlsNativeRenderer = {
 				assignEvents(events[_i]);
 			}
 
-			/**
-    * Custom HLS events
-    *
-    * These events can be attached to the original node using addEventListener and the name of the event,
-    * not using Hls.Events object
-    * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js
-    * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js
-    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events
-    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors
-    */
 			var recoverDecodingErrorDate = void 0,
 			    recoverSwapAudioCodecDate = void 0;
 			var assignHlsEvents = function assignHlsEvents(e, data) {
@@ -2612,7 +1910,6 @@ var HlsNativeRenderer = {
 				if (e === 'hlsError') {
 					console.warn(e, data);
 
-					// borrowed from http://dailymotion.github.io/hls.js/demo/
 					if (data.fatal) {
 						switch (data.type) {
 							case 'mediaError':
@@ -2635,7 +1932,6 @@ var HlsNativeRenderer = {
 							default:
 								hlsPlayer.destroy();
 								break;
-
 						}
 					}
 				}
@@ -2677,12 +1973,11 @@ var HlsNativeRenderer = {
 		originalNode.autoplay = false;
 		originalNode.style.display = 'none';
 
-		NativeHls.prepareSettings({
+		NativeHls.load({
 			options: options.hls,
 			id: id
 		});
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -2719,18 +2014,13 @@ var HlsNativeRenderer = {
 	}
 };
 
-/**
- * Register Native HLS type based on URL structure
- *
- */
 _media.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('.m3u8') ? 'application/x-mpegURL' : null;
+	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
 });
 
 _renderer.renderer.add(HlsNativeRenderer);
 
-},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],13:[function(_dereq_,module,exports){
+},{"15":15,"16":16,"17":17,"18":18,"3":3,"6":6,"7":7}],13:[function(_dereq_,module,exports){
 'use strict';
 
 var _window = _dereq_(3);
@@ -2747,60 +2037,37 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 var _constants = _dereq_(15);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native HTML5 Renderer
- *
- * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
- */
 var HtmlMediaElement = {
-
 	name: 'html5',
-
 	options: {
 		prefix: 'html5'
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {String}
-  */
 	canPlayType: function canPlayType(type) {
 
 		var mediaElement = _document2.default.createElement('video');
 
-		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
-		// also consider URLs that might have obfuscated URLs
-		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+		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) {
 			return 'yes';
 		} else if (mediaElement.canPlayType) {
-			return mediaElement.canPlayType(type).replace(/no/, '');
+			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
 		} else {
 			return '';
 		}
 	},
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
+
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var id = mediaElement.id + '_' + options.prefix;
 
 		var node = null;
 
-		// CREATE NODE
 		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
 			node = _document2.default.createElement('audio');
 			mediaElement.appendChild(node);
@@ -2810,7 +2077,6 @@ var HtmlMediaElement = {
 
 		node.setAttribute('id', id);
 
-		// WRAPPERS for PROPs
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -2820,7 +2086,7 @@ var HtmlMediaElement = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					node[propName] = value;
 				}
 			};
@@ -2832,10 +2098,7 @@ var HtmlMediaElement = {
 
 		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 		    assignEvents = function assignEvents(eventName) {
-
 			node.addEventListener(eventName, function (e) {
-				// copy event
-
 				var event = (0, _general.createEvent)(e.type, mediaElement);
 				mediaElement.dispatchEvent(event);
 			});
@@ -2845,7 +2108,6 @@ var HtmlMediaElement = {
 			assignEvents(events[_i]);
 		}
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -2884,7 +2146,7 @@ _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaE
 
 _renderer.renderer.add(HtmlMediaElement);
 
-},{"15":15,"16":16,"2":2,"3":3,"6":6,"7":7}],14:[function(_dereq_,module,exports){
+},{"15":15,"17":17,"2":2,"3":3,"6":6,"7":7}],14:[function(_dereq_,module,exports){
 'use strict';
 
 var _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; };
@@ -2903,42 +2165,22 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 var _renderer = _dereq_(7);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
+
+var _media = _dereq_(18);
 
-var _media = _dereq_(17);
+var _dom = _dereq_(16);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * YouTube renderer
- *
- * Uses <iframe> approach and uses YouTube API to manipulate it.
- * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event,
- * so it doesn't work - not sure if Google problem or not.
- * @see https://developers.google.com/youtube/iframe_api_reference
- */
 var YouTubeApi = {
-	/**
-  * @type {Boolean}
-  */
 	isIframeStarted: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isIframeLoaded: false,
-	/**
-  * @type {Array}
-  */
+
 	iframeQueue: [],
 
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	enqueueIframe: function enqueueIframe(settings) {
-
-		// Check whether YouTube API is already loaded.
 		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
 
 		if (YouTubeApi.isLoaded) {
@@ -2949,24 +2191,13 @@ var YouTubeApi = {
 		}
 	},
 
-	/**
-  * Load YouTube API script on the header of the document
-  *
-  */
 	loadIframeApi: function loadIframeApi() {
 		if (!YouTubeApi.isIframeStarted) {
-			var tag = _document2.default.createElement('script');
-			tag.src = '//www.youtube.com/player_api';
-			var firstScriptTag = _document2.default.getElementsByTagName('script')[0];
-			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+			(0, _dom.loadScript)('https://www.youtube.com/player_api');
 			YouTubeApi.isIframeStarted = true;
 		}
 	},
 
-	/**
-  * Process queue of YouTube <iframe> element creation
-  *
-  */
 	iFrameReady: function iFrameReady() {
 
 		YouTubeApi.isLoaded = true;
@@ -2978,35 +2209,17 @@ var YouTubeApi = {
 		}
 	},
 
-	/**
-  * Create a new instance of YouTube API player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	createIframe: function createIframe(settings) {
 		return new YT.Player(settings.containerId, settings);
 	},
 
-	/**
-  * Extract ID from YouTube's URL to be loaded through API
-  * Valid URL format(s):
-  * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  * - http://www.youtube.com/v/VIDEO_ID?version=3
-  * - http://youtu.be/Djd6tPrxc08
-  * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  *
-  * @param {String} url
-  * @return {string}
-  */
 	getYouTubeId: function getYouTubeId(url) {
 
 		var youTubeId = '';
 
 		if (url.indexOf('?') > 0) {
-			// assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
 			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
 
-			// if it's http://www.youtube.com/v/VIDEO_ID?version=3
 			if (youTubeId === '') {
 				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
 			}
@@ -3017,12 +2230,6 @@ var YouTubeApi = {
 		return youTubeId;
 	},
 
-	/**
-  * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
-  *
-  * @param {String} url
-  * @returns {string}
-  */
 	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -3045,13 +2252,6 @@ var YouTubeApi = {
 		return youTubeId;
 	},
 
-	/**
-  * Get ID from URL with formats
-  *  - http://www.youtube.com/v/VIDEO_ID?version=3
-  *  - http://youtu.be/Djd6tPrxc08
-  * @param {String} url
-  * @return {?String}
-  */
 	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -3063,13 +2263,8 @@ var YouTubeApi = {
 		return url.substring(url.lastIndexOf('/') + 1);
 	},
 
-	/**
-  * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3
-  * @param {String} url
-  * @return {?String}
-  */
 	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
-		if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) {
+		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
 			return url;
 		}
 
@@ -3084,12 +2279,7 @@ var YouTubeIframeRenderer = {
 
 	options: {
 		prefix: 'youtube_iframe',
-		/**
-   * Custom configuration for YouTube player
-   *
-   * @see https://developers.google.com/youtube/player_parameters#Parameters
-   * @type {Object}
-   */
+
 		youtube: {
 			autoplay: 0,
 			controls: 0,
@@ -3102,32 +2292,17 @@ var YouTubeIframeRenderer = {
 			showinfo: 0,
 			start: 0,
 			iv_load_policy: 3,
-			// custom to inject `-nocookie` element in URL
+
 			nocookie: false
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/youtube', 'video/x-youtube'].includes(type);
+		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
-		// API objects
 		var youtube = {},
 		    apiStack = [],
 		    readyState = 4;
@@ -3142,39 +2317,29 @@ var YouTubeIframeRenderer = {
 		youtube.id = mediaElement.id + '_' + options.prefix;
 		youtube.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
-			// add to flash state that we will store
-
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
 			youtube['get' + capName] = function () {
 				if (youTubeApi !== null) {
 					var value = null;
 
-					// figure out how to get youtube dta here
 					switch (propName) {
 						case 'currentTime':
 							return youTubeApi.getCurrentTime();
-
 						case 'duration':
 							return youTubeApi.getDuration();
-
 						case 'volume':
 							volume = youTubeApi.getVolume() / 100;
 							return volume;
-
 						case 'paused':
 							return paused;
-
 						case 'ended':
 							return ended;
-
 						case 'muted':
 							return youTubeApi.isMuted();
-
 						case 'buffered':
 							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
 							    duration = youTubeApi.getDuration();
@@ -3189,7 +2354,6 @@ var YouTubeIframeRenderer = {
 							};
 						case 'src':
 							return youTubeApi.getVideoUrl();
-
 						case 'readyState':
 							return readyState;
 					}
@@ -3201,12 +2365,8 @@ var YouTubeIframeRenderer = {
 			};
 
 			youtube['set' + capName] = function (value) {
-
 				if (youTubeApi !== null) {
-
-					// do something
 					switch (propName) {
-
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src,
 							    _videoId = YouTubeApi.getYouTubeId(url);
@@ -3217,11 +2377,9 @@ var YouTubeIframeRenderer = {
 								youTubeApi.cueVideoById(_videoId);
 							}
 							break;
-
 						case 'currentTime':
 							youTubeApi.seekTo(value);
 							break;
-
 						case 'muted':
 							if (value) {
 								youTubeApi.mute();
@@ -3233,7 +2391,6 @@ var YouTubeIframeRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'volume':
 							volume = value;
 							youTubeApi.setVolume(value * 100);
@@ -3246,13 +2403,11 @@ var YouTubeIframeRenderer = {
 							var event = (0, _general.createEvent)('canplay', youtube);
 							mediaElement.dispatchEvent(event);
 							break;
-
 						default:
 							
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -3262,16 +2417,10 @@ var YouTubeIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			youtube[methodName] = function () {
-
 				if (youTubeApi !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							paused = false;
@@ -3281,7 +2430,6 @@ var YouTubeIframeRenderer = {
 							return youTubeApi.pauseVideo();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -3293,11 +2441,9 @@ var YouTubeIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// CREATE YouTube
 		var youtubeContainer = _document2.default.createElement('div');
 		youtubeContainer.id = youtube.id;
 
-		// If `nocookie` feature was enabled, modify original URL
 		if (youtube.options.youtube.nocookie) {
 			mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src));
 		}
@@ -3306,8 +2452,8 @@ var YouTubeIframeRenderer = {
 		mediaElement.originalNode.style.display = 'none';
 
 		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
-		    height = isAudio ? '0' : mediaElement.originalNode.height,
-		    width = isAudio ? '0' : mediaElement.originalNode.width,
+		    height = isAudio ? '1' : mediaElement.originalNode.height,
+		    width = isAudio ? '1' : mediaElement.originalNode.width,
 		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
 		    youtubeSettings = {
 			id: youtube.id,
@@ -3336,7 +2482,6 @@ var YouTubeIframeRenderer = {
 						ended: false
 					};
 
-					// do call stack
 					if (apiStack.length) {
 						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 
@@ -3353,7 +2498,6 @@ var YouTubeIframeRenderer = {
 						}
 					}
 
-					// a few more events
 					youTubeIframe = youTubeApi.getIframe();
 
 					var events = ['mouseover', 'mouseout'],
@@ -3367,7 +2511,6 @@ var YouTubeIframeRenderer = {
 						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
 					}
 
-					// send init events
 					var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
 
 					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
@@ -3376,62 +2519,43 @@ var YouTubeIframeRenderer = {
 					}
 				},
 				onStateChange: function onStateChange(e) {
-
-					// translate events
 					var events = [];
 
 					switch (e.data) {
 						case -1:
-							// not started
 							events = ['loadedmetadata'];
 							paused = true;
 							ended = false;
 							break;
-
 						case 0:
-							// YT.PlayerState.ENDED
 							events = ['ended'];
 							paused = false;
 							ended = true;
-
 							youtube.stopInterval();
 							break;
-
 						case 1:
-							// YT.PlayerState.PLAYING
 							events = ['play', 'playing'];
 							paused = false;
 							ended = false;
-
 							youtube.startInterval();
-
 							break;
-
 						case 2:
-							// YT.PlayerState.PAUSED
 							events = ['pause'];
 							paused = true;
 							ended = false;
-
 							youtube.stopInterval();
 							break;
-
 						case 3:
-							// YT.PlayerState.BUFFERING
 							events = ['progress'];
 							ended = false;
-
 							break;
 						case 5:
-							// YT.PlayerState.CUED
 							events = ['loadeddata', 'loadedmetadata', 'canplay'];
 							paused = true;
 							ended = false;
-
 							break;
 					}
 
-					// send events up
 					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
 						var event = (0, _general.createEvent)(events[_i5], youtube);
 						mediaElement.dispatchEvent(event);
@@ -3445,12 +2569,10 @@ var YouTubeIframeRenderer = {
 			}
 		};
 
-		// The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio
 		if (isAudio) {
 			youtubeSettings.playerVars.playsinline = 1;
 		}
 
-		// send it off for async loading and creation
 		YouTubeApi.enqueueIframe(youtubeSettings);
 
 		youtube.onEvent = function (eventName, player, _youTubeState) {
@@ -3482,7 +2604,6 @@ var YouTubeIframeRenderer = {
 		youtube.interval = null;
 
 		youtube.startInterval = function () {
-			// create timer
 			youtube.interval = setInterval(function () {
 
 				var event = (0, _general.createEvent)('timeupdate', youtube);
@@ -3506,14 +2627,14 @@ if (_window2.default.postMessage && _typeof(_window2.default.addEventListener))
 	};
 
 	_media.typeChecks.push(function (url) {
-		url = url.toLowerCase();
-		return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null;
+		return (/\/\/(www\.youtube|youtu\.be)/i.test(url) ? 'video/x-youtube' : null
+		);
 	});
 
 	_renderer.renderer.add(YouTubeIframeRenderer);
 }
 
-},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],15:[function(_dereq_,module,exports){
+},{"16":16,"17":17,"18":18,"2":2,"3":3,"6":6,"7":7}],15:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -3537,18 +2658,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var NAV = exports.NAV = _window2.default.navigator;
 var UA = exports.UA = NAV.userAgent.toLowerCase();
-
-var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
-var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA);
+var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA);
 var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
-var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
-var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
+var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
-var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
-var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
-var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
-var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
-
+var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
+var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
+var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	var element = _document2.default.createElement('x'),
@@ -3567,7 +2686,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	return !!supports;
 }();
 
-// for IE
 var html5Elements = ['source', 'track', 'audio', 'video'];
 var video = void 0;
 
@@ -3575,28 +2693,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) {
 	video = _document2.default.createElement(html5Elements[i]);
 }
 
-// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
-var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
-
-// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
 
-// iOS
 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
 
-// W3C
 var hasNativeFullscreen = video.requestFullscreen !== undefined;
 
-// OS X 10.5 can't do this even if it says it can :(
-if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
 	hasNativeFullscreen = false;
 	hasiOSFullScreen = false;
 }
 
-// webkit/firefox/IE11+
 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
-
 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
 var fullScreenEventName = '';
@@ -3604,7 +2714,6 @@ var isFullScreen = void 0,
     requestFullScreen = void 0,
     cancelFullScreen = void 0;
 
-// Enabled?
 if (hasMozNativeFullScreen) {
 	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
 } else if (hasMsNativeFullScreen) {
@@ -3616,7 +2725,6 @@ if (IS_CHROME) {
 }
 
 if (hasTrueNativeFullScreen) {
-
 	if (hasWebkitNativeFullScreen) {
 		fullScreenEventName = 'webkitfullscreenchange';
 	} else if (hasMozNativeFullScreen) {
@@ -3636,7 +2744,6 @@ if (hasTrueNativeFullScreen) {
 	};
 
 	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
-
 		if (hasWebkitNativeFullScreen) {
 			el.webkitRequestFullScreen();
 		} else if (hasMozNativeFullScreen) {
@@ -3665,7 +2772,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
-
 exports.isFullScreen = isFullScreen;
 exports.requestFullScreen = requestFullScreen;
 exports.cancelFullScreen = cancelFullScreen;
@@ -3684,7 +2790,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI;
 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
 _mejs2.default.Features.hasMSE = HAS_MSE;
 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
-
 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
@@ -3701,6 +2806,261 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
 },{"2":2,"3":3,"6":6}],16:[function(_dereq_,module,exports){
 'use strict';
 
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.removeClass = exports.addClass = exports.hasClass = undefined;
+exports.loadScript = loadScript;
+exports.offset = offset;
+exports.toggleClass = toggleClass;
+exports.fadeOut = fadeOut;
+exports.fadeIn = fadeIn;
+exports.siblings = siblings;
+exports.visible = visible;
+exports.ajax = ajax;
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function TinyPromise(handler) {
+	var thens = [];
+	var state = -1;
+	var result = void 0;
+	var then = void 0;
+
+	function done(value) {
+		for (result = value; then = thens.shift();) {
+			then[state] && then[state](result);
+		}
+	}
+
+	handler(function (value) {
+		return done(value, state = 0);
+	}, function (value) {
+		return done(value, state = 1);
+	});
+
+	return {
+		then: function then() {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			~state ? args[state] && args[state](result) : thens.push(args);
+		}
+	};
+}
+
+function loadScript(url) {
+	return TinyPromise(function (resolve, reject) {
+		var script = _document2.default.createElement('script');
+		script.src = url;
+		script.async = true;
+		script.onload = function () {
+			script.remove();
+			resolve();
+		};
+		script.onerror = function () {
+			script.remove();
+			reject();
+		};
+		_document2.default.head.appendChild(script);
+	});
+}
+
+function offset(el) {
+	var rect = el.getBoundingClientRect(),
+	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
+	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
+	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
+}
+
+var hasClassMethod = void 0,
+    addClassMethod = void 0,
+    removeClassMethod = void 0;
+
+if ('classList' in _document2.default.documentElement) {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return el.classList !== undefined && el.classList.contains(className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		return el.classList.add(className);
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		return el.classList.remove(className);
+	};
+} else {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return new RegExp('\\b' + className + '\\b').test(el.className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		if (!hasClass(el, className)) {
+			el.className += ' ' + className;
+		}
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
+	};
+}
+
+var hasClass = exports.hasClass = hasClassMethod;
+var addClass = exports.addClass = addClassMethod;
+var removeClass = exports.removeClass = removeClassMethod;
+
+function toggleClass(el, className) {
+	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
+}
+
+function fadeOut(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
+
+	if (!el.style.opacity) {
+		el.style.opacity = 1;
+	}
+
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		var opacity = parseFloat(1 - progress / duration, 2);
+		el.style.opacity = opacity < 0 ? 0 : opacity;
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
+			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
+
+function fadeIn(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
+
+	if (!el.style.opacity) {
+		el.style.opacity = 0;
+	}
+
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		var opacity = parseFloat(progress / duration, 2);
+		el.style.opacity = opacity > 1 ? 1 : opacity;
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
+			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
+
+function siblings(el, filter) {
+	var siblings = [];
+	el = el.parentNode.firstChild;
+	do {
+		if (!filter || filter(el)) {
+			siblings.push(el);
+		}
+	} while (el = el.nextSibling);
+	return siblings;
+}
+
+function visible(elem) {
+	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+}
+
+function ajax(url, dataType, success, error) {
+	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
+
+	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
+	    completed = false,
+	    accept = '*/'.concat('*');
+
+	switch (dataType) {
+		case 'text':
+			type = 'text/plain';
+			break;
+		case 'json':
+			type = 'application/json, text/javascript';
+			break;
+		case 'html':
+			type = 'text/html';
+			break;
+		case 'xml':
+			type = 'application/xml, text/xml';
+			break;
+	}
+
+	if (type !== 'application/x-www-form-urlencoded') {
+		accept = type + ', */*; q=0.01';
+	}
+
+	if (xhr) {
+		xhr.open('GET', url, true);
+		xhr.setRequestHeader('Accept', accept);
+		xhr.onreadystatechange = function () {
+			if (completed) {
+				return;
+			}
+
+			if (xhr.readyState === 4) {
+				if (xhr.status === 200) {
+					completed = true;
+					var data = void 0;
+					switch (dataType) {
+						case 'json':
+							data = JSON.parse(xhr.responseText);
+							break;
+						case 'xml':
+							data = xhr.responseXML;
+							break;
+						default:
+							data = xhr.responseText;
+							break;
+					}
+					success(data);
+				} else if (typeof error === 'function') {
+					error(xhr.status);
+				}
+			}
+		};
+
+		xhr.send();
+	}
+}
+
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.offset = offset;
+_mejs2.default.Utils.hasClass = hasClass;
+_mejs2.default.Utils.addClass = addClass;
+_mejs2.default.Utils.removeClass = removeClass;
+_mejs2.default.Utils.toggleClass = toggleClass;
+_mejs2.default.Utils.fadeIn = fadeIn;
+_mejs2.default.Utils.fadeOut = fadeOut;
+_mejs2.default.Utils.siblings = siblings;
+_mejs2.default.Utils.visible = visible;
+_mejs2.default.Utils.ajax = ajax;
+_mejs2.default.Utils.loadScript = loadScript;
+
+},{"2":2,"3":3,"6":6}],17:[function(_dereq_,module,exports){
+'use strict';
+
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
@@ -3718,11 +3078,6 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- *
- * @param {String} input
- * @return {string}
- */
 function escapeHTML(input) {
 
 	if (typeof input !== 'string') {
@@ -3741,7 +3096,6 @@ function escapeHTML(input) {
 	});
 }
 
-// taken from underscore
 function debounce(func, wait) {
 	var _this = this,
 	    _arguments = arguments;
@@ -3777,28 +3131,13 @@ function debounce(func, wait) {
 	};
 }
 
-/**
- * Determine if an object contains any elements
- *
- * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
- * @param {Object} instance
- * @return {Boolean}
- */
 function isObjectEmpty(instance) {
 	return Object.getOwnPropertyNames(instance).length <= 0;
 }
 
-/**
- * Group a string of events into `document` (d) and `window` (w) events
- *
- * @param {String} events  List of space separated events
- * @param {String} id      Namespace appended to events
- * @return {{d: Array, w: Array}}
- */
 function splitEvents(events, id) {
-	// Global events
 	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
-	// add player ID as an event namespace so it's easier to unbind them all later
+
 	var ret = { d: [], w: [] };
 	(events || '').split(' ').forEach(function (v) {
 		var eventName = '' + v + (id ? '.' + id : '');
@@ -3816,26 +3155,20 @@ function splitEvents(events, id) {
 	return ret;
 }
 
-/**
- *
- * @param {string} eventName
- * @param {*} target
- * @return {Event|Object}
- */
 function createEvent(eventName, target) {
 
 	if (typeof eventName !== 'string') {
 		throw new Error('Event name must be a string');
 	}
 
-	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
 	    detail = {
 		target: target
 	};
 
 	if (eventFrags !== null) {
-		eventName = eventFrags[0];
-		detail.namespace = eventFrags[1];
+		eventName = eventFrags[1];
+		detail.namespace = eventFrags[2];
 	}
 
 	return new window.CustomEvent(eventName, {
@@ -3843,23 +3176,11 @@ function createEvent(eventName, target) {
 	});
 }
 
-/**
- * Returns true if targetNode appears after sourceNode in the dom.
- * @param {HTMLElement} sourceNode - the source node for comparison
- * @param {HTMLElement} targetNode - the node to compare against sourceNode
- */
 function isNodeAfter(sourceNode, targetNode) {
 
-	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
-	);
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
 }
 
-/**
- * Determines if a value is a string
- *
- * @param {*} value to check
- * @returns {Boolean} True if a value is a string
- */
 function isString(value) {
 	return typeof value === 'string';
 }
@@ -3873,7 +3194,7 @@ _mejs2.default.Utils.createEvent = createEvent;
 _mejs2.default.Utils.isNodeAfter = isNodeAfter;
 _mejs2.default.Utils.isString = isString;
 
-},{"6":6}],17:[function(_dereq_,module,exports){
+},{"6":6}],18:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -3891,17 +3212,12 @@ var _mejs = _dereq_(6);
 
 var _mejs2 = _interopRequireDefault(_mejs);
 
-var _general = _dereq_(16);
+var _general = _dereq_(17);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 var typeChecks = exports.typeChecks = [];
 
-/**
- *
- * @param {String} url
- * @return {String}
- */
 function absolutizeUrl(url) {
 
 	if (typeof url !== 'string') {
@@ -3913,42 +3229,21 @@ function absolutizeUrl(url) {
 	return el.firstChild.href;
 }
 
-/**
- * Get the format of a specific media, based on URL and additionally its mime type
- *
- * @param {String} url
- * @param {String} type
- * @return {String}
- */
 function formatType(url) {
 	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
 	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
 }
 
-/**
- * Return the mime part of the type in case the attribute contains the codec
- * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
- *
- * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
- * @param {String} type
- * @return {String}
- */
 function getMimeFromType(type) {
 
 	if (typeof type !== 'string') {
 		throw new Error('`type` argument must be a string');
 	}
 
-	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
 }
 
-/**
- * Get the type of media based on URL structure
- *
- * @param {String} url
- * @return {String}
- */
 function getTypeFromFile(url) {
 
 	if (typeof url !== 'string') {
@@ -3963,17 +3258,15 @@ function getTypeFromFile(url) {
 		}
 	}
 
-	// the do standard extension check
 	var ext = getExtension(url),
 	    normalizedExt = normalizeExtension(ext);
 
 	var mime = 'video/mp4';
 
-	// Obtain correct MIME types
 	if (normalizedExt) {
-		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
 			mime = 'video/' + normalizedExt;
-		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
 			mime = 'audio/' + normalizedExt;
 		}
 	}
@@ -3981,12 +3274,6 @@ function getTypeFromFile(url) {
 	return mime;
 }
 
-/**
- * Get media file extension from URL
- *
- * @param {String} url
- * @return {String}
- */
 function getExtension(url) {
 
 	if (typeof url !== 'string') {
@@ -3995,16 +3282,9 @@ function getExtension(url) {
 
 	var baseUrl = url.split('?')[0],
 	    baseName = baseUrl.split('\\').pop().split('/').pop();
-
-	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
 }
 
-/**
- * Get standard extension of a media file
- *
- * @param {String} extension
- * @return {String}
- */
 function normalizeExtension(extension) {
 
 	if (typeof extension !== 'string') {
@@ -4037,7 +3317,7 @@ _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
 _mejs2.default.Utils.getExtension = getExtension;
 _mejs2.default.Utils.normalizeExtension = normalizeExtension;
 
-},{"16":16,"6":6}],18:[function(_dereq_,module,exports){
+},{"17":17,"6":6}],19:[function(_dereq_,module,exports){
 'use strict';
 
 var _document = _dereq_(2);
@@ -4046,15 +3326,6 @@ var _document2 = _interopRequireDefault(_document);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Polyfill
- *
- * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
- * of polyfills provided by Babel.
- */
-
-// ChildNode.remove polyfill
-// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
 (function (arr) {
 	arr.forEach(function (item) {
 		if (item.hasOwnProperty('remove')) {
@@ -4071,11 +3342,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	});
 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-// CustomEvent polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
 (function () {
 
-	if (typeof window.CustomEvent === "function") return false;
+	if (typeof window.CustomEvent === 'function') {
+		return false;
+	}
 
 	function CustomEvent(event, params) {
 		params = params || { bubbles: false, cancelable: false, detail: undefined };
@@ -4085,18 +3356,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	}
 
 	CustomEvent.prototype = window.Event.prototype;
-
 	window.CustomEvent = CustomEvent;
 })();
 
-// Object.assign polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
 if (typeof Object.assign !== 'function') {
 	Object.assign = function (target) {
-		// .length of function is 2
 
 		if (target === null || target === undefined) {
-			// TypeError if undefined or null
 			throw new TypeError('Cannot convert undefined or null to object');
 		}
 
@@ -4106,9 +3372,7 @@ if (typeof Object.assign !== 'function') {
 			var nextSource = arguments[index];
 
 			if (nextSource !== null) {
-				// Skip over if undefined or null
 				for (var nextKey in nextSource) {
-					// Avoid bugs when hasOwnProperty is shadowed
 					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
 						to[nextKey] = nextSource[nextKey];
 					}
@@ -4119,76 +3383,6 @@ if (typeof Object.assign !== 'function') {
 	};
 }
 
-// Array.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
-if (!Array.prototype.includes) {
-	Object.defineProperty(Array.prototype, 'includes', {
-		value: function value(searchElement, fromIndex) {
-
-			// 1. const O be ? ToObject(this value).
-			if (this === null || this === undefined) {
-				throw new TypeError('"this" is null or not defined');
-			}
-
-			var o = Object(this);
-
-			// 2. const len be ? ToLength(? Get(O, "length")).
-			var len = o.length >>> 0;
-
-			// 3. If len is 0, return false.
-			if (len === 0) {
-				return false;
-			}
-
-			// 4. const n be ? ToInteger(fromIndex).
-			//    (If fromIndex is undefined, this step produces the value 0.)
-			var n = fromIndex | 0;
-
-			// 5. If n ≥ 0, then
-			//  a. const k be n.
-			// 6. Else n < 0,
-			//  a. const k be len + n.
-			//  b. If k < 0, const k be 0.
-			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-			// 7. Repeat, while k < len
-			while (k < len) {
-				// a. const elementK be the result of ? Get(O, ! ToString(k)).
-				// b. If SameValueZero(searchElement, elementK) is true, return true.
-				// c. Increase k by 1.
-				// NOTE: === provides the correct "SameValueZero" comparison needed here.
-				if (o[k] === searchElement) {
-					return true;
-				}
-				k++;
-			}
-
-			// 8. Return false
-			return false;
-		}
-	});
-}
-
-// String.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
-if (!String.prototype.includes) {
-	String.prototype.includes = function (search, start) {
-		'use strict';
-
-		if (typeof start !== 'number') {
-			start = 0;
-		}
-
-		if (start + search.length > this.length) {
-			return false;
-		} else {
-			return this.indexOf(search, start) !== -1;
-		}
-	};
-}
-
-// String.startsWith polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
 if (!String.prototype.startsWith) {
 	String.prototype.startsWith = function (searchString, position) {
 		position = position || 0;
@@ -4196,8 +3390,6 @@ if (!String.prototype.startsWith) {
 	};
 }
 
-// Element.matches polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
 if (!Element.prototype.matches) {
 	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -4207,8 +3399,6 @@ if (!Element.prototype.matches) {
 	};
 }
 
-// Element.closest polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
 if (window.Element && !Element.prototype.closest) {
 	Element.prototype.closest = function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -4222,13 +3412,6 @@ if (window.Element && !Element.prototype.closest) {
 	};
 }
 
-// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
-// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
-
-// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
-
-// MIT license
-
 (function () {
 	var lastTime = 0;
 	var vendors = ['ms', 'moz', 'webkit', 'o'];
@@ -4252,14 +3435,12 @@ if (window.Element && !Element.prototype.closest) {
 	};
 })();
 
-// Javascript workaround for FF iframe `getComputedStyle` bug
-// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009
 if (/firefox/i.test(navigator.userAgent)) {
-	window.oldGetComputedStyle = window.getComputedStyle;
+	window.mediaElementJsOldGetComputedStyle = window.getComputedStyle;
 	window.getComputedStyle = function (el, pseudoEl) {
-		var t = window.oldGetComputedStyle(el, pseudoEl);
+		var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl);
 		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
 	};
 }
 
-},{"2":2}]},{},[18,5,4,8,13,10,9,11,12,14]);
+},{"2":2}]},{},[19,5,4,8,13,10,9,11,12,14]);
diff --git a/lib/mejs/mediaelement.min.js b/lib/mejs/mediaelement.min.js
index 8a6cc1a6adef6bfead7edbce220f76769e7bf779..1e41c707c4e42b5c0699ec367819f34d4188ba49 100644
--- a/lib/mejs/mediaelement.min.js
+++ b/lib/mejs/mediaelement.min.js
@@ -8,27 +8,5 @@
  * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- *//*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(8),i=a(16),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{16:16,6:6,8:8}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(16),m=a(17),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{16:16,17:17,2:2,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
  */
-Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(17),n=a(15),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof dashjs)o.createInstance(a);else if(!o.isScriptLoaded){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;i=d.cloneNode(!0),b=Object.assign(b,a.options);for(var n=j["default"].html5media.properties,p=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);i["get"+b]=function(){return null!==m?i[a]:null},i["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&("src"===a&&(m.attachSource(b),h&&i.play()),i[a]=b)}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=m=c,m.getDebug().setLogToBrowserConsole(b.dash.debug),m.setAutoPlay(g&&"auto"===g||h),m.setScheduleWhilePaused(g&&"auto"===g||h);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&m.initialize(i,i.src,!1),i.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},k=0,n=d.length;n>k;k++)f(d[k]);var o=function(b){var c=l.createEvent(b.type,i);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var p in e)e.hasOwnProperty(p)&&m.on(e[p],o)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){i.setAttribute("src",c[s].src);break}i.setAttribute("id",e),d.parentNode.insertBefore(i,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),i.setSize=function(a,b){return i.style.width=a+"px",i.style.height=b+"px",i},i.hide=function(){return i.pause(),i.style.display="none",i},i.show=function(){return i.style.display="",i};var u=l.createEvent("rendererready",i);return a.dispatchEvent(u),i}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(16),p=a(15),q=a(17),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{15:15,16:16,17:17,2:2,3:3,4:4,6:6,7:7}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof flvjs)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,h=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var i=j["default"].html5media.properties,m=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==h?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==h&&(g[a]=b,"src"===a&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()))}},n=0,p=i.length;p>n;n++)m(i[n]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=h=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(h.unload(),h.detachMediaElement(),h.attachMediaElement(g),h.load()),g.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var q=0,r=c.length;r>q;q++)if(k.renderer.renderers[b.prefix].canPlayType(c[q].type)){g.setAttribute("src",c[q].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==h&&h.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==h&&h.destroy()};var s=l.createEvent("rendererready",g);return a.dispatchEvent(s),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){if("undefined"!=typeof Hls)o.createInstance(a);else if(!o.isMediaStarted){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),h=d.autoplay,i=null,m=null;m=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||h;for(var n=j["default"].html5media.properties,p=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+c]=function(){return null!==i?m[a]:null},m["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(m[a]=c,"src"===a&&(i.destroy(),i=o.createInstance({options:b.hls,id:e}),i.loadSource(c),i.attachMedia(m)))}},q=0,r=n.length;r>q;q++)p(n[q]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){var c=a.originalNode.src;i.detachMedia(),i.loadSource(c),i.attachMedia(m)}m.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var h=void 0,k=void 0,n=function(b,c){var d=l.createEvent(b,m);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!h||e-h>3e3?(h=(new Date).getTime(),i.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),i.swapAudioCodec(),i.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:i.destroy()}};for(var o in d)d.hasOwnProperty(o)&&i.on(d[o],n)},c&&c.length>0)for(var s=0,t=c.length;t>s;s++)if(k.renderer.renderers[b.prefix].canPlayType(c[s].type)){m.setAttribute("src",c[s].src);break}"auto"===g||h||(m.addEventListener("play",function(){null!==i&&i.startLoad()}),m.addEventListener("pause",function(){null!==i&&i.stopLoad()})),m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==i&&i.destroy()},m.stop=function(){null!==i&&i.stopLoad()};var u=l.createEvent("rendererready",m);return a.dispatchEvent(u),m}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{15:15,16:16,2:2,3:3,6:6,7:7}],14:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(16),n=a(17),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},e=[],f=4,h=null,j=!0,l=!1,n=null,p=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var q=k["default"].html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==h){var a=null;switch(b){case"currentTime":return h.getCurrentTime();case"duration":return h.getDuration();case"volume":return p=h.getVolume()/100;case"paused":return j;case"ended":return l;case"muted":return h.isMuted();case"buffered":var c=h.getVideoLoadedFraction(),d=h.getDuration();return{start:function(){return 0},end:function(){return c*d},length:1};case"src":return h.getVideoUrl();case"readyState":return f}return a}return null},d["set"+c]=function(c){if(null!==h)switch(b){case"src":var f="string"==typeof c?c:c[0].src,g=o.getYouTubeId(f);a.originalNode.autoplay?h.loadVideoById(g):h.cueVideoById(g);break;case"currentTime":h.seekTo(c);break;case"muted":c?h.mute():h.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":p=c,h.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var i=m.createEvent("canplay",d);a.dispatchEvent(i)}else e.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=k["default"].html5media.methods,v=function(a){d[a]=function(){if(null!==h)switch(a){case"play":return j=!1,h.playVideo();case"pause":return j=!0,h.pauseVideo();case"load":return null}else e.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);var y=i["default"].createElement("div");y.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(y,a.originalNode),a.originalNode.style.display="none";var z="audio"===a.originalNode.tagName.toLowerCase(),A=z?"0":a.originalNode.height,B=z?"0":a.originalNode.width,C=o.getYouTubeId(c[0].src),D={id:d.id,containerId:y.id,videoId:C,height:A,width:B,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=h=b.target,a.youTubeState={paused:!0,ended:!1},e.length)for(var c=0,f=e.length;f>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);d["set"+j](g.value)}else"call"===g.type&&d[g.methodName]()}n=h.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},o=0,p=k.length;p>o;o++)n.addEventListener(k[o],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],j=!0,l=!1;break;case 0:c=["ended"],j=!1,l=!0,d.stopInterval();break;case 1:c=["play","playing"],j=!1,l=!1,d.startInterval();break;case 2:c=["pause"],j=!0,l=!1,d.stopInterval();break;case 3:c=["progress"],l=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],j=!0,l=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return z&&(D.playerVars.playsinline=1),o.enqueueIframe(D),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==h&&h.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),n&&(n.style.display="none")},d.show=function(){n&&(n.style.display="")},d.destroy=function(){h.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{16:16,17:17,2:2,3:3,6:6,7:7}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;
-if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(16),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{16:16,6:6}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}]},{},[18,5,4,8,13,10,9,11,12,14]);
\ No newline at end of file
+!function e(t,n,r){function a(o,l){if(!n[o]){if(!t[o]){var s="function"==typeof require&&require;if(!l&&s)return s(o,!0);if(i)return i(o,!0);var d=new Error("Cannot find module '"+o+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[o]={exports:{}};t[o][0].call(u.exports,function(e){var n=t[o][1][e];return a(n||e)},u,u.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)a(r[o]);return a}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var r=void 0!==n?n:"undefined"!=typeof window?window:{},a=e(1);if("undefined"!=typeof document)t.exports=document;else{var i=r["__GLOBAL_DOCUMENT_CACHE@4"];i||(i=r["__GLOBAL_DOCUMENT_CACHE@4"]=a),t.exports=i}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),i=e(8),o=e(17),l={lang:"en",en:i.EN};l.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");l.lang=t[0],void 0===l[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===r(t[1])?t[1]:{},l[t[0]]=(0,o.isObjectEmpty)(t[1])?i.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===r(t[1])&&(l[t[0]]=t[1])}return l.lang},l.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,a=void 0,i=l.language(),s=function(e,t,n){return"object"!==(void 0===e?"undefined":r(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==l[i]&&(n=l[i][e],null!==t&&"number"==typeof t&&(a=l[i]["mejs.plural-form"],n=s.apply(null,[n,t,a]))),!n&&l.en&&(n=l.en[e],null!==t&&"number"==typeof t&&(a=l.en["mejs.plural-form"],n=s.apply(null,[n,t,a]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,o.escapeHTML)(n)}return e},a.default.i18n=l,"undefined"!=typeof mejsL10n&&a.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=l},{17:17,6:6,8:8}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var i=r(e(3)),o=r(e(2)),l=r(e(6)),s=e(17),d=e(18),u=e(7),c=e(15),f=function e(t,n,r){var f=this;a(this,e);var m=this;r=Array.isArray(r)?r:null,m.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(m.defaults,n),m.mediaElement=o.default.createElement(n.fakeNodeName),m.mediaElement.options=n;var p=t,h=!1;if("string"==typeof t?m.mediaElement.originalNode=o.default.getElementById(t):(m.mediaElement.originalNode=t,p=t.id),p=p||"mejs_"+Math.random().toString().slice(2),void 0!==m.mediaElement.originalNode&&null!==m.mediaElement.originalNode&&m.mediaElement.appendChild){m.mediaElement.originalNode.setAttribute("id",p+"_from_mejs");var v=m.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!m.mediaElement.originalNode.getAttribute("preload")&&m.mediaElement.originalNode.setAttribute("preload","none"),m.mediaElement.originalNode.parentNode.insertBefore(m.mediaElement,m.mediaElement.originalNode),m.mediaElement.appendChild(m.mediaElement.originalNode)}m.mediaElement.id=p,m.mediaElement.renderers={},m.mediaElement.renderer=null,m.mediaElement.rendererName=null,m.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var r=n.mediaElement.renderers[e],a=null;if(void 0!==r&&null!==r)return r.show(),r.setSrc(t[0].src),n.mediaElement.renderer=r,n.mediaElement.rendererName=e,!0;for(var i=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,o=0,l=i.length;o<l;o++){var s=i[o];if(s===e){a=u.renderer.renderers[s];var d=Object.assign(a.options,n.mediaElement.options);return r=a.create(n.mediaElement,d,t),r.name=e,n.mediaElement.renderers[a.name]=r,n.mediaElement.renderer=r,n.mediaElement.rendererName=e,r.show(),!0}}return!1},m.mediaElement.setSize=function(e,t){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&m.mediaElement.renderer.setSize(e,t)},m.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=o.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=m.mediaElement.options.customError;if(!n){var r=m.mediaElement.originalNode.getAttribute("poster");r&&(n+='<img src="'+r+'" width="100%" height="100%" alt="'+l.default.i18n.t("mejs.download-file")+'">');for(var a=0,i=e.length;a<i;a++){var s=e[a];n+='<a href="'+s.src+'" data-type="'+s.type+'"><span>'+l.default.i18n.t("mejs.download-file")+": "+s.src+"</span></a>"}}t.innerHTML=n,m.mediaElement.originalNode.parentNode.insertBefore(t,m.mediaElement.originalNode),m.mediaElement.originalNode.style.display="none",h=!0};var g=l.default.html5media.properties,y=l.default.html5media.methods,E=function(e,t,n,r){var a=e[t],i=function(){return n.apply(e,[a])},o=function(t){return a=r.apply(e,[t])};Object.defineProperty(e,t,{get:i,set:o})},b=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer?m.mediaElement.renderer.getSrc():null},w=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,r=e.length;n<r;n++){var a=(0,d.absolutizeUrl)(e[n].src),i=e[n].type;t.push({src:a,type:""!==i&&null!==i&&void 0!==i||!a?i:(0,d.getTypeFromFile)(a)})}var o=u.renderer.select(t,m.mediaElement.options.renderers.length?m.mediaElement.options.renderers:[]),l=void 0;if(m.mediaElement.paused||(m.mediaElement.pause(),l=(0,s.createEvent)("pause",m.mediaElement),m.mediaElement.dispatchEvent(l)),m.mediaElement.originalNode.setAttribute("src",t[0].src||""),m.mediaElement.querySelector(".me_cannotplay")&&m.mediaElement.querySelector(".me_cannotplay").remove(),null===o)return m.mediaElement.createErrorMessage(t),l=(0,s.createEvent)("error",m.mediaElement),l.message="No renderer found",void m.mediaElement.dispatchEvent(l);m.mediaElement.changeRenderer(o.rendererName,t),void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer||((l=(0,s.createEvent)("error",m.mediaElement)).message="Error creating renderer",m.mediaElement.dispatchEvent(l),m.mediaElement.createErrorMessage(t))};E(m.mediaElement,"src",b,w),m.mediaElement.getSrc=b,m.mediaElement.setSrc=w;for(var S=0,_=g.length;S<_;S++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer?m.mediaElement.renderer["get"+t]():null},r=function(e){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&m.mediaElement.renderer["set"+t](e)};E(m.mediaElement,e,n,r),m.mediaElement["get"+t]=n,m.mediaElement["set"+t]=r}}(g[S]);for(var N=0,A=y.length;N<A;N++)!function(e){m.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];if(void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&"function"==typeof m.mediaElement.renderer[e])try{m.mediaElement.renderer[e](n)}catch(e){m.mediaElement.createErrorMessage()}return null}}(y[N]);m.mediaElement.events={},m.mediaElement.addEventListener=function(e,t){m.mediaElement.events[e]=m.mediaElement.events[e]||[],m.mediaElement.events[e].push(t)},m.mediaElement.removeEventListener=function(e,t){if(!e)return m.mediaElement.events={},!0;var n=m.mediaElement.events[e];if(!n)return!0;if(!t)return m.mediaElement.events[e]=[],!0;for(var r=0;r<n.length;r++)if(n[r]===t)return m.mediaElement.events[e].splice(r,1),!0;return!1},m.mediaElement.dispatchEvent=function(e){var t=m.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var j=function(e,t){if(l.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===i.default.location.protocol&&c.IS_IOS&&!i.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(i.default.URL||i.default.webkitURL).createObjectURL(this.response);return m.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},T=void 0;if(null!==r)T=r;else if(null!==m.mediaElement.originalNode)switch(T=[],m.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":T.push({type:"",src:m.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var F=m.mediaElement.originalNode.childNodes.length,x=m.mediaElement.originalNode.getAttribute("src");if(x){var C=m.mediaElement.originalNode,L=(0,d.formatType)(x,C.getAttribute("type"));T.push({type:L,src:j(x,L)})}for(var O=0;O<F;O++){var P=m.mediaElement.originalNode.childNodes[O];if(P.nodeType===Node.ELEMENT_NODE&&"source"===P.tagName.toLowerCase()){var I=P.getAttribute("src"),k=(0,d.formatType)(I,P.getAttribute("type"));T.push({type:k,src:j(I,k)})}}}return T.length&&(m.mediaElement.src=T),m.mediaElement.options.success&&m.mediaElement.options.success(m.mediaElement,m.mediaElement.originalNode),h&&m.mediaElement.options.error&&m.mediaElement.options.error(m.mediaElement,m.mediaElement.originalNode),m.mediaElement};i.default.MediaElement=f,n.default=f},{15:15,17:17,18:18,2:2,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),a={};a.version="4.1.1",a.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},r.default.mejs=a,n.default=a},{3:3}],7:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),l=function(){function e(){r(this,e),this.renderers={},this.order=[]}return i(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var r=[/^(html5|native)/i,/^flash/i,/iframe$/i],a=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].test(e))return t;return r.length};t.sort(function(e,t){return a(e)-a(t)})}for(var i=0,o=t.length;i<o;i++){var l=t[i],s=this.renderers[l];if(null!==s&&void 0!==s)for(var d=0,u=e.length;d<u;d++)if("function"==typeof s.canPlayType&&"string"==typeof e[d].type&&s.canPlayType(e[d].type))return{rendererName:s.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":a(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),s=n.renderer=new l;o.default.Renderers=s},{6:6}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(18),d=e(15),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof dashjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();a.default["__ready__"+e.id](t)}},f={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(e){return d.HAS_MSE&&["application/dash+xml"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=r.getAttribute("preload"),u=r.autoplay,f=null,m=null;f=r.cloneNode(!0),t=Object.assign(t,e.options);for(var p=i.default.html5media.properties,h=0,v=p.length;h<v;h++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);f["get"+t]=function(){return null!==m?f[e]:null},f["set"+t]=function(t){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==m&&("src"===e&&(m.attachSource(t),u&&f.play()),f[e]=t)}}(p[h]);if(a.default["__ready__"+s]=function(n){e.dashPlayer=m=n,m.getDebug().setLogToBrowserConsole(t.dash.debug),m.setAutoPlay(d&&"auto"===d||u),m.setScheduleWhilePaused(d&&"auto"===d||u);for(var r=i.default.html5media.events.concat(["click","mouseover","mouseout"]),a=dashjs.MediaPlayer.events,o=0,s=r.length;o<s;o++)!function(t){"loadedmetadata"===t&&m.initialize(f,f.src,!1),f.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(r[o]);var c=function(t){var n=(0,l.createEvent)(t.type,f);n.data=t,e.dispatchEvent(n),"error"===t.type.toLowerCase()&&console.error(t)};for(var p in a)a.hasOwnProperty(p)&&m.on(a[p],c)},n&&n.length>0)for(var g=0,y=n.length;g<y;g++)if(o.renderer.renderers[t.prefix].canPlayType(n[g].type)){f.setAttribute("src",n[g].src);break}f.setAttribute("id",s),r.parentNode.insertBefore(f,r),r.autoplay=!1,r.style.display="none",c.load({options:t.dash,id:s}),f.setSize=function(e,t){return f.style.width=e+"px",f.style.height=t+"px",f},f.hide=function(){return f.pause(),f.style.display="none",f},f.show=function(){return f.style.display="",f};var E=(0,l.createEvent)("rendererready",f);return e.dispatchEvent(E),f}};s.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=r(e(3)),o=r(e(2)),l=r(e(6)),s=r(e(4)),d=e(7),u=e(17),c=e(15),f=e(18),m=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=m.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,r,a){m.plugins[e]=m.detectPlugin(t,n,r,a)},detectPlugin:function(e,t,n,r){var o=[0,0,0],l=void 0,s=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===a(c.NAV.plugins[e])){if((l=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(o=l.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)o[d]=parseInt(o[d].match(/\d+/),10)}else if(void 0!==i.default.ActiveXObject)try{(s=new ActiveXObject(n))&&(o=r(s))}catch(e){}return o}};m.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var p={create:function(e,t,n){var r={};r.options=t,r.id=e.id+"_"+r.options.prefix,r.mediaElement=e,r.flashState={},r.flashApi=null,r.flashApiStack=[];for(var a=l.default.html5media.properties,m=0,p=a.length;m<p;m++)!function(e){r.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);r["get"+t]=function(){if(null!==r.flashApi){if(void 0!==r.flashApi["get_"+e]){var t=r.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},r["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==r.flashApi&&void 0!==r.flashApi["set_"+e]?r.flashApi["set_"+e](t):r.flashApiStack.push({type:"set",propName:e,value:t})}}(a[m]);var h=l.default.html5media.methods;h.push("stop");for(var v=0,g=h.length;v<g;v++)!function(e){r[e]=function(){if(null!==r.flashApi){if(r.flashApi["fire_"+e])try{r.flashApi["fire_"+e]()}catch(e){}}else r.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var y=["rendererready"],E=0,b=y.length;E<b;E++){var w=(0,u.createEvent)(y[E],r);e.dispatchEvent(w)}i.default["__ready__"+r.id]=function(){if(r.flashReady=!0,r.flashApi=o.default.getElementById("__"+r.id),r.flashApiStack.length)for(var e=0,t=r.flashApiStack.length;e<t;e++){var n=r.flashApiStack[e];if("set"===n.type){var a=n.propName,i=""+a.substring(0,1).toUpperCase()+a.substring(1);r["set"+i](n.value)}else"call"===n.type&&r[n.methodName]()}},i.default["__event__"+r.id]=function(e,t){var n=(0,u.createEvent)(e,r);n.message=t||"",r.mediaElement.dispatchEvent(n)},r.flashWrapper=o.default.createElement("div"),-1===["always","sameDomain"].indexOf(r.options.shimScriptAccess)&&(r.options.shimScriptAccess="sameDomain");var S=e.originalNode.autoplay,_=["uid="+r.id,"autoplay="+S,"allowScriptAccess="+r.options.shimScriptAccess],N=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),A=N?e.originalNode.height:1,j=N?e.originalNode.width:1;e.originalNode.getAttribute("src")&&_.push("src="+e.originalNode.getAttribute("src")),!0===r.options.enablePseudoStreaming&&(_.push("pseudostreamstart="+r.options.pseudoStreamingStartQueryParam),_.push("pseudostreamtype="+r.options.pseudoStreamingType)),e.appendChild(r.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var T=[];if(c.IS_IE){var F=o.default.createElement("div");r.flashWrapper.appendChild(F),T=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+r.id+'"','width="'+j+'"','height="'+A+'"'],N||T.push('style="clip: rect(0 0 0 0); position: absolute;"'),F.outerHTML="<object "+T.join(" ")+'><param name="movie" value="'+r.options.pluginPath+r.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+_.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+r.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+s.default.t("mejs.install-flash")+"</div></object>"}else T=['id="__'+r.id+'"','name="__'+r.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+r.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+r.options.pluginPath+r.options.filename+'"','flashvars="'+_.join("&")+'"','width="'+j+'"','height="'+A+'"'],N||T.push('style="clip: rect(0 0 0 0); position: absolute;"'),r.flashWrapper.innerHTML="<embed "+T.join(" ")+">";if(r.flashNode=r.flashWrapper.lastChild,r.hide=function(){N&&(r.flashNode.style.display="none")},r.show=function(){N&&(r.flashNode.style.display="")},r.setSize=function(e,t){r.flashNode.style.width=e+"px",r.flashNode.style.height=t+"px",null!==r.flashApi&&"function"==typeof r.flashApi.fire_setSize&&r.flashApi.fire_setSize(e,t)},r.destroy=function(){r.flashNode.remove()},n&&n.length>0)for(var x=0,C=n.length;x<C;x++)if(d.renderer.renderers[t.prefix].canPlayType(n[x].type)){r.setSrc(n[x].src);break}return r}};if(m.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(v);var g={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(g);var y={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(y);var E={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:p.create};d.renderer.add(E)}},{15:15,17:17,18:18,2:2,3:3,4:4,6:6,7:7}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(15),d=e(18),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof flvjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=flvjs.createPlayer(e.options);a.default["__ready__"+e.id](t)}},f={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0}},canPlayType:function(e){return s.HAS_MSE&&["video/x-flv","video/flv"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=null,u=null;d=r.cloneNode(!0),t=Object.assign(t,e.options);for(var f=i.default.html5media.properties,m=0,p=f.length;m<p;m++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);d["get"+t]=function(){return null!==u?d[e]:null},d["set"+t]=function(t){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==u&&(d[e]=t,"src"===e&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()))}}(f[m]);if(a.default["__ready__"+s]=function(t){e.flvPlayer=u=t;for(var n=i.default.html5media.events.concat(["click","mouseover","mouseout"]),r=0,a=n.length;r<a;r++)!function(t){"loadedmetadata"===t&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[r])},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(o.renderer.renderers[t.prefix].canPlayType(n[h].type)){d.setAttribute("src",n[h].src);break}d.setAttribute("id",s),r.parentNode.insertBefore(d,r),r.autoplay=!1,r.style.display="none",t.flv.type="flv",t.flv.url=d.getAttribute("src"),c.load({options:t.flv,id:s}),d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var g=(0,l.createEvent)("rendererready",d);return e.dispatchEvent(g),d}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(6)),o=e(7),l=e(17),s=e(15),d=e(18),u=e(16),c={promise:null,load:function(e){"undefined"!=typeof Hls?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=new Hls(e.options);return a.default["__ready__"+e.id](t),t}},f={name:"native_hls",options:{prefix:"native_hls",hls:{path:"https://cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return s.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var r=e.originalNode,s=e.id+"_"+t.prefix,d=r.getAttribute("preload"),u=r.autoplay,f=null,m=null;m=r.cloneNode(!0),(t=Object.assign(t,e.options)).hls.autoStartLoad=d&&"none"!==d||u;for(var p=i.default.html5media.properties,h=0,v=p.length;h<v;h++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);m["get"+n]=function(){return null!==f?m[e]:null},m["set"+n]=function(n){-1===i.default.html5media.readOnlyProperties.indexOf(e)&&null!==f&&(m[e]=n,"src"===e&&(f.destroy(),(f=c._createPlayer({options:t.hls,id:s})).loadSource(n),f.attachMedia(m)))}}(p[h]);if(a.default["__ready__"+s]=function(t){e.hlsPlayer=f=t;for(var n=i.default.html5media.events.concat(["click","mouseover","mouseout"]),r=Hls.Events,a=0,o=n.length;a<o;a++)!function(t){if("loadedmetadata"===t){var n=e.originalNode.src;f.detachMedia(),f.loadSource(n),f.attachMedia(m)}m.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[a]);var s=void 0,d=void 0,u=function(t,n){var r=(0,l.createEvent)(t,m);if(r.data=n,e.dispatchEvent(r),"hlsError"===t&&(console.warn(t,n),n.fatal))switch(n.type){case"mediaError":var a=(new Date).getTime();!s||a-s>3e3?(s=(new Date).getTime(),f.recoverMediaError()):!d||a-d>3e3?(d=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),f.swapAudioCodec(),f.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:f.destroy()}};for(var c in r)r.hasOwnProperty(c)&&f.on(r[c],u)},n&&n.length>0)for(var g=0,y=n.length;g<y;g++)if(o.renderer.renderers[t.prefix].canPlayType(n[g].type)){m.setAttribute("src",n[g].src);break}"auto"===d||u||(m.addEventListener("play",function(){null!==f&&f.startLoad()}),m.addEventListener("pause",function(){null!==f&&f.stopLoad()})),m.setAttribute("id",s),r.parentNode.insertBefore(m,r),r.autoplay=!1,r.style.display="none",c.load({options:t.hls,id:s}),m.setSize=function(e,t){return m.style.width=e+"px",m.style.height=t+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m},m.destroy=function(){null!==f&&f.destroy()},m.stop=function(){null!==f&&f.stopLoad()};var E=(0,l.createEvent)("rendererready",m);return e.dispatchEvent(E),m}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),o.renderer.add(f)},{15:15,16:16,17:17,18:18,3:3,6:6,7:7}],13:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a=r(e(3)),i=r(e(2)),o=r(e(6)),l=e(7),s=e(17),d=e(15),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=i.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var r=e.id+"_"+t.prefix,a=null;void 0===e.originalNode||null===e.originalNode?(a=i.default.createElement("audio"),e.appendChild(a)):a=e.originalNode,a.setAttribute("id",r);for(var d=o.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);a["get"+t]=function(){return a[e]},a["set"+t]=function(t){-1===o.default.html5media.readOnlyProperties.indexOf(e)&&(a[e]=t)}}(d[u]);for(var f=o.default.html5media.events.concat(["click","mouseover","mouseout"]),m=0,p=f.length;m<p;m++)!function(t){a.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[m]);if(a.setSize=function(e,t){return a.style.width=e+"px",a.style.height=t+"px",a},a.hide=function(){return a.style.display="none",a},a.show=function(){return a.style.display="",a},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(l.renderer.renderers[t.prefix].canPlayType(n[h].type)){a.setAttribute("src",n[h].src);break}var g=(0,s.createEvent)("rendererready",a);return e.dispatchEvent(g),a}};a.default.HtmlMediaElement=o.default.HtmlMediaElement=u,l.renderer.add(u)},{15:15,17:17,2:2,3:3,6:6,7:7}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=r(e(3)),o=r(e(2)),l=r(e(6)),s=e(7),d=e(17),u=e(18),c=e(16),f={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){f.isLoaded="undefined"!=typeof YT&&YT.loaded,f.isLoaded?f.createIframe(e):(f.loadIframeApi(),f.iframeQueue.push(e))},loadIframeApi:function(){f.isIframeStarted||((0,c.loadScript)("https://www.youtube.com/player_api"),f.isIframeStarted=!0)},iFrameReady:function(){for(f.isLoaded=!0,f.isIframeLoaded=!0;f.iframeQueue.length>0;){var e=f.iframeQueue.pop();f.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return e.indexOf("?")>0?""===(t=f.getYouTubeIdFromParam(e))&&(t=f.getYouTubeIdFromUrl(e)):t=f.getYouTubeIdFromUrl(e),t},getYouTubeIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",r=0,a=t.length;r<a;r++){var i=t[r].split("=");if("v"===i[0]){n=i[1];break}}return n},getYouTubeIdFromUrl:function(e){return void 0!==e&&null!==e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(void 0===e||null===e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},m={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(e,t,n){var r={},a=[],s=null,u=!0,c=!1,m=null,p=1;r.options=t,r.id=e.id+"_"+t.prefix,r.mediaElement=e;for(var h=l.default.html5media.properties,v=0,g=h.length;v<g;v++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);r["get"+n]=function(){if(null!==s){switch(t){case"currentTime":return s.getCurrentTime();case"duration":return s.getDuration();case"volume":return p=s.getVolume()/100;case"paused":return u;case"ended":return c;case"muted":return s.isMuted();case"buffered":var e=s.getVideoLoadedFraction(),n=s.getDuration();return{start:function(){return 0},end:function(){return e*n},length:1};case"src":return s.getVideoUrl();case"readyState":return 4}return null}return null},r["set"+n]=function(n){if(null!==s)switch(t){case"src":var i="string"==typeof n?n:n[0].src,o=f.getYouTubeId(i);e.originalNode.autoplay?s.loadVideoById(o):s.cueVideoById(o);break;case"currentTime":s.seekTo(n);break;case"muted":n?s.mute():s.unMute(),setTimeout(function(){var t=(0,d.createEvent)("volumechange",r);e.dispatchEvent(t)},50);break;case"volume":p=n,s.setVolume(100*n),setTimeout(function(){var t=(0,d.createEvent)("volumechange",r);e.dispatchEvent(t)},50);break;case"readyState":var l=(0,d.createEvent)("canplay",r);e.dispatchEvent(l)}else a.push({type:"set",propName:t,value:n})}}(h[v]);for(var y=l.default.html5media.methods,E=0,b=y.length;E<b;E++)!function(e){r[e]=function(){if(null!==s)switch(e){case"play":return u=!1,s.playVideo();case"pause":return u=!0,s.pauseVideo();case"load":return null}else a.push({type:"call",methodName:e})}}(y[E]);var w=o.default.createElement("div");w.id=r.id,r.options.youtube.nocookie&&e.originalNode.setAttribute("src",f.getYouTubeNoCookieUrl(n[0].src)),e.originalNode.parentNode.insertBefore(w,e.originalNode),e.originalNode.style.display="none";var S="audio"===e.originalNode.tagName.toLowerCase(),_=S?"1":e.originalNode.height,N=S?"1":e.originalNode.width,A=f.getYouTubeId(n[0].src),j={id:r.id,containerId:w.id,videoId:A,height:_,width:N,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},r.options.youtube),origin:i.default.location.host,events:{onReady:function(t){if(e.youTubeApi=s=t.target,e.youTubeState={paused:!0,ended:!1},a.length)for(var n=0,i=a.length;n<i;n++){var o=a[n];if("set"===o.type){var l=o.propName,u=""+l.substring(0,1).toUpperCase()+l.substring(1);r["set"+u](o.value)}else"call"===o.type&&r[o.methodName]()}m=s.getIframe();for(var c=["mouseover","mouseout"],f=function(t){var n=(0,d.createEvent)(t.type,r);e.dispatchEvent(n)},p=0,h=c.length;p<h;p++)m.addEventListener(c[p],f,!1);for(var v=["rendererready","loadeddata","loadedmetadata","canplay"],g=0,y=v.length;g<y;g++){var E=(0,d.createEvent)(v[g],r);e.dispatchEvent(E)}},onStateChange:function(t){var n=[];switch(t.data){case-1:n=["loadedmetadata"],u=!0,c=!1;break;case 0:n=["ended"],u=!1,c=!0,r.stopInterval();break;case 1:n=["play","playing"],u=!1,c=!1,r.startInterval();break;case 2:n=["pause"],u=!0,c=!1,r.stopInterval();break;case 3:n=["progress"],c=!1;break;case 5:n=["loadeddata","loadedmetadata","canplay"],u=!0,c=!1}for(var a=0,i=n.length;a<i;a++){var o=(0,d.createEvent)(n[a],r);e.dispatchEvent(o)}},onError:function(t){var n=(0,d.createEvent)("error",r);n.data=t.data,e.dispatchEvent(n)}}};return S&&(j.playerVars.playsinline=1),f.enqueueIframe(j),r.onEvent=function(t,n,r){null!==r&&void 0!==r&&(e.youTubeState=r)},r.setSize=function(e,t){null!==s&&s.setSize(e,t)},r.hide=function(){r.stopInterval(),r.pause(),m&&(m.style.display="none")},r.show=function(){m&&(m.style.display="")},r.destroy=function(){s.destroy()},r.interval=null,r.startInterval=function(){r.interval=setInterval(function(){var t=(0,d.createEvent)("timeupdate",r);e.dispatchEvent(t)},250)},r.stopInterval=function(){r.interval&&clearInterval(r.interval)},r}};i.default.postMessage&&a(i.default.addEventListener)&&(i.default.onYouTubePlayerAPIReady=function(){f.iFrameReady()},u.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.be)/i.test(e)?"video/x-youtube":null}),s.renderer.add(m))},{16:16,17:17,18:18,2:2,3:3,6:6,7:7}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var a=r(e(3)),i=r(e(2)),o=r(e(6)),l=n.NAV=a.default.navigator,s=n.UA=l.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(s),u=n.IS_IPHONE=/iphone/i.test(s),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(s)),f=n.IS_IE=/(trident|microsoft)/i.test(l.appName),m=(n.IS_EDGE="msLaunchUri"in l&&!("documentMode"in i.default)),p=n.IS_CHROME=/chrome/i.test(s),h=n.IS_FIREFOX=/firefox/i.test(s),v=n.IS_SAFARI=/safari/i.test(s)&&!p,g=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(s),y=(n.HAS_MSE="MediaSource"in a.default),E=(n.SUPPORT_POINTER_EVENTS=function(){var e=i.default.createElement("x"),t=i.default.documentElement,n=a.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var r=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!r}()),b=["source","track","audio","video"],w=void 0,S=0,_=b.length;S<_;S++)w=i.default.createElement(b[S]);var N=n.SUPPORTS_NATIVE_HLS=v||c&&(p||g)||f&&/edge/i.test(s),A=void 0!==w.webkitEnterFullscreen,j=void 0!==w.requestFullscreen;A&&/mac os x 10_5/i.test(s)&&(j=!1,A=!1);var T=void 0!==w.webkitRequestFullScreen,F=void 0!==w.mozRequestFullScreen,x=void 0!==w.msRequestFullscreen,C=T||F||x,L=C,O="",P=void 0,I=void 0,k=void 0;F?L=i.default.mozFullScreenEnabled:x&&(L=i.default.msFullscreenEnabled),p&&(A=!1),C&&(T?O="webkitfullscreenchange":F?O="mozfullscreenchange":x&&(O="MSFullscreenChange"),n.isFullScreen=P=function(){return F?i.default.mozFullScreen:T?i.default.webkitIsFullScreen:x?null!==i.default.msFullscreenElement:void 0},n.requestFullScreen=I=function(e){T?e.webkitRequestFullScreen():F?e.mozRequestFullScreen():x&&e.msRequestFullscreen()},n.cancelFullScreen=k=function(){T?i.default.webkitCancelFullScreen():F?i.default.mozCancelFullScreen():x&&i.default.msExitFullscreen()});var M=n.HAS_NATIVE_FULLSCREEN=j,U=n.HAS_WEBKIT_NATIVE_FULLSCREEN=T,R=n.HAS_MOZ_NATIVE_FULLSCREEN=F,H=n.HAS_MS_NATIVE_FULLSCREEN=x,D=n.HAS_IOS_FULLSCREEN=A,V=n.HAS_TRUE_NATIVE_FULLSCREEN=C,q=n.HAS_NATIVE_FULLSCREEN_ENABLED=L,z=n.FULLSCREEN_EVENT_NAME=O;n.isFullScreen=P,n.requestFullScreen=I,n.cancelFullScreen=k,o.default.Features=o.default.Features||{},o.default.Features.isiPad=d,o.default.Features.isiPhone=u,o.default.Features.isiOS=o.default.Features.isiPhone||o.default.Features.isiPad,o.default.Features.isAndroid=c,o.default.Features.isIE=f,o.default.Features.isEdge=m,o.default.Features.isChrome=p,o.default.Features.isFirefox=h,o.default.Features.isSafari=v,o.default.Features.isStockAndroid=g,o.default.Features.hasMSE=y,o.default.Features.supportsNativeHLS=N,o.default.Features.supportsPointerEvents=E,o.default.Features.hasiOSFullScreen=D,o.default.Features.hasNativeFullscreen=M,o.default.Features.hasWebkitNativeFullScreen=U,o.default.Features.hasMozNativeFullScreen=R,o.default.Features.hasMsNativeFullScreen=H,o.default.Features.hasTrueNativeFullScreen=V,o.default.Features.nativeFullScreenEnabled=q,o.default.Features.fullScreenEventName=z,o.default.Features.isFullScreen=P,o.default.Features.requestFullScreen=I,o.default.Features.cancelFullScreen=k},{2:2,3:3,6:6}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e){function t(e){for(a=e;i=n.shift();)i[r]&&i[r](a)}var n=[],r=-1,a=void 0,i=void 0;return e(function(e){return t(e,r=0)},function(e){return t(e,r=1)}),{then:function(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];~r?t[r]&&t[r](a):n.push(t)}}}function i(e){return a(function(t,n){var r=p.default.createElement("script");r.src=e,r.async=!0,r.onload=function(){r.remove(),t()},r.onerror=function(){r.remove(),n()},p.default.head.appendChild(r)})}function o(e){var t=e.getBoundingClientRect(),n=m.default.pageXOffset||p.default.documentElement.scrollLeft,r=m.default.pageYOffset||p.default.documentElement.scrollTop;return{top:t.top+r,left:t.left+n}}function l(e,t){E(e,t)?w(e,t):b(e,t)}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var r=null;m.default.requestAnimationFrame(function a(i){var o=i-(r=r||i),l=parseFloat(1-o/t,2);e.style.opacity=l<0?0:l,o>t?n&&"function"==typeof n&&n():m.default.requestAnimationFrame(a)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var r=null;m.default.requestAnimationFrame(function a(i){var o=i-(r=r||i),l=parseFloat(o/t,2);e.style.opacity=l>1?1:l,o>t?n&&"function"==typeof n&&n():m.default.requestAnimationFrame(a)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,r){var a=m.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),i="application/x-www-form-urlencoded; charset=UTF-8",o=!1,l="*/".concat("*");switch(t){case"text":i="text/plain";break;case"json":i="application/json, text/javascript";break;case"html":i="text/html";break;case"xml":i="application/xml, text/xml"}"application/x-www-form-urlencoded"!==i&&(l=i+", */*; q=0.01"),a&&(a.open("GET",e,!0),a.setRequestHeader("Accept",l),a.onreadystatechange=function(){if(!o&&4===a.readyState)if(200===a.status){o=!0;var e=void 0;switch(t){case"json":e=JSON.parse(a.responseText);break;case"xml":e=a.responseXML;break;default:e=a.responseText}n(e)}else"function"==typeof r&&r(a.status)},a.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=i,n.offset=o,n.toggleClass=l,n.fadeOut=s,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var m=r(e(3)),p=r(e(2)),h=r(e(6)),v=void 0,g=void 0,y=void 0;"classList"in p.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},g=function(e,t){return e.classList.add(t)},y=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},g=function(e,t){E(e,t)||(e.className+=" "+t)},y=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var E=n.hasClass=v,b=n.addClass=g,w=n.removeClass=y;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=o,h.default.Utils.hasClass=E,h.default.Utils.addClass=b,h.default.Utils.removeClass=w,h.default.Utils.toggleClass=l,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=s,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=i},{2:2,3:3,6:6}],17:[function(e,t,n){"use strict";function r(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return e.replace(/[&<>"]/g,function(e){return t[e]})}function a(e,t){var n=this,r=arguments,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var i=void 0;return function(){var o=n,l=r,s=function(){i=null,a||e.apply(o,l)},d=a&&!i;clearTimeout(i),i=setTimeout(s,t),d&&e.apply(o,l)}}function i(e){return Object.getOwnPropertyNames(e).length<=0}function o(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,r={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var a=e+(t?"."+t:"");a.startsWith(".")?(r.d.push(a),r.w.push(a)):r[n.test(e)?"w":"d"].push(a)}),r.d=r.d.join(" "),r.w=r.w.join(" "),r}function l(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),r={target:t};return null!==n&&(e=n[1],r.namespace=n[2]),new window.CustomEvent(e,{detail:r})}function s(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=r,n.debounce=a,n.isObjectEmpty=i,n.splitEvents=o,n.createEvent=l,n.isNodeAfter=s,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=r,u.default.Utils.debounce=a,u.default.Utils.isObjectEmpty=i,u.default.Utils.splitEvents=o,u.default.Utils.createEvent=l,u.default.Utils.isNodeAfter=s,u.default.Utils.isString=d},{6:6}],18:[function(e,t,n){"use strict";function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?o(e):i(t)}function i(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function o(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var r=c[t](e);if(r)return r}var a=s(l(e)),i="video/mp4";return a&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(a)?i="video/"+a:~["mp3","oga","wav","mid","midi"].indexOf(a)&&(i="audio/"+a)),i}function l(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function s(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=r,n.formatType=a,n.getMimeFromType=i,n.getTypeFromFile=o,n.getExtension=l,n.normalizeExtension=s;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(17),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=r,d.default.Utils.formatType=a,d.default.Utils.getMimeFromType=i,d.default.Utils.getTypeFromFile=o,d.default.Utils.getExtension=l,d.default.Utils.normalizeExtension=s},{17:17,6:6}],19:[function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=r.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,r=arguments.length;n<r;n++){var a=arguments[n];if(null!==a)for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,r=this;do{for(n=t.length;--n>=0&&t.item(n)!==r;);}while(n<0&&(r=r.parentElement));return r}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),a=window.setTimeout(function(){t(n+r)},r);return e=n+r,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}]},{},[19,5,4,8,13,10,9,11,12,14]);
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer-legacy.css b/lib/mejs/mediaelementplayer-legacy.css
index 90adc85c578731c3deb863d6c0c8a4b9329e21c2..b4d704b5c24c283307a8aa090fe800ab62798a4d 100644
--- a/lib/mejs/mediaelementplayer-legacy.css
+++ b/lib/mejs/mediaelementplayer-legacy.css
@@ -375,11 +375,9 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     transform: scaleX(0) !important;
 }
 
-.mejs-time-handle, .mejs-time-handle-baby {
+.mejs-time-handle, .mejs-time-handle-content {
     position: absolute;
     cursor: pointer;
-    width: 20px;
-    height: 20px;
     border: 4px solid transparent;
     z-index: 11;
     left: 0;
@@ -387,16 +385,18 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     transform: translateX(0px);
 }
 
-.mejs-time-handle-baby {
-    left: -4px;
+.mejs-time-handle-content {
+    left: -7px;
     border: 4px solid rgba(255, 255, 255, 0.9);
     -ms-transform: scale(0);
     transform: scale(0);
-    top: -8px;
+    top: -4px;
     border-radius: 50%;
+    width: 10px;
+    height: 10px;
 }
 
-.mejs-time-rail:hover .mejs-time-handle-baby, .mejs-time-rail .mejs-time-handle-baby:focus, .mejs-time-rail .mejs-time-handle-baby:active {
+.mejs-time-rail:hover .mejs-time-handle-content, .mejs-time-rail .mejs-time-handle-content:focus, .mejs-time-rail .mejs-time-handle-content:active {
     -ms-transform: scale(1);
     transform: scale(1);
 }
diff --git a/lib/mejs/mediaelementplayer-legacy.min.css b/lib/mejs/mediaelementplayer-legacy.min.css
index e5bc8bd92f0faa2a28f089e54df7e7c986427614..b7bec9e6274aaa8a59131601c5a20925dfa2d93c 100644
--- a/lib/mejs/mediaelementplayer-legacy.min.css
+++ b/lib/mejs/mediaelementplayer-legacy.min.css
@@ -1 +1 @@
-.mejs-offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs-container .mejs-video{min-height:140px}.mejs-container *{box-sizing:border-box}.mejs-container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs-fill-container,.mejs-fill-container .mejs-container{width:100%;height:100%}.mejs-fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs-container:focus{outline:none}.mejs-iframe-overlay{position:absolute;width:100%;height:100%}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%!important;height:100%!important}.mejs-clear{clear:both}.mejs-background,.mejs-mediaelement{position:absolute;top:0;left:0}.mejs-mediaelement{width:100%;height:100%;z-index:0}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs-poster-img{display:none}.mejs-poster-img{border:0;padding:0}.mejs-overlay{position:absolute;top:0;left:0;z-index:1}.mejs-layer{z-index:1}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs-overlay:hover>.mejs-overlay-button{background-position:-80px -39px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs-overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs-controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs-button,.mejs-time,.mejs-time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs-button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs-button>button:focus{outline:1px dotted #999}.mejs-container-keyboard-inactive [role=slider],.mejs-container-keyboard-inactive [role=slider]:focus,.mejs-container-keyboard-inactive a,.mejs-container-keyboard-inactive a:focus,.mejs-container-keyboard-inactive button,.mejs-container-keyboard-inactive button:focus{outline:0}.mejs-time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs-play>button{background-position:0 0}.mejs-pause>button{background-position:-20px 0}.mejs-replay>button{background-position:-160px 0}.mejs-time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs-time-buffering,.mejs-time-current,.mejs-time-float,.mejs-time-float-corner,.mejs-time-float-current,.mejs-time-hovered,.mejs-time-loaded,.mejs-time-marker,.mejs-time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs-time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs-time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs-time-loaded{background:hsla(0,0%,100%,.3)}.mejs-time-current,.mejs-time-handle-content{background:hsla(0,0%,100%,.9)}.mejs-time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs-time-hovered.negative{background:rgba(0,0,0,.2)}.mejs-time-buffering,.mejs-time-current,.mejs-time-hovered,.mejs-time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs-time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs-time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs-time-handle,.mejs-time-handle-baby{position:absolute;cursor:pointer;width:20px;height:20px;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs-time-handle-baby{left:-4px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-8px;border-radius:50%}.mejs-time-rail .mejs-time-handle-baby:active,.mejs-time-rail .mejs-time-handle-baby:focus,.mejs-time-rail:hover .mejs-time-handle-baby{-ms-transform:scale(1);transform:scale(1)}.mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-time-float{width:64px;margin-left:-23px}.mejs-long-video .mejs-time-float-current{width:60px}.mejs-long-video .mejs-time-float-corner{left:18px}.mejs-broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs-fullscreen-button>button{background-position:-80px 0}.mejs-unfullscreen>button{background-position:-100px 0}.mejs-mute>button{background-position:-60px 0}.mejs-unmute>button{background-position:-40px 0}.mejs-volume-button{position:relative}.mejs-volume-button>.mejs-volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs-volume-button:hover{border-radius:0 0 4px 4px}.mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs-volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs-volume-current,.mejs-volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs-volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs-horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs-horizontal-volume-current,.mejs-horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs-horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs-horizontal-volume-handle{display:none}.mejs-captions-button,.mejs-chapters-button{position:relative}.mejs-captions-button>button{background-position:-140px 0}.mejs-chapters-button>button{background-position:-180px 0}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs-chapters-button>.mejs-chapters-selector{width:110px}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:visible}.mejs-captions-selector-list,.mejs-chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-captions-selector-list-item,.mejs-chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs-captions-selector-list-item:hover,.mejs-chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs-captions-selector-input,.mejs-chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs-captions-selector-label,.mejs-chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs-captions-selected,.mejs-chapters-selected{color:#21f8f8}.mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text,.mejs-captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs-container.mejs-hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs-container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block}
\ No newline at end of file
+.mejs-offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs-container .mejs-video{min-height:140px}.mejs-container *{box-sizing:border-box}.mejs-container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs-fill-container,.mejs-fill-container .mejs-container{width:100%;height:100%}.mejs-fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs-container:focus{outline:none}.mejs-iframe-overlay{position:absolute;width:100%;height:100%}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%!important;height:100%!important}.mejs-clear{clear:both}.mejs-background,.mejs-mediaelement{position:absolute;top:0;left:0}.mejs-mediaelement{width:100%;height:100%;z-index:0}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs-poster-img{display:none}.mejs-poster-img{border:0;padding:0}.mejs-overlay{position:absolute;top:0;left:0;z-index:1}.mejs-layer{z-index:1}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs-overlay:hover>.mejs-overlay-button{background-position:-80px -39px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs-overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs-controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs-button,.mejs-time,.mejs-time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs-button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs-button>button:focus{outline:1px dotted #999}.mejs-container-keyboard-inactive [role=slider],.mejs-container-keyboard-inactive [role=slider]:focus,.mejs-container-keyboard-inactive a,.mejs-container-keyboard-inactive a:focus,.mejs-container-keyboard-inactive button,.mejs-container-keyboard-inactive button:focus{outline:0}.mejs-time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs-play>button{background-position:0 0}.mejs-pause>button{background-position:-20px 0}.mejs-replay>button{background-position:-160px 0}.mejs-time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs-time-buffering,.mejs-time-current,.mejs-time-float,.mejs-time-float-corner,.mejs-time-float-current,.mejs-time-hovered,.mejs-time-loaded,.mejs-time-marker,.mejs-time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs-time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs-time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs-time-loaded{background:hsla(0,0%,100%,.3)}.mejs-time-current,.mejs-time-handle-content{background:hsla(0,0%,100%,.9)}.mejs-time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs-time-hovered.negative{background:rgba(0,0,0,.2)}.mejs-time-buffering,.mejs-time-current,.mejs-time-hovered,.mejs-time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs-time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs-time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs-time-handle,.mejs-time-handle-content{position:absolute;cursor:pointer;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs-time-handle-content{left:-7px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-4px;border-radius:50%;width:10px;height:10px}.mejs-time-rail .mejs-time-handle-content:active,.mejs-time-rail .mejs-time-handle-content:focus,.mejs-time-rail:hover .mejs-time-handle-content{-ms-transform:scale(1);transform:scale(1)}.mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-time-float{width:64px;margin-left:-23px}.mejs-long-video .mejs-time-float-current{width:60px}.mejs-long-video .mejs-time-float-corner{left:18px}.mejs-broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs-fullscreen-button>button{background-position:-80px 0}.mejs-unfullscreen>button{background-position:-100px 0}.mejs-mute>button{background-position:-60px 0}.mejs-unmute>button{background-position:-40px 0}.mejs-volume-button{position:relative}.mejs-volume-button>.mejs-volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs-volume-button:hover{border-radius:0 0 4px 4px}.mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs-volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs-volume-current,.mejs-volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs-volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs-horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs-horizontal-volume-current,.mejs-horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs-horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs-horizontal-volume-handle{display:none}.mejs-captions-button,.mejs-chapters-button{position:relative}.mejs-captions-button>button{background-position:-140px 0}.mejs-chapters-button>button{background-position:-180px 0}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs-chapters-button>.mejs-chapters-selector{width:110px}.mejs-captions-button>.mejs-captions-selector,.mejs-chapters-button>.mejs-chapters-selector{visibility:visible}.mejs-captions-selector-list,.mejs-chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-captions-selector-list-item,.mejs-chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs-captions-selector-list-item:hover,.mejs-chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs-captions-selector-input,.mejs-chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs-captions-selector-label,.mejs-chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs-captions-selected,.mejs-chapters-selected{color:#21f8f8}.mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text,.mejs-captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs-container.mejs-hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs-container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block}
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer.css b/lib/mejs/mediaelementplayer.css
index 183cd6009eb2d0c4d05965f4feda9a2d3542d773..1af19a3f747756f09025d35a551652a40dd02306 100644
--- a/lib/mejs/mediaelementplayer.css
+++ b/lib/mejs/mediaelementplayer.css
@@ -375,11 +375,9 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     transform: scaleX(0) !important;
 }
 
-.mejs__time-handle, .mejs__time-handle-baby {
+.mejs__time-handle, .mejs__time-handle-content {
     position: absolute;
     cursor: pointer;
-    width: 20px;
-    height: 20px;
     border: 4px solid transparent;
     z-index: 11;
     left: 0;
@@ -387,16 +385,18 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     transform: translateX(0px);
 }
 
-.mejs__time-handle-baby {
-    left: -4px;
+.mejs__time-handle-content {
+    left: -7px;
     border: 4px solid rgba(255, 255, 255, 0.9);
     -ms-transform: scale(0);
     transform: scale(0);
-    top: -8px;
+    top: -4px;
     border-radius: 50%;
+    width: 10px;
+    height: 10px;
 }
 
-.mejs__time-rail:hover .mejs__time-handle-baby, .mejs__time-rail .mejs__time-handle-baby:focus, .mejs__time-rail .mejs__time-handle-baby:active {
+.mejs__time-rail:hover .mejs__time-handle-content, .mejs__time-rail .mejs__time-handle-content:focus, .mejs__time-rail .mejs__time-handle-content:active {
     -ms-transform: scale(1);
     transform: scale(1);
 }
diff --git a/lib/mejs/mediaelementplayer.js b/lib/mejs/mediaelementplayer.js
index fdb1946d0e1204bcf0fa77b919acc283f85081a9..549abac6f2df5cf5722a9cba9b59e21ff01596ef 100644
--- a/lib/mejs/mediaelementplayer.js
+++ b/lib/mejs/mediaelementplayer.js
@@ -61,20 +61,8 @@ var _general = _dereq_(21);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Locale.
- *
- * This object manages translations with pluralization. Also deals with WordPress compatibility.
- * @type {Object}
- */
 var i18n = { lang: 'en', en: _en.EN };
 
-/**
- * Language setter/getter
- *
- * @param {*} args  Can pass the language code and/or the translation strings as an Object
- * @return {string}
- */
 i18n.language = function () {
 	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 		args[_key] = arguments[_key];
@@ -86,13 +74,12 @@ i18n.language = function () {
 			throw new TypeError('Language code must be a string value');
 		}
 
-		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
 			throw new TypeError('Language code must have format `xx` or `xx-xx`');
 		}
 
 		i18n.lang = args[0];
 
-		// Check if language strings were added; otherwise, check the second argument or set to English as default
 		if (i18n[args[0]] === undefined) {
 			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
 			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
@@ -104,13 +91,6 @@ i18n.language = function () {
 	return i18n.lang;
 };
 
-/**
- * Translate a string in the language set up (or English by default)
- *
- * @param {string} message
- * @param {number} pluralParam
- * @return {string}
- */
 i18n.t = function (message) {
 	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
 
@@ -122,57 +102,20 @@ i18n.t = function (message) {
 
 		var language = i18n.language();
 
-		/**
-   * Modify string using algorithm to detect plural forms.
-   *
-   * @private
-   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
-   * @param {String|String[]} input   - String or array of strings to pick the plural form
-   * @param {Number} number           - Number to determine the proper plural form
-   * @param {Number} form             - Number of language family to apply plural form
-   * @return {String}
-   */
 		var _plural = function _plural(input, number, form) {
 
 			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
 				return input;
 			}
 
-			/**
-    *
-    * @return {Function[]}
-    * @private
-    */
 			var _pluralForms = function () {
-				return [
-				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
-				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
-				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
-				function () {
+				return [function () {
 					return arguments.length <= 1 ? undefined : arguments[1];
-				},
-
-				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
-				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
-				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
-				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
-				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
-				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
-				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
-				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
-				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
-				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
-				function () {
+				}, function () {
 					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];
-				},
-
-				// 3: Latvian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
@@ -180,10 +123,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 4: Scottish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
@@ -193,10 +133,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 5:  Romanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -204,10 +141,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 6: Lithuanian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -215,10 +149,7 @@ i18n.t = function (message) {
 					} else {
 						return [3];
 					}
-				},
-
-				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -226,10 +157,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 8:  Slovak, Czech
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
@@ -237,10 +165,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 9: Polish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -248,10 +173,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 10: Slovenian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
 						return arguments.length <= 2 ? undefined : arguments[2];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
@@ -261,10 +183,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					}
-				},
-
-				// 11: Irish Gaelic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -276,10 +195,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 5 ? undefined : arguments[5];
 					}
-				},
-
-				// 12: Arabic
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -293,10 +209,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 6 ? undefined : arguments[6];
 					}
-				},
-
-				// 13: Maltese
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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) {
@@ -306,10 +219,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 14: Macedonian
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
@@ -317,19 +227,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 15:  Icelandic
-				function () {
+				}, function () {
 					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];
-				},
-
-				// New additions
-
-				// 16:  Kashubian
-				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
-				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} 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)) {
@@ -337,10 +237,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 3 ? undefined : arguments[3];
 					}
-				},
-
-				// 17:  Welsh
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -350,15 +247,9 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 18:  Javanese
-				function () {
+				}, function () {
 					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
-				},
-
-				// 19:  Cornish
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
@@ -368,10 +259,7 @@ i18n.t = function (message) {
 					} else {
 						return arguments.length <= 4 ? undefined : arguments[4];
 					}
-				},
-
-				// 20:  Mandinka
-				function () {
+				}, function () {
 					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
 						return arguments.length <= 1 ? undefined : arguments[1];
 					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
@@ -382,11 +270,9 @@ i18n.t = function (message) {
 				}];
 			}();
 
-			// Perform plural form or return original text
 			return _pluralForms[form].apply(null, [number].concat(input));
 		};
 
-		// Fetch the localized version of the string
 		if (i18n[language] !== undefined) {
 			str = i18n[language][message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -395,7 +281,6 @@ i18n.t = function (message) {
 			}
 		}
 
-		// Fallback to default language if requested uid is not translated
 		if (!str && i18n.en) {
 			str = i18n.en[message];
 			if (pluralParam !== null && typeof pluralParam === 'number') {
@@ -404,11 +289,8 @@ i18n.t = function (message) {
 			}
 		}
 
-		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
-		// (in which uid was the english text)
 		str = str || message;
 
-		// Replace token
 		if (pluralParam !== null && typeof pluralParam === 'number') {
 			str = str.replace('%1', pluralParam);
 		}
@@ -421,7 +303,6 @@ i18n.t = function (message) {
 
 _mejs2.default.i18n = i18n;
 
-// `i18n` compatibility workflow with WordPress
 if (typeof mejsL10n !== 'undefined') {
 	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
 }
@@ -453,26 +334,13 @@ var _media = _dereq_(22);
 
 var _renderer = _dereq_(7);
 
+var _constants = _dereq_(19);
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- * Media Core
- *
- * This class is the foundation to create/render different media formats.
- * @class MediaElement
- */
-var MediaElement =
-
-/**
- *
- * @param {String|Node} idOrNode
- * @param {Object} options
- * @param {Object[]} sources
- * @returns {Element|*}
- */
-function MediaElement(idOrNode, options, sources) {
+var MediaElement = function MediaElement(idOrNode, options, sources) {
 	var _this = this;
 
 	_classCallCheck(this, MediaElement);
@@ -482,36 +350,19 @@ function MediaElement(idOrNode, options, sources) {
 	sources = Array.isArray(sources) ? sources : null;
 
 	t.defaults = {
-		/**
-   * List of the renderers to use
-   * @type {String[]}
-   */
 		renderers: [],
-		/**
-   * Name of MediaElement container
-   * @type {String}
-   */
+
 		fakeNodeName: 'mediaelementwrapper',
-		/**
-   * The path where shims are located
-   * @type {String}
-   */
+
 		pluginPath: 'build/',
-		/**
-   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
-   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
-   */
+
 		shimScriptAccess: 'sameDomain',
-		/**
-   * If error happens, set up HTML message
-   * @type {String}
-   */
+
 		customError: ''
 	};
 
 	options = Object.assign(t.defaults, options);
 
-	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
 	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
 	t.mediaElement.options = options;
 
@@ -528,42 +379,27 @@ function MediaElement(idOrNode, options, sources) {
 	id = id || 'mejs_' + Math.random().toString().slice(2);
 
 	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
-		// change id
 		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
 
-		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
-		// only if video/audio tags are detected
 		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
-		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+		if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
 			t.mediaElement.originalNode.setAttribute('preload', 'none');
 		}
 
-		// add next to this one
 		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
 
-		// insert this one inside
 		t.mediaElement.appendChild(t.mediaElement.originalNode);
-	} else {
-		// TODO: where to put the node?
-	}
+	} else {}
 
 	t.mediaElement.id = id;
 	t.mediaElement.renderers = {};
 	t.mediaElement.renderer = null;
 	t.mediaElement.rendererName = null;
-	/**
-  * Determine whether the renderer was found or not
-  *
-  * @public
-  * @param {String} rendererName
-  * @param {Object[]} mediaFiles
-  * @return {Boolean}
-  */
+
 	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
 
 		var t = _this;
 
-		// check for a match on the current renderer
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -574,7 +410,6 @@ function MediaElement(idOrNode, options, sources) {
 			return true;
 		}
 
-		// if existing renderer is not the right one, then hide it
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.pause();
 			if (t.mediaElement.renderer.stop) {
@@ -583,7 +418,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.renderer.hide();
 		}
 
-		// see if we have the renderer already created
 		var newRenderer = t.mediaElement.renderers[rendererName],
 		    newRendererType = null;
 
@@ -597,14 +431,11 @@ function MediaElement(idOrNode, options, sources) {
 
 		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
 
-		// find the desired renderer in the array of possible ones
 		for (var i = 0, total = rendererArray.length; i < total; i++) {
 
 			var index = rendererArray[i];
 
 			if (index === rendererName) {
-
-				// create the renderer
 				var rendererList = _renderer.renderer.renderers;
 				newRendererType = rendererList[index];
 
@@ -612,7 +443,6 @@ function MediaElement(idOrNode, options, sources) {
 				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
 				newRenderer.name = rendererName;
 
-				// store for later
 				t.mediaElement.renderers[newRendererType.name] = newRenderer;
 				t.mediaElement.renderer = newRenderer;
 				t.mediaElement.rendererName = rendererName;
@@ -626,23 +456,12 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  * Set the element dimensions based on selected renderer's setSize method
-  *
-  * @public
-  * @param {number} width
-  * @param {number} height
-  */
 	t.mediaElement.setSize = function (width, height) {
 		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
 			t.mediaElement.renderer.setSize(width, height);
 		}
 	};
 
-	/**
-  *
-  * @param {Object[]} urlList
-  */
 	t.mediaElement.createErrorMessage = function (urlList) {
 
 		urlList = Array.isArray(urlList) ? urlList : [];
@@ -677,8 +496,6 @@ function MediaElement(idOrNode, options, sources) {
 	var props = _mejs2.default.html5media.properties,
 	    methods = _mejs2.default.html5media.methods,
 	    addProperty = function addProperty(obj, name, onGet, onSet) {
-
-		// wrapper functions
 		var oldValue = obj[name];
 		var getFn = function getFn() {
 			return onGet.apply(obj, [oldValue]);
@@ -711,17 +528,12 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement['set' + capName] = setFn;
 		}
 	},
-
-	// `src` is a property separated from the others since it carries the logic to set the proper renderer
-	// based on the media files detected
-	getSrc = function getSrc() {
+	    getSrc = function getSrc() {
 		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
 	},
 	    setSrc = function setSrc(value) {
-
 		var mediaFiles = [];
 
-		// clean up URLs
 		if (typeof value === 'string') {
 			mediaFiles.push({
 				src: value,
@@ -740,11 +552,9 @@ function MediaElement(idOrNode, options, sources) {
 			}
 		}
 
-		// find a renderer and URL match
 		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
 		    event = void 0;
 
-		// Ensure that the original gets the first source found
 		if (!t.mediaElement.paused) {
 			t.mediaElement.pause();
 			event = (0, _general.createEvent)('pause', t.mediaElement);
@@ -757,7 +567,6 @@ function MediaElement(idOrNode, options, sources) {
 			t.mediaElement.querySelector('.me_cannotplay').remove();
 		}
 
-		// did we find a renderer?
 		if (renderInfo === null) {
 			t.mediaElement.createErrorMessage(mediaFiles);
 			event = (0, _general.createEvent)('error', t.mediaElement);
@@ -766,7 +575,6 @@ function MediaElement(idOrNode, options, sources) {
 			return;
 		}
 
-		// turn on the renderer (this checks for the existing renderer already)
 		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
 
 		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
@@ -774,11 +582,9 @@ function MediaElement(idOrNode, options, sources) {
 			event.message = 'Error creating renderer';
 			t.mediaElement.dispatchEvent(event);
 			t.mediaElement.createErrorMessage(mediaFiles);
-			return;
 		}
 	},
 	    assignMethods = function assignMethods(methodName) {
-		// run the method on the current renderer
 		t.mediaElement[methodName] = function () {
 			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
 				args[_key] = arguments[_key];
@@ -795,7 +601,6 @@ function MediaElement(idOrNode, options, sources) {
 		};
 	};
 
-	// Assign all methods/properties/events to fake node if renderer was found
 	addProperty(t.mediaElement, 'src', getSrc, setSrc);
 	t.mediaElement.getSrc = getSrc;
 	t.mediaElement.setSrc = setSrc;
@@ -808,38 +613,30 @@ function MediaElement(idOrNode, options, sources) {
 		assignMethods(methods[_i]);
 	}
 
-	// IE && iOS
 	t.mediaElement.events = {};
 
-	// start: fake events
 	t.mediaElement.addEventListener = function (eventName, callback) {
-		// create or find the array of callbacks for this eventName
 		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
 
-		// push the callback into the stack
 		t.mediaElement.events[eventName].push(callback);
 	};
 	t.mediaElement.removeEventListener = function (eventName, callback) {
-		// no eventName means remove all listeners
 		if (!eventName) {
 			t.mediaElement.events = {};
 			return true;
 		}
 
-		// see if we have any callbacks for this eventName
 		var callbacks = t.mediaElement.events[eventName];
 
 		if (!callbacks) {
 			return true;
 		}
 
-		// check for a specific callback
 		if (!callback) {
 			t.mediaElement.events[eventName] = [];
 			return true;
 		}
 
-		// remove the specific callback
 		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
 			if (callbacks[_i2] === callback) {
 				t.mediaElement.events[eventName].splice(_i2, 1);
@@ -849,10 +646,6 @@ function MediaElement(idOrNode, options, sources) {
 		return false;
 	};
 
-	/**
-  *
-  * @param {Event} event
-  */
 	t.mediaElement.dispatchEvent = function (event) {
 
 		var callbacks = t.mediaElement.events[event.type];
@@ -864,6 +657,27 @@ function MediaElement(idOrNode, options, sources) {
 		}
 	};
 
+	var processURL = function processURL(url, type) {
+
+		if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) {
+			var xhr = new XMLHttpRequest();
+			xhr.onreadystatechange = function () {
+				if (this.readyState === 4 && this.status === 200) {
+					var _url = _window2.default.URL || _window2.default.webkitURL,
+					    blobUrl = _url.createObjectURL(this.response);
+					t.mediaElement.originalNode.setAttribute('src', blobUrl);
+					return blobUrl;
+				}
+				return url;
+			};
+			xhr.open('GET', url);
+			xhr.responseType = 'blob';
+			xhr.send();
+		}
+
+		return url;
+	};
+
 	var mediaFiles = void 0;
 
 	if (sources !== null) {
@@ -873,7 +687,6 @@ function MediaElement(idOrNode, options, sources) {
 		mediaFiles = [];
 
 		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
-
 			case 'iframe':
 				mediaFiles.push({
 					type: '',
@@ -881,35 +694,32 @@ function MediaElement(idOrNode, options, sources) {
 				});
 
 				break;
-
 			case 'audio':
 			case 'video':
 				var _sources = t.mediaElement.originalNode.childNodes.length,
 				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
 
-				// Consider if node contains the `src` and `type` attributes
 				if (nodeSource) {
-					var node = t.mediaElement.originalNode;
+					var node = t.mediaElement.originalNode,
+					    type = (0, _media.formatType)(nodeSource, node.getAttribute('type'));
 					mediaFiles.push({
-						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
-						src: nodeSource
+						type: type,
+						src: processURL(nodeSource, type)
 					});
 				}
 
-				// test <source> types to see if they are usable
 				for (var _i4 = 0; _i4 < _sources; _i4++) {
 					var n = t.mediaElement.originalNode.childNodes[_i4];
 					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
 						var src = n.getAttribute('src'),
-						    type = (0, _media.formatType)(src, n.getAttribute('type'));
-						mediaFiles.push({ type: type, src: src });
+						    _type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: _type, src: processURL(src, _type) });
 					}
 				}
 				break;
 		}
 	}
 
-	// Set the best match based on renderers
 	if (mediaFiles.length) {
 		t.mediaElement.src = mediaFiles;
 	}
@@ -929,7 +739,7 @@ _window2.default.MediaElement = MediaElement;
 
 exports.default = MediaElement;
 
-},{"2":2,"21":21,"22":22,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+},{"19":19,"2":2,"21":21,"22":22,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -942,39 +752,19 @@ var _window2 = _interopRequireDefault(_window);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-// Namespace
 var mejs = {};
 
-// version number
-mejs.version = '4.1.0';
+mejs.version = '4.1.1';
 
-// Basic HTML5 settings
 mejs.html5media = {
-	/**
-  * @type {String[]}
-  */
-	properties: [
-	// GET/SET
-	'volume', 'src', 'currentTime', 'muted',
-
-	// GET only
-	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
-
-	// OTHERS
-	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	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'],
 	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
-	/**
-  * @type {String[]}
-  */
+
 	methods: ['load', 'play', 'pause', 'canPlayType'],
-	/**
-  * @type {String[]}
-  */
+
 	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
-	/**
-  * @type {String[]}
-  */
-	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']
+
+	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']
 };
 
 _window2.default.mejs = mejs;
@@ -1001,11 +791,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-/**
- *
- * Class to manage renderer selection and addition.
- * @class Renderer
- */
 var Renderer = function () {
 	function Renderer() {
 		_classCallCheck(this, Renderer);
@@ -1014,18 +799,9 @@ var Renderer = function () {
 		this.order = [];
 	}
 
-	/**
-  * Register a new renderer.
-  *
-  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
-  * @method add
-  */
-
-
 	_createClass(Renderer, [{
 		key: 'add',
 		value: function add(renderer) {
-
 			if (renderer.name === undefined) {
 				throw new TypeError('renderer must contain at least `name` property');
 			}
@@ -1033,35 +809,20 @@ var Renderer = function () {
 			this.renderers[renderer.name] = renderer;
 			this.order.push(renderer.name);
 		}
-
-		/**
-   * Iterate a list of renderers to determine which one should the player use.
-   *
-   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
-   * @param {?String[]} renderers - Optional list of pre-selected renderers
-   * @return {?Object} The renderer's name and source selected
-   * @method select
-   */
-
 	}, {
 		key: 'select',
 		value: function select(mediaFiles) {
 			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
 
-
 			var renderersLength = renderers.length;
 
 			renderers = renderers.length ? renderers : this.order;
 
-			// If renderers are not set, set a default order:
-			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
-			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
-			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
 			if (!renderersLength) {
-				var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
 				    rendererRanking = function rendererRanking(renderer) {
 					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
-						if (renderer.match(rendererIndicator[i]) !== null) {
+						if (rendererIndicator[i].test(renderer)) {
 							return i;
 						}
 					}
@@ -1091,13 +852,9 @@ var Renderer = function () {
 
 			return null;
 		}
-
-		// Setters/getters
-
 	}, {
 		key: 'order',
 		set: function set(order) {
-
 			if (!Array.isArray(order)) {
 				throw new TypeError('order must be an array of strings.');
 			}
@@ -1110,7 +867,6 @@ var Renderer = function () {
 	}, {
 		key: 'renderers',
 		set: function set(renderers) {
-
 			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
 				throw new TypeError('renderers must be an array of objects.');
 			}
@@ -1160,68 +916,26 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Fullscreen button
- *
- * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it
- * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {Boolean}
-  */
 	usePluginFullScreen: true,
-	/**
-  * @type {?String}
-  */
+
 	fullscreenText: null
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * @type {Boolean}
-  */
 	isFullScreen: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isNativeFullScreen: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isInIframe: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isPluginClickThroughCreated: false,
-	/**
-  * Possible modes
-  * (1) 'native-native'  HTML5 video  + browser fullscreen (IE10+, etc.)
-  * (2) 'plugin-native'  plugin video + browser fullscreen (fails in some versions of Firefox)
-  * (3) 'fullwindow'     Full window (retains all UI)
-  *
-  * @type {String}
-  */
+
 	fullscreenMode: '',
-	/**
-  *
-  */
+
 	containerSizeTimeout: null,
 
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildfullscreen: function buildfullscreen(player) {
-
 		if (!player.isVideo) {
 			return;
 		}
@@ -1239,7 +953,6 @@ Object.assign(_player2.default.prototype, {
 		t.addControlElement(fullscreenBtn, 'fullscreen');
 
 		fullscreenBtn.addEventListener('click', function () {
-			// toggle fullscreen
 			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
 
 			if (isFullScreen) {
@@ -1261,26 +974,16 @@ Object.assign(_player2.default.prototype, {
 		t.normalHeight = 0;
 		t.normalWidth = 0;
 
-		// setup native fullscreen event
 		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
-
-			//
-			/**
-    * Detect any changes on fullscreen
-    *
-    * Chrome doesn't always fire this in an `<iframe>`
-    * @private
-    */
 			var fullscreenChanged = function fullscreenChanged() {
 				if (player.isFullScreen) {
 					if (Features.isFullScreen()) {
 						player.isNativeFullScreen = true;
-						// reset the controls once we are fully in full screen
+
 						player.setControlsSize();
 					} else {
 						player.isNativeFullScreen = false;
-						// when a user presses ESC
-						// make sure to put the player back into place
+
 						player.exitFullScreen();
 					}
 				}
@@ -1289,17 +992,9 @@ Object.assign(_player2.default.prototype, {
 			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
 		}
 	},
-
-
-	/**
-  * Detect the type of fullscreen based on browser's capabilities
-  *
-  * @return {String}
-  */
 	detectFullscreenMode: function detectFullscreenMode() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
 		var mode = '';
 
@@ -1316,26 +1011,12 @@ Object.assign(_player2.default.prototype, {
 		t.fullscreenMode = mode;
 		return mode;
 	},
-
-
-	/**
-  * Feature destructor.
-  *
-  * Always has to be prefixed with `clean` and the name that was used in features list
-  * @param {MediaElementPlayer} player
-  */
 	cleanfullscreen: function cleanfullscreen(player) {
 		player.exitFullScreen();
 	},
-
-
-	/**
-  *
-  */
 	enterFullScreen: function enterFullScreen() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null,
+		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
 		    containerStyles = getComputedStyle(t.container);
 
 		if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN) {
@@ -1347,52 +1028,38 @@ Object.assign(_player2.default.prototype, {
 			return;
 		}
 
-		// set it to not show scroll bars so 100% will work
 		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
 		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
 
-		// store sizing
 		t.normalHeight = parseFloat(containerStyles.height);
 		t.normalWidth = parseFloat(containerStyles.width);
 
-		// attempt to do true fullscreen
 		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
-
 			Features.requestFullScreen(t.container);
 
 			if (t.isInIframe) {
-				// sometimes exiting from fullscreen doesn't work
-				// notably in Chrome <iframe>. Fixed in version 17
 				setTimeout(function checkFullscreen() {
 
 					if (t.isNativeFullScreen) {
 						var percentErrorMargin = 0.002,
-						    // 0.2%
-						windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
+						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
 						    screenWidth = screen.width,
 						    absDiff = Math.abs(screenWidth - windowWidth),
 						    marginError = screenWidth * percentErrorMargin;
 
-						// check if the video is suddenly not really fullscreen
 						if (absDiff > marginError) {
-							// manually exit
 							t.exitFullScreen();
 						} else {
-							// test again
 							setTimeout(checkFullscreen, 500);
 						}
 					}
 				}, 1000);
 			}
-		} else if (t.fullscreeMode === 'fullwindow') {}
-		// move into position
+		}
 
-		// make full size
 		t.container.style.width = '100%';
 		t.container.style.height = '100%';
 
-		// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
-		// Actually, it seems to be needed for IE8, too
 		t.containerSizeTimeout = setTimeout(function () {
 			t.container.style.width = '100%';
 			t.container.style.height = '100%';
@@ -1440,25 +1107,16 @@ Object.assign(_player2.default.prototype, {
 		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
 		t.container.dispatchEvent(event);
 	},
-
-
-	/**
-  *
-  */
 	exitFullScreen: function exitFullScreen() {
-
 		var t = this,
-		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
-		// Prevent container from attempting to stretch a second time
 		clearTimeout(t.containerSizeTimeout);
 
-		// come out of native fullscreen
 		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
 			Features.cancelFullScreen();
 		}
 
-		// restore scroll bars to document
 		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
 		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
 
@@ -1530,38 +1188,14 @@ var _dom = _dereq_(20);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Play/Pause button
- *
- * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state
- * between paused and playing.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {?String}
-  */
 	playText: null,
-	/**
-  * @type {?String}
-  */
+
 	pauseText: null
 });
 
 Object.assign(_player2.default.prototype, {
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  * @public
-  */
 	buildplaypause: function buildplaypause(player, controls, layers, media) {
-
 		var t = this,
 		    op = t.options,
 		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
@@ -1581,10 +1215,6 @@ Object.assign(_player2.default.prototype, {
 		var playBtn = play.querySelector('button');
 		t.addControlElement(play, 'playpause');
 
-		/**
-   * @private
-   * @param {String} which - token to determine new state of button
-   */
 		function togglePlayPause(which) {
 			if ('play' === which) {
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
@@ -1605,8 +1235,7 @@ Object.assign(_player2.default.prototype, {
 		togglePlayPause('pse');
 
 		media.addEventListener('loadedmetadata', function () {
-			// `loadedmetadata` in Flash is executed simultaneously with `play`, so avoid it
-			if (media.rendererName.match(/flash/) === null) {
+			if (media.rendererName.indexOf('flash') === -1) {
 				togglePlayPause('pse');
 			}
 		});
@@ -1620,7 +1249,6 @@ Object.assign(_player2.default.prototype, {
 			togglePlayPause('pse');
 		});
 		media.addEventListener('ended', function () {
-
 			if (!player.options.loop) {
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
 				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
@@ -1635,8 +1263,6 @@ Object.assign(_player2.default.prototype, {
 },{"16":16,"2":2,"20":20,"21":21,"4":4}],10:[function(_dereq_,module,exports){
 'use strict';
 
-// import window from 'global/window';
-
 var _document = _dereq_(2);
 
 var _document2 = _interopRequireDefault(_document);
@@ -1657,38 +1283,13 @@ var _dom = _dereq_(20);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Progress/loaded bar
- *
- * This feature creates a progress bar with a slider in the control bar, and updates it based on native events.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * Enable tooltip that shows time in progress bar
-  * @type {Boolean}
-  */
 	enableProgressTooltip: true,
 
-	/**
-  * Enable smooth behavior when hovering progress bar
-  * @type {Boolean}
-  */
 	useSmoothHover: true
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildprogress: function buildprogress(player, controls, layers, media) {
 
 		var lastKeyPressTime = 0,
@@ -1697,7 +1298,7 @@ Object.assign(_player2.default.prototype, {
 
 		var t = this,
 		    autoRewindInitial = player.options.autoRewind,
-		    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>' : "",
+		    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>' : '',
 		    rail = _document2.default.createElement('div');
 
 		rail.className = t.options.classPrefix + 'time-rail';
@@ -1726,13 +1327,7 @@ Object.assign(_player2.default.prototype, {
 			element.style.OTransform = value;
 		};
 
-		/**
-   *
-   * @private
-   * @param {Event} e
-   */
 		var handleMouseMove = function handleMouseMove(e) {
-
 			var totalStyles = getComputedStyle(t.total),
 			    offsetStyles = (0, _dom.offset)(t.total),
 			    width = parseFloat(totalStyles.width),
@@ -1763,11 +1358,9 @@ Object.assign(_player2.default.prototype, {
 			    pos = 0,
 			    x = void 0;
 
-			// mouse or touch position relative to the object
 			if (e.originalEvent && e.originalEvent.changedTouches) {
 				x = e.originalEvent.changedTouches[0].pageX;
 			} else if (e.changedTouches) {
-				// for Zepto
 				x = e.changedTouches[0].pageX;
 			} else {
 				x = e.pageX;
@@ -1784,13 +1377,11 @@ Object.assign(_player2.default.prototype, {
 				percentage = pos / width;
 				t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration;
 
-				// fake seek to where the mouse is
 				if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
 					t.setCurrentRailHandle(t.newTime);
 					t.updateCurrent(t.newTime);
 				}
 
-				// position floating time box
 				if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
 					if (pos < 0) {
 						pos = 0;
@@ -1817,15 +1408,7 @@ Object.assign(_player2.default.prototype, {
 				}
 			}
 		},
-
-		/**
-   * Update elements in progress bar for accessibility purposes only when player is paused.
-   *
-   * This is to avoid attempts to repeat the time over and over again when media is playing.
-   * @private
-   */
-		updateSlider = function updateSlider() {
-
+		    updateSlider = function updateSlider() {
 			var seconds = media.currentTime,
 			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
 			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
@@ -1848,19 +1431,12 @@ Object.assign(_player2.default.prototype, {
 				t.slider.removeAttribute('aria-valuetext');
 			}
 		},
-
-		/**
-   *
-   * @private
-   */
-		restartPlayer = function restartPlayer() {
-			var now = new Date();
-			if (now - lastKeyPressTime >= 1000) {
+		    restartPlayer = function restartPlayer() {
+			if (new Date() - lastKeyPressTime >= 1000) {
 				media.play();
 			}
 		},
 		    handleMouseup = function handleMouseup() {
-
 			if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
 				media.setCurrentTime(t.newTime);
 				player.setCurrentRail();
@@ -1872,7 +1448,6 @@ Object.assign(_player2.default.prototype, {
 			t.forcedHandlePause = false;
 		};
 
-		// Events
 		t.slider.addEventListener('focus', function () {
 			player.options.autoRewind = false;
 		});
@@ -1880,7 +1455,6 @@ Object.assign(_player2.default.prototype, {
 			player.options.autoRewind = autoRewindInitial;
 		});
 		t.slider.addEventListener('keydown', function (e) {
-
 			if (new Date() - lastKeyPressTime >= 1000) {
 				startedPaused = media.paused;
 			}
@@ -1895,30 +1469,25 @@ Object.assign(_player2.default.prototype, {
 				var seekTime = media.currentTime;
 
 				switch (keyCode) {
-					case 37: // left
+					case 37:
 					case 40:
-						// Down
 						if (media.duration !== Infinity) {
 							seekTime -= seekBackward;
 						}
 						break;
-					case 39: // Right
+					case 39:
 					case 38:
-						// Up
 						if (media.duration !== Infinity) {
 							seekTime += seekForward;
 						}
 						break;
 					case 36:
-						// Home
 						seekTime = 0;
 						break;
 					case 35:
-						// end
 						seekTime = duration;
 						break;
 					case 32:
-						// space
 						if (!_constants.IS_FIREFOX) {
 							if (media.paused) {
 								media.play();
@@ -1928,7 +1497,6 @@ Object.assign(_player2.default.prototype, {
 						}
 						return;
 					case 13:
-						// enter
 						if (media.paused) {
 							media.play();
 						} else {
@@ -1958,7 +1526,6 @@ Object.assign(_player2.default.prototype, {
 
 		var events = ['mousedown', 'touchstart'];
 
-		// Required to manipulate mouse movements that require drag 'n' drop properly
 		t.slider.addEventListener('dragstart', function () {
 			return false;
 		});
@@ -1967,9 +1534,7 @@ Object.assign(_player2.default.prototype, {
 			t.slider.addEventListener(events[i], function (e) {
 				t.forcedHandlePause = false;
 				if (media.duration !== Infinity) {
-					// only handle left clicks or touch
 					if (e.which === 1 || e.which === 0) {
-
 						if (!media.paused) {
 							t.media.pause();
 							t.forcedHandlePause = true;
@@ -2029,9 +1594,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 
-		// loading
-		// If media is does not have a finite duration, remove progress bar interaction
-		// and indicate that is a live broadcast
 		media.addEventListener('progress', function (e) {
 			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
 			if (media.duration !== Infinity) {
@@ -2052,7 +1614,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 
-		// current time
 		media.addEventListener('timeupdate', function (e) {
 			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
 			if (media.duration !== Infinity) {
@@ -2084,79 +1645,41 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Calculate the progress on the media and update progress bar's width
-  *
-  * @param {Event} e
-  */
 	setProgressRail: function setProgressRail(e) {
-
-		var percent = null;
-
 		var t = this,
 		    target = e !== undefined ? e.target : t.media;
 
-		// newest HTML5 spec has buffered array (FF4, Webkit)
+		var percent = null;
+
 		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
-			// account for a real array with multiple values - always read the end of the last buffer
 			percent = target.buffered.end(target.buffered.length - 1) / target.duration;
-		}
-		// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
-		// to be anything other than 0. If the byte count is available we use this instead.
-		// Browsers that support the else if do not seem to have the bufferedBytes value and
-		// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
-		else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
+		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
 				percent = target.bufferedBytes / target.bytesTotal;
-			}
-			// Firefox 3 with an Ogg file seems to go this way
-			else if (e && e.lengthComputable && e.total !== 0) {
+			} else if (e && e.lengthComputable && e.total !== 0) {
 					percent = e.loaded / e.total;
 				}
 
-		// finally update the progress bar
 		if (percent !== null) {
 			percent = Math.min(1, Math.max(0, percent));
-			// update loaded bar
+
 			if (t.loaded && t.total) {
 				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
 			}
 		}
 	},
-
-	/**
-  * Update the slider's width depending on the time assigned
-  *
-  * @param {Number} fakeTime
-  */
 	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
 		var t = this;
 		t.setCurrentRailMain(t, fakeTime);
 	},
-
-	/**
-  * Update the slider's width depending on the current time
-  *
-  */
 	setCurrentRail: function setCurrentRail() {
 		var t = this;
 		t.setCurrentRailMain(t);
 	},
-
-	/**
-  * Method that handles the calculation of the width of the rail.
-  *
-  * @param {MediaElementPlayer} t
-  * @param {?Number} fakeTime
-  */
 	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
 		if (t.media.currentTime !== undefined && t.media.duration) {
 			var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime;
 
-			// update bar and handle
 			if (t.total && t.handle) {
-
 				var tW = parseFloat(getComputedStyle(t.total).width);
 
 				var newWidth = Math.round(tW * nTime / t.media.duration),
@@ -2203,36 +1726,13 @@ var _dom = _dereq_(20);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Current/duration times
- *
- * This feature creates/updates the duration and progress times in the control bar, based on native events.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * The initial duration
-  * @type {Number}
-  */
 	duration: 0,
-	/**
-  * @type {String}
-  */
+
 	timeAndDurationSeparator: '<span> | </span>'
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Current time constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildcurrent: function buildcurrent(player, controls, layers, media) {
 		var t = this,
 		    time = _document2.default.createElement('div');
@@ -2250,27 +1750,13 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Duration time constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildduration: function buildduration(player, controls, layers, media) {
-
 		var t = this,
 		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
 
 		if (currTime) {
 			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) + '</span>');
 		} else {
-
-			// add class to current time
 			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
 				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
 			}
@@ -2288,12 +1774,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		});
 	},
-
-
-	/**
-  * Update the current time and output it in format 00:00
-  *
-  */
 	updateCurrent: function updateCurrent() {
 		var t = this;
 
@@ -2307,12 +1787,6 @@ Object.assign(_player2.default.prototype, {
 			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
 		}
 	},
-
-
-	/**
-  * Update the duration time and output it in format 00:00
-  *
-  */
 	updateDuration: function updateDuration() {
 		var t = this;
 
@@ -2328,7 +1802,6 @@ Object.assign(_player2.default.prototype, {
 
 		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
 
-		// Toggle long-video class if time code is >5 digits (MM:SS)
 		if (timecode.length > 5) {
 			(0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video');
 		}
@@ -2366,68 +1839,25 @@ var _dom = _dereq_(20);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Closed Captions (CC) button
- *
- * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media
- * with a certain language (if available), toggle captions, etc.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.)
-  * If there are multiple tracks for one language, the last track node found is activated
-  * @see https://www.loc.gov/standards/iso639-2/php/code_list.php
-  * @type {String}
-  */
 	startLanguage: '',
-	/**
-  * @type {?String}
-  */
+
 	tracksText: null,
-	/**
-  * @type {?String}
-  */
+
 	chaptersText: null,
-	/**
-  * Avoid to screen reader speak captions over an audio track.
-  *
-  * @type {Boolean}
-  */
+
 	tracksAriaLive: false,
-	/**
-  * Remove the [cc] button when no track nodes are present
-  * @type {Boolean}
-  */
+
 	hideCaptionsButtonWhenEmpty: true,
-	/**
-  * Change captions to pop-up if true and only one track node is found
-  * @type {Boolean}
-  */
+
 	toggleCaptionsButtonWhenOnlyOne: false,
-	/**
-  * @type {String}
-  */
+
 	slidesSelector: ''
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * @type {Boolean}
-  */
 	hasChapters: false,
 
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  */
 	buildtracks: function buildtracks(player, controls, layers, media) {
 
 		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
@@ -2440,7 +1870,6 @@ Object.assign(_player2.default.prototype, {
 		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
 		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
 
-		// If browser will do native captions, prefer mejs captions, loop through tracks and hide
 		if (t.domNode.textTracks) {
 			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
 				t.domNode.textTracks[i].mode = 'hidden';
@@ -2484,7 +1913,6 @@ Object.assign(_player2.default.prototype, {
 		player.selectedTrack = null;
 		player.isLoadingTrack = false;
 
-		// add to list
 		for (var _i2 = 0; _i2 < total; _i2++) {
 			var _kind = player.tracks[_i2].kind;
 			if (_kind === 'subtitles' || _kind === 'captions') {
@@ -2492,15 +1920,12 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 
-		// start loading tracks
 		player.loadNextTrack();
 
 		var inEvents = ['mouseenter', 'focusin'],
 		    outEvents = ['mouseleave', 'focusout'];
 
-		// if only one language then just make the button a toggle
 		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
-			// click
 			player.captionsButton.addEventListener('click', function () {
 				var trackId = 'none';
 				if (player.selectedTrack === null) {
@@ -2511,7 +1936,7 @@ Object.assign(_player2.default.prototype, {
 		} else {
 			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
 			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
-			// hover or keyboard focus
+
 			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
 				player.captionsButton.addEventListener(inEvents[_i3], function () {
 					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
@@ -2524,12 +1949,8 @@ Object.assign(_player2.default.prototype, {
 				});
 			}
 
-			// handle clicks to the language radio buttons
 			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
 				captions[_i5].addEventListener('click', function () {
-					// value is trackId, same as the actual id, and we're using it here
-					// because the "none" checkbox doesn't have a trackId
-					// to use, but we want to know when "none" is clicked
 					player.setTrack(this.value);
 				});
 			}
@@ -2544,7 +1965,6 @@ Object.assign(_player2.default.prototype, {
 				});
 			}
 
-			//Allow up/down arrow to change the selected radio without changing the volume.
 			player.captionsButton.addEventListener('keydown', function (e) {
 				e.stopPropagation();
 			});
@@ -2564,21 +1984,17 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 
-		//Allow up/down arrow to change the selected radio without changing the volume.
 		player.chaptersButton.addEventListener('keydown', function (e) {
 			e.stopPropagation();
 		});
 
 		if (!player.options.alwaysShowControls) {
-			// move with controls
 			player.container.addEventListener('controlsshown', function () {
-				// push captions above controls
 				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
 			});
 
 			player.container.addEventListener('controlshidden', function () {
 				if (!media.paused) {
-					// move back to normal place
 					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
 				}
 			});
@@ -2598,16 +2014,7 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  * Feature destructor.
-  *
-  * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  */
 	cleartracks: function cleartracks(player) {
-
 		if (player) {
 			if (player.captions) {
 				player.captions.remove();
@@ -2636,7 +2043,6 @@ Object.assign(_player2.default.prototype, {
 		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
 		    total = tracktags.length;
 
-		// store for use by plugins
 		t.tracks = [];
 		for (var i = 0; i < total; i++) {
 			var track = tracktags[i],
@@ -2653,12 +2059,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId, or "none" to disable captions
-  */
 	setTrack: function setTrack(trackId) {
 
 		var t = this,
@@ -2704,11 +2104,6 @@ Object.assign(_player2.default.prototype, {
 		event.detail.caption = t.selectedTrack;
 		t.media.dispatchEvent(event);
 	},
-
-
-	/**
-  *
-  */
 	loadNextTrack: function loadNextTrack() {
 		var t = this;
 
@@ -2717,37 +2112,25 @@ Object.assign(_player2.default.prototype, {
 			t.isLoadingTrack = true;
 			t.loadTrack(t.trackToLoad);
 		} else {
-			// add done?
 			t.isLoadingTrack = false;
 			t.checkForTracks();
 		}
 	},
-
-
-	/**
-  *
-  * @param index
-  */
 	loadTrack: function loadTrack(index) {
 		var t = this,
 		    track = t.tracks[index];
 
 		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
 			(0, _dom.ajax)(track.src, 'text', function (d) {
-
-				// parse the loaded file
 				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
 
 				track.isLoaded = true;
-
 				t.enableTrackButton(track);
 				t.loadNextTrack();
 
 				if (track.kind === 'slides') {
 					t.setupSlides(track);
-				}
-				// Load by default the first track with `chapters` kind
-				else if (track.kind === 'chapters' && !t.hasChapters) {
+				} else if (track.kind === 'chapters' && !t.hasChapters) {
 						t.drawChapters(track);
 						t.hasChapters = true;
 					}
@@ -2757,12 +2140,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} track - The language code
-  */
 	enableTrackButton: function enableTrackButton(track) {
 		var t = this,
 		    lang = track.srclang,
@@ -2785,23 +2162,14 @@ Object.assign(_player2.default.prototype, {
 			targetSiblings[i].innerHTML = label;
 		}
 
-		// auto select
 		if (t.options.startLanguage === lang) {
 			target.checked = true;
 			var event = (0, _general.createEvent)('click', target);
 			target.dispatchEvent(event);
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId
-  */
 	removeTrackButton: function removeTrackButton(trackId) {
-
 		var element = _document2.default.getElementById('' + trackId);
-
 		if (element) {
 			var button = element.closest('li');
 			if (button) {
@@ -2809,36 +2177,19 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 	},
-
-
-	/**
-  *
-  * @param {String} trackId
-  * @param {String} lang - The language code
-  * @param {String} label
-  */
 	addTrackButton: function addTrackButton(trackId, lang, label) {
 		var t = this;
 		if (label === '') {
 			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
 		}
 
-		// trackId is used in the value, too, because the "none"
-		// caption option doesn't have a trackId but we need to be able
-		// to set it, too
-		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">' + label + ' (loading)</label>') + '</li>';
+		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>';
 	},
-
-
-	/**
-  *
-  */
 	checkForTracks: function checkForTracks() {
 		var t = this;
 
 		var hasSubtitles = false;
 
-		// check if any subtitles
 		if (t.options.hideCaptionsButtonWhenEmpty) {
 			for (var i = 0, total = t.tracks.length; i < total; i++) {
 				var kind = t.tracks[i].kind;
@@ -2852,13 +2203,7 @@ Object.assign(_player2.default.prototype, {
 			t.setControlsSize();
 		}
 	},
-
-
-	/**
-  *
-  */
 	displayCaptions: function displayCaptions() {
-
 		if (this.tracks === undefined) {
 			return;
 		}
@@ -2866,19 +2211,15 @@ Object.assign(_player2.default.prototype, {
 		var t = this,
 		    track = t.selectedTrack,
 		    sanitize = function sanitize(html) {
-
 			var div = _document2.default.createElement('div');
 			div.innerHTML = html;
 
-			// Remove all `<script>` tags first
 			var scripts = div.getElementsByTagName('script');
 			var i = scripts.length;
 			while (i--) {
 				scripts[i].remove();
 			}
 
-			// Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute
-			// (`onerror`, `onclick`, etc.)
 			var allElements = div.getElementsByTagName('*');
 			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
 				var attributesObj = allElements[_i12].attributes,
@@ -2898,38 +2239,23 @@ Object.assign(_player2.default.prototype, {
 		if (track !== null && track.isLoaded) {
 			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
 			if (i > -1) {
-				// Set the line before the timecode as a class so the cue can be targeted if needed
 				t.captionsText.innerHTML = sanitize(track.entries[i].text);
 				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
 				t.captions.style.display = '';
 				t.captions.style.height = '0px';
-				return; // exit out if one is visible;
+				return;
 			}
-
 			t.captions.style.display = 'none';
 		} else {
 			t.captions.style.display = 'none';
 		}
 	},
-
-
-	/**
-  *
-  * @param {HTMLElement} track
-  */
 	setupSlides: function setupSlides(track) {
 		var t = this;
-
 		t.slides = track;
 		t.slides.entries.imgs = [t.slides.entries.length];
 		t.showSlide(0);
 	},
-
-
-	/**
-  *
-  * @param {Number} index
-  */
 	showSlide: function showSlide(index) {
 		var _this = this;
 
@@ -2944,7 +2270,6 @@ Object.assign(_player2.default.prototype, {
 		var img = t.slides.entries[index].imgs;
 
 		if (img === undefined || img.fadeIn === undefined) {
-
 			var image = _document2.default.createElement('img');
 			image.src = url;
 			image.addEventListener('load', function () {
@@ -2970,11 +2295,6 @@ Object.assign(_player2.default.prototype, {
 			}
 		}
 	},
-
-
-	/**
-  *
-  */
 	displaySlides: function displaySlides() {
 		var t = this;
 
@@ -2987,15 +2307,8 @@ Object.assign(_player2.default.prototype, {
 
 		if (i > -1) {
 			t.showSlide(i);
-			return; // exit out if one is visible;
 		}
 	},
-
-
-	/**
-  *
-  * @param {Object} chapters
-  */
 	drawChapters: function drawChapters(chapters) {
 		var t = this,
 		    total = chapters.entries.length;
@@ -3007,7 +2320,7 @@ Object.assign(_player2.default.prototype, {
 		t.chaptersButton.querySelector('ul').innerHTML = '';
 
 		for (var i = 0; i < total; i++) {
-			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" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>';
+			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>';
 		}
 
 		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
@@ -3049,14 +2362,6 @@ Object.assign(_player2.default.prototype, {
 			});
 		}
 	},
-
-	/**
-  * Perform binary search to look for proper track index
-  *
-  * @param {Object[]} tracks
-  * @param {Number} currentTime
-  * @return {Number}
-  */
 	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
 		var lo = 0,
 		    hi = tracks.length - 1,
@@ -3082,11 +2387,6 @@ Object.assign(_player2.default.prototype, {
 	}
 });
 
-/**
- * Map all possible languages with their respective code
- *
- * @constructor
- */
 _mejs2.default.language = {
 	codes: {
 		af: 'mejs.afrikaans',
@@ -3147,35 +2447,10 @@ _mejs2.default.language = {
 	}
 };
 
-/*
- Parses WebVTT format which should be formatted as
- ================================
- WEBVTT
-
- 1
- 00:00:01,1 --> 00:00:05,000
- A line of text
-
- 2
- 00:01:15,1 --> 00:02:05,000
- A second line of text
-
- ===============================
-
- Adapted from: http://www.delphiki.com/html5/playr
- */
 _mejs2.default.TrackFormatParser = {
 	webvtt: {
-		/**
-   * @type {String}
-   */
 		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})?)(.*)$/,
 
-		/**
-   *
-   * @param {String} trackText
-   * @returns {{text: Array, times: Array}}
-   */
 		parse: function parse(trackText) {
 			var lines = trackText.split(/\r?\n/),
 			    entries = [];
@@ -3192,7 +2467,7 @@ _mejs2.default.TrackFormatParser = {
 						identifier = lines[i - 1];
 					}
 					i++;
-					// grab all the (possibly multi-line) text that follows
+
 					text = lines[i];
 					i++;
 					while (lines[i] !== '' && i < lines.length) {
@@ -3213,13 +2488,8 @@ _mejs2.default.TrackFormatParser = {
 			return entries;
 		}
 	},
-	// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
+
 	dfxp: {
-		/**
-   *
-   * @param {String} trackText
-   * @returns {{text: Array, times: Array}}
-   */
 		parse: function parse(trackText) {
 			trackText = $(trackText).filter('tt');
 			var container = trackText.firstChild,
@@ -3305,56 +2575,22 @@ var _dom = _dereq_(20);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Volume button
- *
- * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its
- * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc.
- */
-
-// Feature configuration
 Object.assign(_player.config, {
-	/**
-  * @type {?String}
-  */
 	muteText: null,
-	/**
-  * @type {?String}
-  */
+
 	unmuteText: null,
-	/**
-  * @type {?String}
-  */
+
 	allyVolumeControlText: null,
-	/**
-  * @type {Boolean}
-  */
+
 	hideVolumeOnTouchDevices: true,
-	/**
-  * @type {String}
-  */
+
 	audioVolume: 'horizontal',
-	/**
-  * @type {String}
-  */
+
 	videoVolume: 'vertical'
 });
 
 Object.assign(_player2.default.prototype, {
-
-	/**
-  * Feature constructor.
-  *
-  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
-  * @param {MediaElementPlayer} player
-  * @param {$} controls
-  * @param {$} layers
-  * @param {HTMLElement} media
-  * @public
-  */
 	buildvolume: function buildvolume(player, controls, layers, media) {
-
-		// Android and iOS don't support volume controls
 		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
 			return;
 		}
@@ -3367,55 +2603,55 @@ Object.assign(_player2.default.prototype, {
 		    mute = _document2.default.createElement('div');
 
 		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
-		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">') + ('<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>';
+		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>';
 
 		t.addControlElement(mute, 'volume');
 
-		// horizontal version
 		if (mode === 'horizontal') {
 			var anchor = _document2.default.createElement('a');
 			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
 			anchor.href = 'javascript:void(0);';
+			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
+			anchor.setAttribute('aria-valuemin', 0);
+			anchor.setAttribute('aria-valuemax', 100);
+			anchor.setAttribute('role', 'slider');
 			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + 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>';
 			mute.parentNode.insertBefore(anchor, mute.nextSibling);
 		}
 
+		var mouseIsDown = false,
+		    mouseIsOver = false,
+		    updateVolumeSlider = function updateVolumeSlider() {
+			var volume = Math.floor(media.volume * 100);
+			volumeSlider.setAttribute('aria-valuenow', volume);
+			volumeSlider.setAttribute('aria-valuetext', volume + '%');
+		};
+
 		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
 		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
 		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
 		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
-		    button = mute.firstElementChild,
-
-
-		/**
-   * @private
-   * @param {Number} volume
-   */
-		positionVolumeHandle = function positionVolumeHandle(volume) {
-
-			// correct to 0-1
+		    positionVolumeHandle = function positionVolumeHandle(volume) {
 			volume = Math.max(0, volume);
 			volume = Math.min(volume, 1);
 
-			// adjust mute button style
 			if (volume === 0) {
 				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
 				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
-				var _button = mute.firstElementChild;
-				_button.setAttribute('title', unmuteText);
-				_button.setAttribute('aria-label', unmuteText);
+				var button = mute.firstElementChild;
+				button.setAttribute('title', unmuteText);
+				button.setAttribute('aria-label', unmuteText);
 			} else {
 				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
 				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
-				var _button2 = mute.firstElementChild;
-				_button2.setAttribute('title', muteText);
-				_button2.setAttribute('aria-label', muteText);
+				var _button = mute.firstElementChild;
+				_button.setAttribute('title', muteText);
+				_button.setAttribute('aria-label', muteText);
 			}
 
 			var volumePercentage = volume * 100 + '%',
 			    volumeStyles = getComputedStyle(volumeHandle);
 
-			// position slider
 			if (mode === 'vertical') {
 				volumeCurrent.style.bottom = 0;
 				volumeCurrent.style.height = volumePercentage;
@@ -3428,26 +2664,18 @@ Object.assign(_player2.default.prototype, {
 				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
 			}
 		},
-
-		/**
-   * @private
-   */
-		handleVolumeMove = function handleVolumeMove(e) {
-
+		    handleVolumeMove = function handleVolumeMove(e) {
 			var totalOffset = (0, _dom.offset)(volumeTotal),
 			    volumeStyles = getComputedStyle(volumeTotal);
 
 			var volume = null;
 
-			// calculate the new volume based on the most recent position
 			if (mode === 'vertical') {
-
 				var railHeight = parseFloat(volumeStyles.height),
 				    newY = e.pageY - totalOffset.top;
 
 				volume = (railHeight - newY) / railHeight;
 
-				// the controls just hide themselves (usually when mouse moves too far up)
 				if (totalOffset.top === 0 || totalOffset.left === 0) {
 					return;
 				}
@@ -3458,14 +2686,11 @@ Object.assign(_player2.default.prototype, {
 				volume = newX / railWidth;
 			}
 
-			// ensure the volume isn't outside 0-1
 			volume = Math.max(0, volume);
 			volume = Math.min(volume, 1);
 
-			// position the slider and handle
 			positionVolumeHandle(volume);
 
-			// set the media object (this will trigger the `volumechanged` event)
 			if (volume === 0) {
 				media.setMuted(true);
 			} else {
@@ -3489,6 +2714,12 @@ Object.assign(_player2.default.prototype, {
 			volumeSlider.style.display = 'block';
 			mouseIsOver = true;
 		});
+
+		mute.addEventListener('focusout', function (e) {
+			if (!e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider') && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
 		mute.addEventListener('mouseleave', function () {
 			mouseIsOver = false;
 			if (!mouseIsDown && mode === 'vertical') {
@@ -3497,22 +2728,17 @@ Object.assign(_player2.default.prototype, {
 		});
 		mute.addEventListener('focusout', function () {
 			mouseIsOver = false;
-			if (!mouseIsDown && mode === 'vertical') {
-				volumeSlider.style.display = 'none';
-			}
 		});
 		mute.addEventListener('keydown', function (e) {
-
 			if (t.options.keyActions.length) {
 				var keyCode = e.which || e.keyCode || 0,
 				    volume = media.volume;
+
 				switch (keyCode) {
 					case 38:
-						// Up
 						volume = Math.min(volume + 0.1, 1);
 						break;
 					case 40:
-						// Down
 						volume = Math.max(0, volume - 0.1);
 						break;
 					default:
@@ -3527,26 +2753,12 @@ Object.assign(_player2.default.prototype, {
 				e.stopPropagation();
 			}
 		});
+		mute.querySelector('button').addEventListener('click', function () {
+			media.setMuted(!media.muted);
+			var event = (0, _general.createEvent)('volumechange', media);
+			media.dispatchEvent(event);
+		});
 
-		var mouseIsDown = false,
-		    mouseIsOver = false,
-
-
-		/**
-   * @private
-   */
-		updateVolumeSlider = function updateVolumeSlider() {
-			var volume = Math.floor(media.volume * 100);
-			volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
-			volumeSlider.setAttribute('aria-valuemin', 0);
-			volumeSlider.setAttribute('aria-valuemax', 100);
-			volumeSlider.setAttribute('aria-valuenow', volume);
-			volumeSlider.setAttribute('aria-valuetext', volume + '%');
-			volumeSlider.setAttribute('role', 'slider');
-			volumeSlider.tabIndex = -1;
-		};
-
-		// Events
 		volumeSlider.addEventListener('dragstart', function () {
 			return false;
 		});
@@ -3554,6 +2766,16 @@ Object.assign(_player2.default.prototype, {
 		volumeSlider.addEventListener('mouseover', function () {
 			mouseIsOver = true;
 		});
+		volumeSlider.addEventListener('focusin', function () {
+			volumeSlider.style.display = 'block';
+			mouseIsOver = true;
+		});
+		volumeSlider.addEventListener('focusout', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
 		volumeSlider.addEventListener('mousedown', function (e) {
 			handleVolumeMove(e);
 			t.globalBind('mousemove.vol', function (event) {
@@ -3571,29 +2793,10 @@ Object.assign(_player2.default.prototype, {
 				}
 			});
 			mouseIsDown = true;
-
 			e.preventDefault();
 			e.stopPropagation();
 		});
 
-		// MUTE button
-		button.addEventListener('click', function () {
-			media.setMuted(!media.muted);
-			var event = (0, _general.createEvent)('volumechange', media);
-			media.dispatchEvent(event);
-		});
-		button.addEventListener('focus', function () {
-			if (mode === 'vertical') {
-				volumeSlider.style.display = 'block';
-			}
-		});
-		button.addEventListener('blur', function () {
-			if (mode === 'vertical') {
-				volumeSlider.style.display = 'none';
-			}
-		});
-
-		// listen for volume change events from other sources
 		media.addEventListener('volumechange', function (e) {
 			if (!mouseIsDown) {
 				if (media.muted) {
@@ -3609,17 +2812,11 @@ Object.assign(_player2.default.prototype, {
 			updateVolumeSlider(e);
 		});
 
-		// mutes the media and sets the volume icon muted if the initial volume is set to 0
 		if (player.options.startVolume === 0) {
 			media.setMuted(true);
 		}
 
-		// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
-		var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
-
-		if (isNative) {
-			media.setVolume(player.options.startVolume);
-		}
+		media.setVolume(player.options.startVolume);
 
 		t.container.addEventListener('controlsresize', function () {
 			if (media.muted) {
@@ -3638,53 +2835,33 @@ Object.assign(_player2.default.prototype, {
 },{"16":16,"19":19,"2":2,"20":20,"21":21,"4":4}],14:[function(_dereq_,module,exports){
 'use strict';
 
-/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
- */
-
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
 var EN = exports.EN = {
 	"mejs.plural-form": 1,
 
-	// core/mediaelement.js
 	"mejs.download-file": "Download File",
 
-	// renderers/flash.js
 	"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/",
 
-	// features/fullscreen.js
 	"mejs.fullscreen": "Fullscreen",
 
-	// features/playpause.js
 	"mejs.play": "Play",
 	"mejs.pause": "Pause",
 
-	// features/progress.js
 	"mejs.time-slider": "Time Slider",
 	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
 	"mejs.live-broadcast": "Live Broadcast",
 
-	// features/volume.js
 	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
 	"mejs.unmute": "Unmute",
 	"mejs.mute": "Mute",
 	"mejs.volume-slider": "Volume Slider",
 
-	// core/player.js
 	"mejs.video-player": "Video Player",
 	"mejs.audio-player": "Audio Player",
 
-	// features/tracks.js
 	"mejs.captions-subtitles": "Captions/Subtitles",
 	"mejs.captions-chapters": "Chapters",
 	"mejs.none": "None",
@@ -3820,109 +2997,91 @@ _mejs2.default.mepIndex = 0;
 
 _mejs2.default.players = {};
 
-// default player values
 var config = exports.config = {
-	// url to poster (to fix iOS 3.x)
 	poster: '',
-	// When the video is ended, show the poster.
+
 	showPosterWhenEnded: false,
-	// When the video is paused, show the poster.
+
 	showPosterWhenPaused: false,
-	// Default if the <video width> is not specified
+
 	defaultVideoWidth: 480,
-	// Default if the <video height> is not specified
+
 	defaultVideoHeight: 270,
-	// If set, overrides <video width>
+
 	videoWidth: -1,
-	// If set, overrides <video height>
+
 	videoHeight: -1,
-	// Default if the user doesn't specify
+
 	defaultAudioWidth: 400,
-	// Default if the user doesn't specify
+
 	defaultAudioHeight: 40,
-	// Default amount to move back when back key is pressed
+
 	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
 		return media.duration * 0.05;
 	},
-	// Default amount to move forward when forward key is pressed
+
 	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
 		return media.duration * 0.05;
 	},
-	// Set dimensions via JS instead of CSS
+
 	setDimensions: true,
-	// Width of audio player
+
 	audioWidth: -1,
-	// Height of audio player
+
 	audioHeight: -1,
-	// Initial volume when the player starts (overridden by user cookie)
+
 	startVolume: 0.8,
-	// Useful for <audio> player loops
+
 	loop: false,
-	// Rewind to beginning when media ends
+
 	autoRewind: true,
-	// Resize to media dimensions
+
 	enableAutosize: true,
-	/*
-  * Time format to use. Default: 'mm:ss'
-  * Supported units:
-  *   h: hour
-  *   m: minute
-  *   s: second
-  *   f: frame count
-  * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits.
-  * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible.
-  *
-  * Example to display 75 seconds:
-  * Format 'mm:ss': 01:15
-  * Format 'm:ss': 1:15
-  * Format 'm:s': 1:15
-  */
+
 	timeFormat: '',
-	// Force the hour marker (##:00:00)
+
 	alwaysShowHours: false,
-	// Show framecount in timecode (##:00:00:00)
+
 	showTimecodeFrameCount: false,
-	// Used when showTimecodeFrameCount is set to true
+
 	framesPerSecond: 25,
-	// Hide controls when playing and mouse is not over the video
+
 	alwaysShowControls: false,
-	// Display the video control when media is loading
+
 	hideVideoControlsOnLoad: false,
-	// Display the video controls when media is paused
+
 	hideVideoControlsOnPause: false,
-	// Enable click video element to toggle play/pause
+
 	clickToPlayPause: true,
-	// Time in ms to hide controls
+
 	controlsTimeoutDefault: 1500,
-	// Time in ms to trigger the timer when mouse moves
+
 	controlsTimeoutMouseEnter: 2500,
-	// Time in ms to trigger the timer when mouse leaves
+
 	controlsTimeoutMouseLeave: 1000,
-	// Force iPad's native controls
+
 	iPadUseNativeControls: false,
-	// Force iPhone's native controls
+
 	iPhoneUseNativeControls: false,
-	// Force Android's native controls
+
 	AndroidUseNativeControls: false,
-	// Features to show
+
 	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
-	// Only for dynamic
+
 	isVideo: true,
-	// Stretching modes (auto, fill, responsive, none)
+
 	stretching: 'auto',
-	// Prefix class names on elements
+
 	classPrefix: 'mejs__',
-	// Turn keyboard support on and off for this instance
+
 	enableKeyboard: true,
-	// When this player starts, it will pause other players
+
 	pauseOtherPlayers: true,
-	// Number of decimal places to show if frames are shown
+
 	secondsDecimalLength: 0,
-	// Array of keyboard actions such as play/pause
+
 	keyActions: [{
-		keys: [32, // SPACE
-		179 // GOOGLE play/pause button
-		],
+		keys: [32, 179],
 		action: function action(player, media) {
 
 			if (!_constants.IS_FIREFOX) {
@@ -3934,7 +3093,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [38], // UP
+		keys: [38],
 		action: function action(player, media) {
 
 			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
@@ -3952,7 +3111,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [40], // DOWN
+		keys: [40],
 		action: function action(player, media) {
 
 			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
@@ -3972,9 +3131,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [37, // LEFT
-		227 // Google TV rewind
-		],
+		keys: [37, 227],
 		action: function action(player, media) {
 			if (!isNaN(media.duration) && media.duration > 0) {
 				if (player.isVideo) {
@@ -3982,15 +3139,12 @@ var config = exports.config = {
 					player.startControlsTimer();
 				}
 
-				// 5%
 				var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
 				media.setCurrentTime(newTime);
 			}
 		}
 	}, {
-		keys: [39, // RIGHT
-		228 // Google TV forward
-		],
+		keys: [39, 228],
 		action: function action(player, media) {
 
 			if (!isNaN(media.duration) && media.duration > 0) {
@@ -3999,13 +3153,12 @@ var config = exports.config = {
 					player.startControlsTimer();
 				}
 
-				// 5%
 				var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
 				media.setCurrentTime(newTime);
 			}
 		}
 	}, {
-		keys: [70], // F
+		keys: [70],
 		action: function action(player, media, key, event) {
 			if (!event.ctrlKey) {
 				if (typeof player.enterFullScreen !== 'undefined') {
@@ -4018,7 +3171,7 @@ var config = exports.config = {
 			}
 		}
 	}, {
-		keys: [77], // M
+		keys: [77],
 		action: function action(player) {
 
 			player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
@@ -4037,15 +3190,6 @@ var config = exports.config = {
 
 _mejs2.default.MepDefaults = config;
 
-/**
- * Wrap a MediaElement object in player controls
- *
- * @constructor
- * @param {HTMLElement|String} node
- * @param {Object} o
- * @return {?MediaElementPlayer}
- */
-
 var MediaElementPlayer = function () {
 	function MediaElementPlayer(node, o) {
 		_classCallCheck(this, MediaElementPlayer);
@@ -4061,36 +3205,28 @@ var MediaElementPlayer = function () {
 
 		t.controlsTimer = null;
 
-		// enforce object, even without "new" (via John Resig)
 		if (!(t instanceof MediaElementPlayer)) {
 			return new MediaElementPlayer(element, o);
 		}
 
-		// these will be reset after the MediaElement.success fires
-		// t.media will be the fake node to emulate all HTML5 events, methods, etc
-		// t.node will be the node to be restored
 		t.node = t.media = element;
 
 		if (!t.node) {
 			return;
 		}
 
-		// check for existing player
 		if (t.media.player !== undefined) {
 			return t.media.player;
 		}
 
-		// try to get options from data-mejsoptions
 		if (o === undefined) {
 			var options = t.node.getAttribute('data-mejsoptions');
 			o = options ? JSON.parse(options) : {};
 		}
 
-		// extend default options
 		t.options = Object.assign({}, config, o);
 
 		if (!t.options.timeFormat) {
-			// Generate the time format according to options
 			t.options.timeFormat = 'mm:ss';
 			if (t.options.alwaysShowHours) {
 				t.options.timeFormat = 'hh:mm:ss';
@@ -4102,13 +3238,10 @@ var MediaElementPlayer = function () {
 
 		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
 
-		// unique ID
 		t.id = 'mep_' + _mejs2.default.mepIndex++;
 
-		// add to player array (for focus events)
 		_mejs2.default.players[t.id] = t;
 
-		// start up
 		var meOptions = Object.assign({}, t.options, {
 			success: function success(media, domNode) {
 				t._meReady(media, domNode);
@@ -4119,36 +3252,26 @@ var MediaElementPlayer = function () {
 		}),
 		    tagName = t.node.tagName.toLowerCase();
 
-		// get video from src or href?
 		t.isDynamic = tagName !== 'audio' && tagName !== 'video';
 		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
 		t.mediaFiles = null;
 		t.trackFiles = null;
 
-		// use native controls in iPad, iPhone, and Android
 		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
-
-			// add controls and stop
 			t.node.setAttribute('controls', true);
 
-			// override Apple's autoplay override for iPads
 			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
 				t.play();
 			}
 		} else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
-
-			// DESKTOP: use MediaElementPlayer controls
-
-			// remove native controls
 			t.node.removeAttribute('controls');
 			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
-			// insert description for screen readers
+
 			var offscreen = _document2.default.createElement('span');
 			offscreen.className = t.options.classPrefix + 'offscreen';
 			offscreen.innerText = videoPlayerTitle;
 			t.media.parentNode.insertBefore(offscreen, t.media);
 
-			// build container
 			t.container = _document2.default.createElement('div');
 			t.container.id = t.id;
 			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
@@ -4159,29 +3282,21 @@ var MediaElementPlayer = function () {
 			t.container.addEventListener('focus', function (e) {
 				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
 					t.showControls(true);
-					// In versions older than IE11, the focus causes the playbar to be displayed
-					// if user clicks on the Play/Pause button in the control bar once it attempts
-					// to hide it
-					if (!_constants.HAS_MS_NATIVE_FULLSCREEN) {
-						// If e.relatedTarget appears before container, send focus to play button,
-						// else send focus to last control button.
-						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
-						    button = t.container.querySelector(btnSelector);
-
-						button.focus();
-					}
+
+					var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
+					    button = t.container.querySelector(btnSelector);
+
+					button.focus();
 				}
 			});
 			t.node.parentNode.insertBefore(t.container, t.node);
 
-			// When no elements in controls, hide bar completely
 			if (!t.options.features.length) {
 				t.container.style.background = 'transparent';
 				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
 			}
 
 			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
-				// outer container
 				t.outerContainer = t.media.parentNode;
 
 				var wrapper = _document2.default.createElement('div');
@@ -4190,7 +3305,6 @@ var MediaElementPlayer = function () {
 				wrapper.appendChild(t.container);
 			}
 
-			// add classes for user and content
 			if (_constants.IS_ANDROID) {
 				dom.addClass(t.container, t.options.classPrefix + 'android');
 			}
@@ -4205,9 +3319,6 @@ var MediaElementPlayer = function () {
 			}
 			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
 
-			// Workflow for Safari desktop: "clone" element and remove children, but save them to check sources, captions, etc.
-			// This ensure full compatibility when using keyboard, since Safari creates a keyboard trap when appending
-			// video/audio elements with children
 			if (_constants.IS_SAFARI && !_constants.IS_IOS) {
 
 				dom.addClass(t.container, t.options.classPrefix + 'hide-cues');
@@ -4228,7 +3339,6 @@ var MediaElementPlayer = function () {
 									Array.prototype.slice.call(childNode.attributes).forEach(function (item) {
 										elements[item.name] = item.value;
 									});
-
 									elements.type = (0, _media.formatType)(elements.src, elements.type);
 									mediaFiles.push(elements);
 									break;
@@ -4255,25 +3365,13 @@ var MediaElementPlayer = function () {
 				}
 			}
 
-			// move the `video`/`audio` tag into the right spot
 			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
 
-			// needs to be assigned here, after iOS remap
 			t.media.player = t;
 
-			// find parts
 			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
 			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
 
-			// determine the size
-
-			/* size priority:
-    (1) videoWidth (forced),
-    (2) style="width;height;"
-    (3) width attribute,
-    (4) defaultVideoWidth (for unspecified cases)
-    */
-
 			var tagType = t.isVideo ? 'video' : 'audio',
 			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
 
@@ -4299,23 +3397,17 @@ var MediaElementPlayer = function () {
 
 			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
 
-			// set the size, while we wait for the plugins to load below
 			t.setPlayerSize(t.width, t.height);
 
-			// create MediaElementShim
 			meOptions.pluginWidth = t.width;
 			meOptions.pluginHeight = t.height;
-		}
-		// Hide media completely for audio that doesn't have any features
-		else if (!t.isVideo && !t.options.features.length) {
+		} else if (!t.isVideo && !t.options.features.length) {
 				t.node.style.display = 'none';
 			}
 
-		// create MediaElement shim
 		new _mediaelement2.default(t.media, meOptions, t.mediaFiles);
 
 		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
-			// controls are shown when loaded
 			var event = (0, _general.createEvent)('controlsshown', t.container);
 			t.container.dispatchEvent(event);
 		}
@@ -4330,7 +3422,7 @@ var MediaElementPlayer = function () {
 
 			doAnimation = doAnimation === undefined || doAnimation;
 
-			if (t.controlsAreVisible) {
+			if (t.controlsAreVisible || !t.isVideo) {
 				return;
 			}
 
@@ -4342,7 +3434,6 @@ var MediaElementPlayer = function () {
 						t.container.dispatchEvent(event);
 					});
 
-					// any additional controls people might add and want to hide
 					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 
 					var _loop = function _loop(i, total) {
@@ -4358,8 +3449,8 @@ var MediaElementPlayer = function () {
 			} else {
 				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
 				t.controls.style.display = '';
+				t.controls.style.opacity = 1;
 
-				// any additional controls people might add and want to hide
 				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 				for (var i = 0, total = controls.length; i < total; i++) {
 					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
@@ -4386,7 +3477,6 @@ var MediaElementPlayer = function () {
 
 			if (doAnimation) {
 				(function () {
-					// fade out main controls
 					dom.fadeOut(t.controls, 200, function () {
 						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
 						t.controls.style.display = '';
@@ -4394,7 +3484,6 @@ var MediaElementPlayer = function () {
 						t.container.dispatchEvent(event);
 					});
 
-					// any additional controls people might add and want to hide
 					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 
 					var _loop2 = function _loop2(i, total) {
@@ -4409,12 +3498,10 @@ var MediaElementPlayer = function () {
 					}
 				})();
 			} else {
-
-				// hide main controls
 				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
 				t.controls.style.display = '';
+				t.controls.style.opacity = 0;
 
-				// hide others
 				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
 				for (var i = 0, total = controls.length; i < total; i++) {
 					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
@@ -4430,7 +3517,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'startControlsTimer',
 		value: function startControlsTimer(timeout) {
-
 			var t = this;
 
 			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
@@ -4445,7 +3531,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'killControlsTimer',
 		value: function killControlsTimer() {
-
 			var t = this;
 
 			if (t.controlsTimer !== null) {
@@ -4471,33 +3556,22 @@ var MediaElementPlayer = function () {
 			t.controlsEnabled = true;
 			t.showControls(false);
 		}
-
-		/**
-   * Set up all controls and events
-   *
-   * @param media
-   * @param domNode
-   * @private
-   */
-
 	}, {
 		key: '_meReady',
 		value: function _meReady(media, domNode) {
-
 			var t = this,
 			    autoplayAttr = domNode.getAttribute('autoplay'),
 			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
-			    isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null;
+			    isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
 
 			if (t.controls) {
 				t.enableControls();
 			}
 
-			if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
+			if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
 				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
 			}
 
-			// make sure it can't create itself again if a plugin reloads
 			if (t.created) {
 				return;
 			}
@@ -4507,13 +3581,7 @@ var MediaElementPlayer = function () {
 			t.domNode = domNode;
 
 			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
-
-				// In the event that no features are specified for audio,
-				// create only MediaElement instance rather than
-				// doing all the work to create a full player
 				if (!t.isVideo && !t.options.features.length) {
-
-					// force autoplay for HTML5
 					if (autoplay && isNative) {
 						t.play();
 					}
@@ -4530,25 +3598,20 @@ var MediaElementPlayer = function () {
 					return;
 				}
 
-				// two built in features
 				t.buildposter(t, t.controls, t.layers, t.media);
 				t.buildkeyboard(t, t.controls, t.layers, t.media);
 				t.buildoverlays(t, t.controls, t.layers, t.media);
 
-				// grab for use by features
 				t.findTracks();
 
-				// cache container to store control elements' original position
 				t.featurePosition = {};
 
-				// add user-defined features/controls
 				for (var i = 0, total = t.options.features.length; i < total; i++) {
 					var feature = t.options.features[i];
 					if (t['build' + feature]) {
 						try {
 							t['build' + feature](t, t.controls, t.layers, t.media);
 						} catch (e) {
-							// TODO: report control error
 							console.error('error building ' + feature, e);
 						}
 					}
@@ -4557,15 +3620,10 @@ var MediaElementPlayer = function () {
 				var event = (0, _general.createEvent)('controlsready', t.container);
 				t.container.dispatchEvent(event);
 
-				// reset all layers and controls
 				t.setPlayerSize(t.width, t.height);
 				t.setControlsSize();
 
-				// controls fade
 				if (t.isVideo) {
-
-					// create callback here since it needs access to current
-					// MediaElement object
 					t.clickToPlayPauseCallback = function () {
 
 						if (t.options.clickToPlayPause) {
@@ -4586,16 +3644,10 @@ var MediaElementPlayer = function () {
 
 					t.createIframeLayer();
 
-					// click to play/pause
 					t.media.addEventListener('click', t.clickToPlayPauseCallback);
 
 					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
-
-						// for touch devices (iOS, Android)
-						// show/hide without animation on touch
 						t.node.addEventListener('touchstart', function () {
-
-							// toggle controls
 							if (t.controlsAreVisible) {
 								t.hideControls(false);
 							} else {
@@ -4605,8 +3657,6 @@ var MediaElementPlayer = function () {
 							}
 						});
 					} else {
-
-						// show/hide controls
 						t.container.addEventListener('mouseenter', function () {
 							if (t.controlsEnabled) {
 								if (!t.options.alwaysShowControls) {
@@ -4639,16 +3689,12 @@ var MediaElementPlayer = function () {
 						t.hideControls(false);
 					}
 
-					// check for autoplay
 					if (autoplay && !t.options.alwaysShowControls) {
 						t.hideControls();
 					}
 
-					// resizer
 					if (t.options.enableAutosize) {
 						t.media.addEventListener('loadedmetadata', function (e) {
-							// if the <video height> was not set and the options.videoHeight was not set
-							// then resize to the real dimensions
 							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) {
 								t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
 								t.setControlsSize();
@@ -4658,13 +3704,9 @@ var MediaElementPlayer = function () {
 					}
 				}
 
-				// EVENTS
-
-				// FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them)
 				t.media.addEventListener('play', function () {
 					t.hasFocus = true;
 
-					// go through all other players
 					for (var playerIndex in _mejs2.default.players) {
 						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
 							var p = _mejs2.default.players[playerIndex];
@@ -4677,13 +3719,11 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// ended for all
 				t.media.addEventListener('ended', function () {
 					if (t.options.autoRewind) {
 						try {
 							t.media.setCurrentTime(0);
-							// Fixing an Android stock browser bug, where "seeked" isn't fired correctly after
-							// ending the video and jumping to the beginning
+
 							setTimeout(function () {
 								var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading');
 								if (loadingElement && loadingElement.parentNode) {
@@ -4715,7 +3755,6 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// resize on the first play
 				t.media.addEventListener('loadedmetadata', function () {
 
 					(0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25);
@@ -4733,14 +3772,12 @@ var MediaElementPlayer = function () {
 					}
 				});
 
-				// Only change the time format when necessary
 				var duration = null;
 				t.media.addEventListener('timeupdate', function () {
 					if (duration !== t.media.duration) {
 						duration = t.media.duration;
 						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
 
-						// make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15
 						if (t.updateDuration) {
 							t.updateDuration();
 						}
@@ -4751,11 +3788,21 @@ var MediaElementPlayer = function () {
 					}
 				});
 
+				t.container.addEventListener('click', function (e) {
+					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
+				});
+
+				t.container.addEventListener('focusin', function (e) {
+					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
+					if (t.controlsEnabled && !t.options.alwaysShowControls) {
+						t.showControls(false);
+					}
+				});
+
 				t.container.addEventListener('focusout', function (e) {
 					setTimeout(function () {
-						//FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787
 						if (e.relatedTarget) {
-							if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) {
+							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
 								t.keyboardAction = false;
 								if (t.isVideo && !t.options.alwaysShowControls) {
 									t.hideControls(true);
@@ -4765,44 +3812,20 @@ var MediaElementPlayer = function () {
 					}, 0);
 				});
 
-				// webkit has trouble doing this without a delay
 				setTimeout(function () {
 					t.setPlayerSize(t.width, t.height);
 					t.setControlsSize();
 				}, 0);
 
-				// adjust controls whenever window sizes (used to be in fullscreen only)
 				t.globalBind('resize', function () {
-
-					// don't resize for fullscreen mode
 					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
 						t.setPlayerSize(t.width, t.height);
 					}
 
-					// always adjust controls
 					t.setControlsSize();
 				});
-
-				// Disable focus outline to improve look-and-feel for regular users
-				t.globalBind('click', function (e) {
-					if (e.target.matches('.' + t.options.classPrefix + 'container')) {
-						dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
-					} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
-						dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
-					}
-				});
-
-				// Enable focus outline for Accessibility purposes
-				t.globalBind('keydown', function (e) {
-					if (e.target.matches('.' + t.options.classPrefix + 'container')) {
-						dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
-					} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
-						dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
-					}
-				});
 			}
 
-			// force autoplay for HTML5
 			if (autoplay && isNative) {
 				t.play();
 			}
@@ -4816,13 +3839,6 @@ var MediaElementPlayer = function () {
 				}
 			}
 		}
-
-		/**
-   *
-   * @param {Event} e
-   * @private
-   */
-
 	}, {
 		key: '_handleError',
 		value: function _handleError(e) {
@@ -4838,7 +3854,6 @@ var MediaElementPlayer = function () {
 				play.style.display = 'none';
 			}
 
-			// Tell user that the file cannot be played
 			if (t.options.error) {
 				t.options.error(e);
 			}
@@ -4860,10 +3875,8 @@ var MediaElementPlayer = function () {
 				t.height = height;
 			}
 
-			// check stretching modes
 			switch (t.options.stretching) {
 				case 'fill':
-					// The 'fill' effect only makes sense on video; for audio we will set the dimensions
 					if (t.isVideo) {
 						t.setFillMode();
 					} else {
@@ -4876,7 +3889,7 @@ var MediaElementPlayer = function () {
 				case 'none':
 					t.setDimensions(t.width, t.height);
 					break;
-				// This is the 'auto' mode
+
 				default:
 					if (t.hasFluidMode() === true) {
 						t.setResponsiveMode();
@@ -4891,8 +3904,7 @@ var MediaElementPlayer = function () {
 		value: function hasFluidMode() {
 			var t = this;
 
-			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
-			return t.height.toString().includes('%') || 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%';
+			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%';
 		}
 	}, {
 		key: 'setResponsiveMode',
@@ -4903,15 +3915,10 @@ var MediaElementPlayer = function () {
 				var parentEl = void 0,
 				    el = t.container;
 
-				// traverse parents to find the closest visible one
 				while (el) {
 					try {
-						if (_window2.default.self !== _window2.default.top) {
-							if (_window2.default.frameElement !== null) {
-								return _window2.default.frameElement;
-							} else {
-								parentEl = _window2.default.frameElement.parentNode;
-							}
+						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
+							return _window2.default.frameElement;
 						} else {
 							parentEl = el.parentElement;
 						}
@@ -4978,17 +3985,15 @@ var MediaElementPlayer = function () {
 			    parentWidth = parseFloat(parentStyles.width);
 
 			if (t.isVideo) {
-				// Responsive video is based on width: 100% and height: 100%
 				if (t.height === '100%') {
-					newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10);
+					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
 				} else {
-					newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10);
+					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
 				}
 			} else {
 				newHeight = nativeHeight;
 			}
 
-			// If we were unable to compute newHeight, get the container height instead
 			if (isNaN(newHeight)) {
 				newHeight = parentHeight;
 			}
@@ -4999,21 +4004,16 @@ var MediaElementPlayer = function () {
 			}
 
 			if (newHeight && parentWidth) {
-
-				// set outer container size
 				t.container.style.width = parentWidth + 'px';
 				t.container.style.height = newHeight + 'px';
 
-				// set native <video> or <audio> and shims
 				t.node.style.width = '100%';
 				t.node.style.height = '100%';
 
-				// if shim is ready, send the size to the embedded plugin
 				if (t.isVideo && t.media.setSize) {
 					t.media.setSize(parentWidth, newHeight);
 				}
 
-				// set the layers
 				var layerChildren = t.layers.childNodes;
 				for (var i = 0, total = layerChildren.length; i < total; i++) {
 					layerChildren[i].style.width = '100%';
@@ -5026,11 +4026,13 @@ var MediaElementPlayer = function () {
 		value: function setFillMode() {
 			var t = this;
 
-			var parent = void 0;
+			var parent = void 0,
+			    isIframe = false;
 
 			try {
 				if (_window2.default.self !== _window2.default.top) {
-					parent = _window2.default.frameElement.parentNode;
+					isIframe = true;
+					parent = _window2.default.frameElement;
 				} else {
 					parent = t.outerContainer;
 				}
@@ -5040,7 +4042,6 @@ var MediaElementPlayer = function () {
 
 			var parentStyles = getComputedStyle(parent);
 
-			// Remove the responsive attributes in the event they are there
 			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
 				t.node.style.height = 'auto';
 			}
@@ -5064,11 +4065,11 @@ var MediaElementPlayer = function () {
 				}
 			}
 
-			if (!parseFloat(parentStyles.width)) {
+			if (!isIframe && !parseFloat(parentStyles.width)) {
 				parent.style.width = t.media.offsetWidth + 'px';
 			}
 
-			if (!parseFloat(parentStyles.height)) {
+			if (!isIframe && !parseFloat(parentStyles.height)) {
 				parent.style.height = t.media.offsetHeight + 'px';
 			}
 
@@ -5079,27 +4080,19 @@ var MediaElementPlayer = function () {
 
 			t.setDimensions('100%', '100%');
 
-			// This prevents an issue when displaying poster
 			var poster = t.container.querySelector(t.options.classPrefix + 'poster img');
 			if (poster) {
 				poster.style.display = '';
 			}
 
-			// calculate new width and height
 			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
 			    initHeight = t.height,
 			    initWidth = t.width,
-
-			// scale to the target width
-			scaleX1 = parentWidth,
+			    scaleX1 = parentWidth,
 			    scaleY1 = initHeight * parentWidth / initWidth,
-
-			// scale to the target height
-			scaleX2 = initWidth * parentHeight / initHeight,
+			    scaleX2 = initWidth * parentHeight / initHeight,
 			    scaleY2 = parentHeight,
-
-			// now figure out which one we should use
-			bScaleOnWidth = scaleX2 > parentWidth === false,
+			    bScaleOnWidth = scaleX2 > parentWidth === false,
 			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
 			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
 			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
@@ -5121,8 +4114,8 @@ var MediaElementPlayer = function () {
 		value: function setDimensions(width, height) {
 			var t = this;
 
-			width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px';
-			height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px';
+			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
+			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
 
 			t.container.style.width = width;
 			t.container.style.height = height;
@@ -5138,7 +4131,6 @@ var MediaElementPlayer = function () {
 		value: function setControlsSize() {
 			var t = this;
 
-			// skip calculation if hidden
 			if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) {
 				return;
 			}
@@ -5160,21 +4152,12 @@ var MediaElementPlayer = function () {
 
 			siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
 
-			// Substract the width of the feature siblings from time rail
 			var controlsWidth = parseFloat(t.controls.offsetWidth);
 			t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px';
 
 			var event = (0, _general.createEvent)('controlsresize', t.container);
 			t.container.dispatchEvent(event);
 		}
-
-		/**
-   * Add featured control element and cache its position in case features are reset
-   *
-   * @param {HTMLElement} element
-   * @param {String} key
-   */
-
 	}, {
 		key: 'addControlElement',
 		value: function addControlElement(element, key) {
@@ -5195,20 +4178,12 @@ var MediaElementPlayer = function () {
 				}
 			}
 		}
-
-		/**
-   * Append layer to manipulate `<iframe>` elements safely.
-   *
-   * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`.
-   */
-
 	}, {
 		key: 'createIframeLayer',
 		value: function createIframeLayer() {
-
 			var t = this;
 
-			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
+			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
 
 				var layer = _document2.default.createElement('div'),
 				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
@@ -5235,7 +4210,7 @@ var MediaElementPlayer = function () {
 		key: 'resetSize',
 		value: function resetSize() {
 			var t = this;
-			// webkit has trouble doing this without a delay
+
 			setTimeout(function () {
 				t.setPlayerSize(t.width, t.height);
 				t.setControlsSize();
@@ -5298,7 +4273,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'globalUnbind',
 		value: function globalUnbind(events, callback) {
-
 			var t = this,
 			    doc = t.node ? t.node.ownerDocument : _document2.default;
 
@@ -5325,7 +4299,6 @@ var MediaElementPlayer = function () {
 	}, {
 		key: 'buildposter',
 		value: function buildposter(player, controls, layers, media) {
-
 			var t = this,
 			    poster = _document2.default.createElement('div');
 
@@ -5334,12 +4307,10 @@ var MediaElementPlayer = function () {
 
 			var posterUrl = player.media.getAttribute('poster');
 
-			// priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
 			if (player.options.poster !== '') {
 				posterUrl = player.options.poster;
 			}
 
-			// second, try the real poster
 			if (posterUrl) {
 				t.setPoster(posterUrl);
 			} else {
@@ -5366,8 +4337,6 @@ var MediaElementPlayer = function () {
 
 			if (player.options.showPosterWhenPaused) {
 				media.addEventListener('pause', function () {
-					// To avoid displaying the poster when video ended, since it
-					// triggers a pause event as well
 					if (!media.ended) {
 						poster.style.display = '';
 					}
@@ -5385,12 +4354,10 @@ var MediaElementPlayer = function () {
 			var t = this,
 			    loading = _document2.default.createElement('div'),
 			    error = _document2.default.createElement('div'),
-
-			// this needs to come last so it's on top
-			bigPlay = _document2.default.createElement('div'),
+			    bigPlay = _document2.default.createElement('div'),
 			    buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
 
-			loading.style.display = 'none'; // start out hidden
+			loading.style.display = 'none';
 			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
 			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
 			layers.appendChild(loading);
@@ -5403,8 +4370,6 @@ var MediaElementPlayer = function () {
 			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
 			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
 			bigPlay.addEventListener('click', function () {
-				// Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay
-				// started and immediately stopped the video
 				if (t.options.clickToPlayPause) {
 
 					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
@@ -5419,13 +4384,23 @@ var MediaElementPlayer = function () {
 					button.setAttribute('aria-pressed', !!pressed);
 				}
 			});
+
+			bigPlay.addEventListener('keydown', function (e) {
+				var keyPressed = e.keyCode || e.which || 0;
+
+				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
+					var event = (0, _general.createEvent)('click', bigPlay);
+					bigPlay.dispatchEvent(event);
+					return false;
+				}
+			});
+
 			layers.appendChild(bigPlay);
 
-			if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
+			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
 				bigPlay.style.display = 'none';
 			}
 
-			// show/hide big play button
 			media.addEventListener('play', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = 'none';
@@ -5434,7 +4409,6 @@ var MediaElementPlayer = function () {
 				}
 				error.style.display = 'none';
 			});
-
 			media.addEventListener('playing', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = 'none';
@@ -5443,7 +4417,6 @@ var MediaElementPlayer = function () {
 				}
 				error.style.display = 'none';
 			});
-
 			media.addEventListener('seeking', function () {
 				bigPlay.style.display = 'none';
 				loading.style.display = '';
@@ -5451,7 +4424,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = '';
 				}
 			});
-
 			media.addEventListener('seeked', function () {
 				bigPlay.style.display = media.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
 				loading.style.display = 'none';
@@ -5459,7 +4431,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = '';
 				}
 			});
-
 			media.addEventListener('pause', function () {
 				loading.style.display = 'none';
 				if (!_constants.IS_STOCK_ANDROID) {
@@ -5469,7 +4440,6 @@ var MediaElementPlayer = function () {
 					buffer.style.display = 'none';
 				}
 			});
-
 			media.addEventListener('waiting', function () {
 				loading.style.display = '';
 				if (buffer) {
@@ -5477,15 +4447,12 @@ var MediaElementPlayer = function () {
 				}
 			});
 
-			// show/hide loading
 			media.addEventListener('loadeddata', function () {
 				loading.style.display = '';
 				if (buffer) {
 					buffer.style.display = '';
 				}
 
-				// Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices
-				// (https://github.com/johndyer/mediaelement/issues/1305)
 				if (_constants.IS_ANDROID) {
 					media.canplayTimeout = setTimeout(function () {
 						if (_document2.default.createEvent) {
@@ -5501,11 +4468,10 @@ var MediaElementPlayer = function () {
 				if (buffer) {
 					buffer.style.display = 'none';
 				}
-				// Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice
+
 				clearTimeout(media.canplayTimeout);
 			});
 
-			// error handling
 			media.addEventListener('error', function (e) {
 				t._handleError(e);
 				loading.style.display = 'none';
@@ -5533,7 +4499,6 @@ var MediaElementPlayer = function () {
 				t.keyboardAction = true;
 			});
 
-			// listen for key presses
 			t.globalBind('keydown', function (event) {
 				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
 				    target = t.media.closest('.' + t.options.classPrefix + 'container');
@@ -5541,7 +4506,6 @@ var MediaElementPlayer = function () {
 				return t.onkeydown(player, media, event);
 			});
 
-			// check if someone clicked outside a player region, then kill its focus
 			t.globalBind('click', function (event) {
 				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
 			});
@@ -5551,7 +4515,6 @@ var MediaElementPlayer = function () {
 		value: function onkeydown(player, media, e) {
 
 			if (player.hasFocus && player.options.enableKeyboard) {
-				// find a matching key
 				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
 					var keyAction = player.options.keyActions[i];
 
@@ -5572,7 +4535,6 @@ var MediaElementPlayer = function () {
 		value: function play() {
 			var t = this;
 
-			// only load if the current time is 0 to ensure proper playing
 			if (t.media.getCurrentTime() <= 0) {
 				t.load();
 			}
@@ -5634,17 +4596,14 @@ var MediaElementPlayer = function () {
 			}
 
 			t.media.setSrc(src);
-
 			t.createIframeLayer();
 		}
 	}, {
 		key: 'remove',
 		value: function remove() {
-
 			var t = this,
 			    rendererName = t.media.rendererName;
 
-			// Stop completely media playing
 			if (!t.media.paused) {
 				t.media.pause();
 			}
@@ -5652,55 +4611,51 @@ var MediaElementPlayer = function () {
 			var src = t.media.getSrc();
 			t.media.setSrc('');
 
-			// invoke features cleanup
 			for (var featureIndex in t.options.features) {
 				var feature = t.options.features[featureIndex];
 				if (t['clean' + feature]) {
 					try {
 						t['clean' + feature](t);
 					} catch (e) {
-						// @todo: report control error
 						console.error('error cleaning ' + feature, e);
 					}
 				}
 			}
 
-			// reset dimensions
 			var nativeWidth = t.node.getAttribute('width'),
 			    nativeHeight = t.node.getAttribute('height');
+
 			if (nativeWidth) {
-				if (nativeWidth.match('%') === null) {
+				if (nativeWidth.indexOf('%') === -1) {
 					nativeWidth = nativeWidth + 'px';
 				}
 			} else {
 				nativeWidth = 'auto';
 			}
+
 			if (nativeHeight) {
-				if (nativeHeight.match('%') === null) {
+				if (nativeHeight.indexOf('%') === -1) {
 					nativeHeight = nativeHeight + 'px';
 				}
 			} else {
 				nativeHeight = 'auto';
 			}
+
 			t.node.style.width = nativeWidth;
 			t.node.style.height = nativeHeight;
 
-			// grab video and put it back in place
 			if (!t.isDynamic) {
 				(function () {
 					t.node.setAttribute('controls', true);
 					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
 
-					// Remove `autoplay` (not worth bringing it back once player is destroyed)
 					delete t.node.autoplay;
 
-					// Reintegrate file if it can be played
 					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
 						t.node.setAttribute('src', src);
 					}
 
-					// If <iframe>, remove overlay
-					if (rendererName.match(/iframe/i) !== null) {
+					if (~rendererName.indexOf('iframe')) {
 						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
 						layer.remove();
 					}
@@ -5710,7 +4665,6 @@ var MediaElementPlayer = function () {
 					t.container.parentNode.insertBefore(node, t.container);
 					t.node.remove();
 
-					// Add children
 					if (t.mediaFiles) {
 						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
 							var source = _document2.default.createElement('source');
@@ -5735,7 +4689,6 @@ var MediaElementPlayer = function () {
 							});
 						};
 
-						// Load captions properly
 						for (var _i3 = 0, _total3 = t.trackFiles.length; _i3 < _total3; _i3++) {
 							_loop3(_i3, _total3);
 						}
@@ -5753,8 +4706,6 @@ var MediaElementPlayer = function () {
 				t.media.destroy();
 			}
 
-			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to
-			// pause a non existent Flash API.
 			delete _mejs2.default.players[t.id];
 
 			if (_typeof(t.container) === 'object') {
@@ -5775,8 +4726,6 @@ _window2.default.MediaElementPlayer = MediaElementPlayer;
 
 exports.default = MediaElementPlayer;
 
-// turn into plugin
-
 (function ($) {
 
 	if (typeof $ !== 'undefined') {
@@ -5798,7 +4747,6 @@ exports.default = MediaElementPlayer;
 		};
 
 		$(_document2.default).ready(function () {
-			// auto enable using JSON attribute
 			$('.' + config.classPrefix + 'player').mediaelementplayer();
 		});
 	}
@@ -5840,30 +4788,9 @@ var _media = _dereq_(22);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Shim that falls back to Flash if a media type is not supported.
- *
- * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
- * will play using Flash.
- */
-
-/**
- * Core detector, plugins are added below
- *
- */
 var PluginDetector = exports.PluginDetector = {
-	/**
-  * Cached version numbers
-  * @type {Array}
-  */
 	plugins: [],
 
-	/**
-  * Test a plugin version number
-  * @param {String} plugin - In this scenario 'flash' will be tested
-  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
-  * @return {Boolean}
-  */
 	hasPluginVersion: function hasPluginVersion(plugin, v) {
 		var pv = PluginDetector.plugins[plugin];
 		v[1] = v[1] || 0;
@@ -5871,36 +4798,16 @@ var PluginDetector = exports.PluginDetector = {
 		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];
 	},
 
-	/**
-  * Detect plugin and store its version number
-  *
-  * @see PluginDetector.detectPlugin
-  * @param {String} p
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  */
 	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
 		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
 	},
 
-	/**
-  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
-  *
-  * @param {String} pluginName
-  * @param {String} mimeType
-  * @param {String} activeX
-  * @param {Function} axDetect
-  * @return {int[]}
-  */
 	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
 
 		var version = [0, 0, 0],
 		    description = void 0,
 		    ax = void 0;
 
-		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
 		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
 			description = _constants.NAV.plugins[pluginName].description;
 			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
@@ -5909,7 +4816,6 @@ var PluginDetector = exports.PluginDetector = {
 					version[i] = parseInt(version[i].match(/\d+/), 10);
 				}
 			}
-			// Internet Explorer / ActiveX
 		} else if (_window2.default.ActiveXObject !== undefined) {
 			try {
 				ax = new ActiveXObject(activeX);
@@ -5924,12 +4830,7 @@ var PluginDetector = exports.PluginDetector = {
 	}
 };
 
-/**
- * Add Flash detection
- *
- */
 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
-	// adapted from SWFObject
 	var version = [],
 	    d = ax.GetVariable("$version");
 
@@ -5941,34 +4842,19 @@ PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-fl
 });
 
 var FlashMediaElementRenderer = {
-
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var flash = {};
 
-		// store main variable
 		flash.options = options;
 		flash.id = mediaElement.id + '_' + flash.options.prefix;
 		flash.mediaElement = mediaElement;
-
-		// insert data
 		flash.flashState = {};
 		flash.flashApi = null;
 		flash.flashApiStack = [];
 
-		// mediaElements for get/set
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
-
-			// add to flash state that we will store
 			flash.flashState[propName] = null;
 
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -5980,7 +4866,6 @@ var FlashMediaElementRenderer = {
 					if (flash.flashApi['get_' + propName] !== undefined) {
 						var value = flash.flashApi['get_' + propName]();
 
-						// special case for buffered to conform to HTML5's newest
 						if (propName === 'buffered') {
 							return {
 								start: function start() {
@@ -6007,11 +4892,9 @@ var FlashMediaElementRenderer = {
 					value = (0, _media.absolutizeUrl)(value);
 				}
 
-				// send value to Flash
 				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
 					flash.flashApi['set_' + propName](value);
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'set',
 						propName: propName,
@@ -6025,16 +4908,10 @@ var FlashMediaElementRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add mediaElements for native methods
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			flash[methodName] = function () {
-
 				if (flash.flashApi !== null) {
-
-					// send call up to Flash ExternalInterface API
 					if (flash.flashApi['fire_' + methodName]) {
 						try {
 							flash.flashApi['fire_' + methodName]();
@@ -6045,7 +4922,6 @@ var FlashMediaElementRenderer = {
 						
 					}
 				} else {
-					// store for after "READY" event fires
 					flash.flashApiStack.push({
 						type: 'call',
 						methodName: methodName
@@ -6058,7 +4934,6 @@ var FlashMediaElementRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// give initial events like in others renderers
 		var initEvents = ['rendererready'];
 
 		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
@@ -6066,16 +4941,13 @@ var FlashMediaElementRenderer = {
 			mediaElement.dispatchEvent(event);
 		}
 
-		// add a ready method that Flash can call to
 		_window2.default['__ready__' + flash.id] = function () {
 
 			flash.flashReady = true;
 			flash.flashApi = _document2.default.getElementById('__' + flash.id);
 
-			// do call stack
 			if (flash.flashApiStack.length) {
 				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
-
 					var stackItem = flash.flashApiStack[_i3];
 
 					if (stackItem.type === 'set') {
@@ -6091,19 +4963,15 @@ var FlashMediaElementRenderer = {
 		};
 
 		_window2.default['__event__' + flash.id] = function (eventName, message) {
-
 			var event = (0, _general.createEvent)(eventName, flash);
 			event.message = message || '';
 
-			// send event from Flash up to the mediaElement
 			flash.mediaElement.dispatchEvent(event);
 		};
 
-		// insert Flash object
 		flash.flashWrapper = _document2.default.createElement('div');
 
-		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
-		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
 			flash.options.shimScriptAccess = 'sameDomain';
 		}
 
@@ -6193,55 +5061,42 @@ var FlashMediaElementRenderer = {
 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
 
 if (hasFlash) {
-
-	/**
-  * Register media type based on URL structure if Flash is detected
-  *
-  */
 	_media.typeChecks.push(function (url) {
-
 		url = url.toLowerCase();
 
 		if (url.startsWith('rtmp')) {
-			if (url.includes('.mp3')) {
+			if (~url.indexOf('.mp3')) {
 				return 'audio/rtmp';
 			} else {
 				return 'video/rtmp';
 			}
-		} else if (url.includes('.oga') || url.includes('.ogg')) {
+		} else if (/\.og(a|g)/i.test(url)) {
 			return 'audio/ogg';
-		} else if (url.includes('.m3u8')) {
+		} else if (~url.indexOf('.m3u8')) {
 			return 'application/x-mpegURL';
-		} else if (url.includes('.mpd')) {
+		} else if (~url.indexOf('.mpd')) {
 			return 'application/dash+xml';
-		} else if (url.includes('.flv')) {
+		} else if (~url.indexOf('.flv')) {
 			return 'video/flv';
 		} else {
 			return null;
 		}
 	});
 
-	// VIDEO
 	var FlashMediaElementVideoRenderer = {
 		name: 'flash_video',
-
 		options: {
 			prefix: 'flash_video',
 			filename: 'mediaelement-flash-video.swf',
 			enablePseudoStreaming: false,
-			// start query parameter sent to server for pseudo-streaming
+
 			pseudoStreamingStartQueryParam: 'start',
-			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+
 			pseudoStreamingType: 'byte'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
+			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -6249,88 +5104,60 @@ if (hasFlash) {
 	};
 	_renderer.renderer.add(FlashMediaElementVideoRenderer);
 
-	// HLS
 	var FlashMediaElementHlsVideoRenderer = {
 		name: 'flash_hls',
-
 		options: {
 			prefix: 'flash_hls',
 			filename: 'mediaelement-flash-video-hls.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+			return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
 
-	// M(PEG)-DASH
 	var FlashMediaElementMdashVideoRenderer = {
 		name: 'flash_dash',
-
 		options: {
 			prefix: 'flash_dash',
 			filename: 'mediaelement-flash-video-mdash.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['application/dash+xml'].includes(type.toLowerCase());
+			return ~['application/dash+xml'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
 
-	// AUDIO
 	var FlashMediaElementAudioRenderer = {
 		name: 'flash_audio',
-
 		options: {
 			prefix: 'flash_audio',
 			filename: 'mediaelement-flash-audio.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/mp3'].includes(type.toLowerCase());
+			return ~['audio/mp3'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
 	};
 	_renderer.renderer.add(FlashMediaElementAudioRenderer);
 
-	// AUDIO - ogg
 	var FlashMediaElementAudioOggRenderer = {
 		name: 'flash_audio_ogg',
-
 		options: {
 			prefix: 'flash_audio_ogg',
 			filename: 'mediaelement-flash-audio-ogg.swf'
 		},
-		/**
-   * Determine if a specific element type can be played with this render
-   *
-   * @param {String} type
-   * @return {Boolean}
-   */
+
 		canPlayType: function canPlayType(type) {
-			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
 		},
 
 		create: FlashMediaElementRenderer.create
@@ -6361,54 +5188,31 @@ var _constants = _dereq_(19);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Native HTML5 Renderer
- *
- * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
- */
 var HtmlMediaElement = {
-
 	name: 'html5',
-
 	options: {
 		prefix: 'html5'
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {String}
-  */
 	canPlayType: function canPlayType(type) {
 
 		var mediaElement = _document2.default.createElement('video');
 
-		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
-		// also consider URLs that might have obfuscated URLs
-		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+		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) {
 			return 'yes';
 		} else if (mediaElement.canPlayType) {
-			return mediaElement.canPlayType(type).replace(/no/, '');
+			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
 		} else {
 			return '';
 		}
 	},
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
+
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var id = mediaElement.id + '_' + options.prefix;
 
 		var node = null;
 
-		// CREATE NODE
 		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
 			node = _document2.default.createElement('audio');
 			mediaElement.appendChild(node);
@@ -6418,7 +5222,6 @@ var HtmlMediaElement = {
 
 		node.setAttribute('id', id);
 
-		// WRAPPERS for PROPs
 		var props = _mejs2.default.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -6428,7 +5231,7 @@ var HtmlMediaElement = {
 			};
 
 			node['set' + capName] = function (value) {
-				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
 					node[propName] = value;
 				}
 			};
@@ -6440,10 +5243,7 @@ var HtmlMediaElement = {
 
 		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
 		    assignEvents = function assignEvents(eventName) {
-
 			node.addEventListener(eventName, function (e) {
-				// copy event
-
 				var event = (0, _general.createEvent)(e.type, mediaElement);
 				mediaElement.dispatchEvent(event);
 			});
@@ -6453,7 +5253,6 @@ var HtmlMediaElement = {
 			assignEvents(events[_i]);
 		}
 
-		// HELPER METHODS
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
 			node.style.height = height + 'px';
@@ -6516,18 +5315,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var NAV = exports.NAV = _window2.default.navigator;
 var UA = exports.UA = NAV.userAgent.toLowerCase();
-
-var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
-var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA);
+var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA);
 var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
-var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
-var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
+var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
-var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
-var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
-var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
-var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
-
+var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
+var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
+var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	var element = _document2.default.createElement('x'),
@@ -6546,7 +5343,6 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	return !!supports;
 }();
 
-// for IE
 var html5Elements = ['source', 'track', 'audio', 'video'];
 var video = void 0;
 
@@ -6554,28 +5350,20 @@ for (var i = 0, total = html5Elements.length; i < total; i++) {
 	video = _document2.default.createElement(html5Elements[i]);
 }
 
-// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
-var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
 
-// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
-
-// iOS
 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
 
-// W3C
 var hasNativeFullscreen = video.requestFullscreen !== undefined;
 
-// OS X 10.5 can't do this even if it says it can :(
-if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
 	hasNativeFullscreen = false;
 	hasiOSFullScreen = false;
 }
 
-// webkit/firefox/IE11+
 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
-
 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
 var fullScreenEventName = '';
@@ -6583,7 +5371,6 @@ var isFullScreen = void 0,
     requestFullScreen = void 0,
     cancelFullScreen = void 0;
 
-// Enabled?
 if (hasMozNativeFullScreen) {
 	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
 } else if (hasMsNativeFullScreen) {
@@ -6595,7 +5382,6 @@ if (IS_CHROME) {
 }
 
 if (hasTrueNativeFullScreen) {
-
 	if (hasWebkitNativeFullScreen) {
 		fullScreenEventName = 'webkitfullscreenchange';
 	} else if (hasMozNativeFullScreen) {
@@ -6615,7 +5401,6 @@ if (hasTrueNativeFullScreen) {
 	};
 
 	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
-
 		if (hasWebkitNativeFullScreen) {
 			el.webkitRequestFullScreen();
 		} else if (hasMozNativeFullScreen) {
@@ -6644,7 +5429,6 @@ var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
-
 exports.isFullScreen = isFullScreen;
 exports.requestFullScreen = requestFullScreen;
 exports.cancelFullScreen = cancelFullScreen;
@@ -6663,7 +5447,6 @@ _mejs2.default.Features.isSafari = IS_SAFARI;
 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
 _mejs2.default.Features.hasMSE = HAS_MSE;
 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
-
 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
@@ -6680,15 +5463,11 @@ _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
 },{"2":2,"3":3,"6":6}],20:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript,
- * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js)
- */
-
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
 exports.removeClass = exports.addClass = exports.hasClass = undefined;
+exports.loadScript = loadScript;
 exports.offset = offset;
 exports.toggleClass = toggleClass;
 exports.fadeOut = fadeOut;
@@ -6711,6 +5490,52 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
+function TinyPromise(handler) {
+	var thens = [];
+	var state = -1;
+	var result = void 0;
+	var then = void 0;
+
+	function done(value) {
+		for (result = value; then = thens.shift();) {
+			then[state] && then[state](result);
+		}
+	}
+
+	handler(function (value) {
+		return done(value, state = 0);
+	}, function (value) {
+		return done(value, state = 1);
+	});
+
+	return {
+		then: function then() {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			~state ? args[state] && args[state](result) : thens.push(args);
+		}
+	};
+}
+
+function loadScript(url) {
+	return TinyPromise(function (resolve, reject) {
+		var script = _document2.default.createElement('script');
+		script.src = url;
+		script.async = true;
+		script.onload = function () {
+			script.remove();
+			resolve();
+		};
+		script.onerror = function () {
+			script.remove();
+			reject();
+		};
+		_document2.default.head.appendChild(script);
+	});
+}
+
 function offset(el) {
 	var rect = el.getBoundingClientRect(),
 	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
@@ -6754,7 +5579,6 @@ function toggleClass(el, className) {
 	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
 }
 
-// fade an element from the current state to full opacity in "duration" ms
 function fadeOut(el) {
 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
 	var callback = arguments[2];
@@ -6779,8 +5603,6 @@ function fadeOut(el) {
 	});
 }
 
-// fade out an element from the current state to full transparency in "duration" ms
-// display is the display style the element is assigned after the animation is done
 function fadeIn(el) {
 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
 	var callback = arguments[2];
@@ -6842,7 +5664,7 @@ function ajax(url, dataType, success, error) {
 			break;
 	}
 
-	if (!type.includes('application/x-www-form-urlencoded')) {
+	if (type !== 'application/x-www-form-urlencoded') {
 		accept = type + ', */*; q=0.01';
 	}
 
@@ -6850,19 +5672,14 @@ function ajax(url, dataType, success, error) {
 		xhr.open('GET', url, true);
 		xhr.setRequestHeader('Accept', accept);
 		xhr.onreadystatechange = function () {
-
-			// Ignore repeat invocations
 			if (completed) {
 				return;
 			}
 
 			if (xhr.readyState === 4) {
 				if (xhr.status === 200) {
-
 					completed = true;
-
 					var data = void 0;
-
 					switch (dataType) {
 						case 'json':
 							data = JSON.parse(xhr.responseText);
@@ -6874,7 +5691,6 @@ function ajax(url, dataType, success, error) {
 							data = xhr.responseText;
 							break;
 					}
-
 					success(data);
 				} else if (typeof error === 'function') {
 					error(xhr.status);
@@ -6897,6 +5713,7 @@ _mejs2.default.Utils.fadeOut = fadeOut;
 _mejs2.default.Utils.siblings = siblings;
 _mejs2.default.Utils.visible = visible;
 _mejs2.default.Utils.ajax = ajax;
+_mejs2.default.Utils.loadScript = loadScript;
 
 },{"2":2,"3":3,"6":6}],21:[function(_dereq_,module,exports){
 'use strict';
@@ -6918,11 +5735,6 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- *
- * @param {String} input
- * @return {string}
- */
 function escapeHTML(input) {
 
 	if (typeof input !== 'string') {
@@ -6941,7 +5753,6 @@ function escapeHTML(input) {
 	});
 }
 
-// taken from underscore
 function debounce(func, wait) {
 	var _this = this,
 	    _arguments = arguments;
@@ -6977,28 +5788,13 @@ function debounce(func, wait) {
 	};
 }
 
-/**
- * Determine if an object contains any elements
- *
- * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
- * @param {Object} instance
- * @return {Boolean}
- */
 function isObjectEmpty(instance) {
 	return Object.getOwnPropertyNames(instance).length <= 0;
 }
 
-/**
- * Group a string of events into `document` (d) and `window` (w) events
- *
- * @param {String} events  List of space separated events
- * @param {String} id      Namespace appended to events
- * @return {{d: Array, w: Array}}
- */
 function splitEvents(events, id) {
-	// Global events
 	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
-	// add player ID as an event namespace so it's easier to unbind them all later
+
 	var ret = { d: [], w: [] };
 	(events || '').split(' ').forEach(function (v) {
 		var eventName = '' + v + (id ? '.' + id : '');
@@ -7016,26 +5812,20 @@ function splitEvents(events, id) {
 	return ret;
 }
 
-/**
- *
- * @param {string} eventName
- * @param {*} target
- * @return {Event|Object}
- */
 function createEvent(eventName, target) {
 
 	if (typeof eventName !== 'string') {
 		throw new Error('Event name must be a string');
 	}
 
-	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
 	    detail = {
 		target: target
 	};
 
 	if (eventFrags !== null) {
-		eventName = eventFrags[0];
-		detail.namespace = eventFrags[1];
+		eventName = eventFrags[1];
+		detail.namespace = eventFrags[2];
 	}
 
 	return new window.CustomEvent(eventName, {
@@ -7043,23 +5833,11 @@ function createEvent(eventName, target) {
 	});
 }
 
-/**
- * Returns true if targetNode appears after sourceNode in the dom.
- * @param {HTMLElement} sourceNode - the source node for comparison
- * @param {HTMLElement} targetNode - the node to compare against sourceNode
- */
 function isNodeAfter(sourceNode, targetNode) {
 
-	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
-	);
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
 }
 
-/**
- * Determines if a value is a string
- *
- * @param {*} value to check
- * @returns {Boolean} True if a value is a string
- */
 function isString(value) {
 	return typeof value === 'string';
 }
@@ -7097,11 +5875,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var typeChecks = exports.typeChecks = [];
 
-/**
- *
- * @param {String} url
- * @return {String}
- */
 function absolutizeUrl(url) {
 
 	if (typeof url !== 'string') {
@@ -7113,42 +5886,21 @@ function absolutizeUrl(url) {
 	return el.firstChild.href;
 }
 
-/**
- * Get the format of a specific media, based on URL and additionally its mime type
- *
- * @param {String} url
- * @param {String} type
- * @return {String}
- */
 function formatType(url) {
 	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
 	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
 }
 
-/**
- * Return the mime part of the type in case the attribute contains the codec
- * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
- *
- * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
- * @param {String} type
- * @return {String}
- */
 function getMimeFromType(type) {
 
 	if (typeof type !== 'string') {
 		throw new Error('`type` argument must be a string');
 	}
 
-	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
 }
 
-/**
- * Get the type of media based on URL structure
- *
- * @param {String} url
- * @return {String}
- */
 function getTypeFromFile(url) {
 
 	if (typeof url !== 'string') {
@@ -7163,17 +5915,15 @@ function getTypeFromFile(url) {
 		}
 	}
 
-	// the do standard extension check
 	var ext = getExtension(url),
 	    normalizedExt = normalizeExtension(ext);
 
 	var mime = 'video/mp4';
 
-	// Obtain correct MIME types
 	if (normalizedExt) {
-		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
 			mime = 'video/' + normalizedExt;
-		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
 			mime = 'audio/' + normalizedExt;
 		}
 	}
@@ -7181,12 +5931,6 @@ function getTypeFromFile(url) {
 	return mime;
 }
 
-/**
- * Get media file extension from URL
- *
- * @param {String} url
- * @return {String}
- */
 function getExtension(url) {
 
 	if (typeof url !== 'string') {
@@ -7195,16 +5939,9 @@ function getExtension(url) {
 
 	var baseUrl = url.split('?')[0],
 	    baseName = baseUrl.split('\\').pop().split('/').pop();
-
-	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
 }
 
-/**
- * Get standard extension of a media file
- *
- * @param {String} extension
- * @return {String}
- */
 function normalizeExtension(extension) {
 
 	if (typeof extension !== 'string') {
@@ -7246,15 +5983,6 @@ var _document2 = _interopRequireDefault(_document);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Polyfill
- *
- * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
- * of polyfills provided by Babel.
- */
-
-// ChildNode.remove polyfill
-// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
 (function (arr) {
 	arr.forEach(function (item) {
 		if (item.hasOwnProperty('remove')) {
@@ -7271,11 +5999,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	});
 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-// CustomEvent polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
 (function () {
 
-	if (typeof window.CustomEvent === "function") return false;
+	if (typeof window.CustomEvent === 'function') {
+		return false;
+	}
 
 	function CustomEvent(event, params) {
 		params = params || { bubbles: false, cancelable: false, detail: undefined };
@@ -7285,18 +6013,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 	}
 
 	CustomEvent.prototype = window.Event.prototype;
-
 	window.CustomEvent = CustomEvent;
 })();
 
-// Object.assign polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
 if (typeof Object.assign !== 'function') {
 	Object.assign = function (target) {
-		// .length of function is 2
 
 		if (target === null || target === undefined) {
-			// TypeError if undefined or null
 			throw new TypeError('Cannot convert undefined or null to object');
 		}
 
@@ -7306,9 +6029,7 @@ if (typeof Object.assign !== 'function') {
 			var nextSource = arguments[index];
 
 			if (nextSource !== null) {
-				// Skip over if undefined or null
 				for (var nextKey in nextSource) {
-					// Avoid bugs when hasOwnProperty is shadowed
 					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
 						to[nextKey] = nextSource[nextKey];
 					}
@@ -7319,76 +6040,6 @@ if (typeof Object.assign !== 'function') {
 	};
 }
 
-// Array.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
-if (!Array.prototype.includes) {
-	Object.defineProperty(Array.prototype, 'includes', {
-		value: function value(searchElement, fromIndex) {
-
-			// 1. const O be ? ToObject(this value).
-			if (this === null || this === undefined) {
-				throw new TypeError('"this" is null or not defined');
-			}
-
-			var o = Object(this);
-
-			// 2. const len be ? ToLength(? Get(O, "length")).
-			var len = o.length >>> 0;
-
-			// 3. If len is 0, return false.
-			if (len === 0) {
-				return false;
-			}
-
-			// 4. const n be ? ToInteger(fromIndex).
-			//    (If fromIndex is undefined, this step produces the value 0.)
-			var n = fromIndex | 0;
-
-			// 5. If n ≥ 0, then
-			//  a. const k be n.
-			// 6. Else n < 0,
-			//  a. const k be len + n.
-			//  b. If k < 0, const k be 0.
-			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-			// 7. Repeat, while k < len
-			while (k < len) {
-				// a. const elementK be the result of ? Get(O, ! ToString(k)).
-				// b. If SameValueZero(searchElement, elementK) is true, return true.
-				// c. Increase k by 1.
-				// NOTE: === provides the correct "SameValueZero" comparison needed here.
-				if (o[k] === searchElement) {
-					return true;
-				}
-				k++;
-			}
-
-			// 8. Return false
-			return false;
-		}
-	});
-}
-
-// String.includes polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
-if (!String.prototype.includes) {
-	String.prototype.includes = function (search, start) {
-		'use strict';
-
-		if (typeof start !== 'number') {
-			start = 0;
-		}
-
-		if (start + search.length > this.length) {
-			return false;
-		} else {
-			return this.indexOf(search, start) !== -1;
-		}
-	};
-}
-
-// String.startsWith polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
 if (!String.prototype.startsWith) {
 	String.prototype.startsWith = function (searchString, position) {
 		position = position || 0;
@@ -7396,8 +6047,6 @@ if (!String.prototype.startsWith) {
 	};
 }
 
-// Element.matches polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
 if (!Element.prototype.matches) {
 	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -7407,8 +6056,6 @@ if (!Element.prototype.matches) {
 	};
 }
 
-// Element.closest polyfill
-// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
 if (window.Element && !Element.prototype.closest) {
 	Element.prototype.closest = function (s) {
 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
@@ -7422,13 +6069,6 @@ if (window.Element && !Element.prototype.closest) {
 	};
 }
 
-// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
-// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
-
-// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
-
-// MIT license
-
 (function () {
 	var lastTime = 0;
 	var vendors = ['ms', 'moz', 'webkit', 'o'];
@@ -7452,12 +6092,10 @@ if (window.Element && !Element.prototype.closest) {
 	};
 })();
 
-// Javascript workaround for FF iframe `getComputedStyle` bug
-// Reference: https://stackoverflow.com/questions/32659801/javascript-workaround-for-firefox-iframe-getcomputedstyle-bug/32660009#32660009
 if (/firefox/i.test(navigator.userAgent)) {
-	window.oldGetComputedStyle = window.getComputedStyle;
+	window.mediaElementJsOldGetComputedStyle = window.getComputedStyle;
 	window.getComputedStyle = function (el, pseudoEl) {
-		var t = window.oldGetComputedStyle(el, pseudoEl);
+		var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl);
 		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
 	};
 }
@@ -7480,27 +6118,11 @@ var _mejs2 = _interopRequireDefault(_mejs);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-/**
- * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976)
- *
- * @param {Number} fps - Frames per second
- * @return {Boolean}
- */
 function isDropFrame() {
 	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
 
 	return !(fps % 1 === 0);
 }
-/**
- * Format a numeric time in format '00:00:00'
- *
- * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero
- * @param {Boolean} forceHours
- * @param {Boolean} showFrameCount
- * @param {Number} fps - Frames per second
- * @param {Number} secondsDecimalLength - Number of decimals to display if any
- * @return {String}
- */
 function secondsToTimeCode(time) {
 	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
 	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
@@ -7511,8 +6133,7 @@ function secondsToTimeCode(time) {
 	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
 
 	var dropFrames = Math.round(fps * 0.066666),
-	    // Number of drop frames to drop on the minute marks (6%)
-	timeBase = Math.round(fps),
+	    timeBase = Math.round(fps),
 	    framesPer24Hours = Math.round(fps * 3600) * 24,
 	    framesPer10Minutes = Math.round(fps * 600),
 	    frameSep = isDropFrame(fps) ? ';' : ':',
@@ -7573,13 +6194,6 @@ function secondsToTimeCode(time) {
 	return result;
 }
 
-/**
- * Convert a '00:00:00' time string into seconds
- *
- * @param {String} time
- * @param {Number} fps - Frames per second
- * @return {Number}
- */
 function timeCodeToSeconds(time) {
 	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
 
@@ -7592,7 +6206,7 @@ function timeCodeToSeconds(time) {
 		time = time.replace(';', ':');
 	}
 
-	if (!time.match(/\d{2}(\:\d{2}){0,3}/)) {
+	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
 		throw new TypeError('Time code must have the format `00:00:00`');
 	}
 
@@ -7605,8 +6219,7 @@ function timeCodeToSeconds(time) {
 	    frames = 0,
 	    totalMinutes = 0,
 	    dropFrames = Math.round(fps * 0.066666),
-	    // Number of drop frames to drop on the minute marks (6%)
-	timeBase = Math.round(fps),
+	    timeBase = Math.round(fps),
 	    hFrames = timeBase * 3600,
 	    mFrames = timeBase * 60;
 
@@ -7642,15 +6255,6 @@ function timeCodeToSeconds(time) {
 	return parseFloat(output.toFixed(3));
 }
 
-/**
- * Calculate the time format to use
- *
- * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media
- * duration. Format: 'hh:mm:ss:ff'
- * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero
- * @param {Object} options
- * @param {Number} fps - Frames per second
- */
 function calculateTimeFormat(time, options) {
 	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
 
@@ -7671,7 +6275,7 @@ function calculateTimeFormat(time, options) {
 	    required = false;
 
 	for (var i = 0, len = lis.length; i < len; i++) {
-		if (format.indexOf(lis[i][1]) > -1) {
+		if (~format.indexOf(lis[i][1])) {
 			required = true;
 		} else if (required) {
 			var hasNextValue = false;
@@ -7700,12 +6304,6 @@ function calculateTimeFormat(time, options) {
 	options.currentTimeFormat = format;
 }
 
-/**
- * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds
- *
- * @param {String} SMPTE
- * @return {Number}
- */
 function convertSMPTEtoSeconds(SMPTE) {
 
 	if (typeof SMPTE !== 'string') {
@@ -7714,7 +6312,7 @@ function convertSMPTEtoSeconds(SMPTE) {
 
 	SMPTE = SMPTE.replace(',', '.');
 
-	var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0;
+	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
 
 	var secs = 0,
 	    multiplier = 1;
diff --git a/lib/mejs/mediaelementplayer.min.css b/lib/mejs/mediaelementplayer.min.css
index 6068c345db060dfe35834c49d485066c1656c7d1..bf05cff11823f2a0c35a3a31bc3da961e7313409 100644
--- a/lib/mejs/mediaelementplayer.min.css
+++ b/lib/mejs/mediaelementplayer.min.css
@@ -1 +1 @@
-.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs__time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-baby{position:absolute;cursor:pointer;width:20px;height:20px;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs__time-handle-baby{left:-4px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-8px;border-radius:50%}.mejs__time-rail .mejs__time-handle-baby:active,.mejs__time-rail .mejs__time-handle-baby:focus,.mejs__time-rail:hover .mejs__time-handle-baby{-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block}
\ No newline at end of file
+.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs__time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-content{position:absolute;cursor:pointer;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs__time-handle-content{left:-7px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-4px;border-radius:50%;width:10px;height:10px}.mejs__time-rail .mejs__time-handle-content:active,.mejs__time-rail .mejs__time-handle-content:focus,.mejs__time-rail:hover .mejs__time-handle-content{-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block}
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer.min.js b/lib/mejs/mediaelementplayer.min.js
index 5fb58d8da726c082689f4931ede0a1864eb5c7b9..4b5132bf0a39f6d1d6b4671cc87745d504fcb634 100644
--- a/lib/mejs/mediaelementplayer.min.js
+++ b/lib/mejs/mediaelementplayer.min.js
@@ -8,28 +8,5 @@
  * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- *//*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(21),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,21:21,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(21),m=a(22),n=a(7),o=function p(a,b,c){var d=this;e(this,p);var f=this;c=Array.isArray(c)?c:null,f.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(f.defaults,b),f.mediaElement=i["default"].createElement(b.fakeNodeName),f.mediaElement.options=b;var g=a,h=!1;if("string"==typeof a?f.mediaElement.originalNode=i["default"].getElementById(a):(f.mediaElement.originalNode=a,g=a.id),g=g||"mejs_"+Math.random().toString().slice(2),void 0!==f.mediaElement.originalNode&&null!==f.mediaElement.originalNode&&f.mediaElement.appendChild){f.mediaElement.originalNode.setAttribute("id",g+"_from_mejs");var j=f.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(j)&&!f.mediaElement.originalNode.getAttribute("preload")&&f.mediaElement.originalNode.setAttribute("preload","none"),f.mediaElement.originalNode.parentNode.insertBefore(f.mediaElement,f.mediaElement.originalNode),f.mediaElement.appendChild(f.mediaElement.originalNode)}f.mediaElement.id=g,f.mediaElement.renderers={},f.mediaElement.renderer=null,f.mediaElement.rendererName=null,f.mediaElement.changeRenderer=function(a,b){var c=d;if(void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&c.mediaElement.renderer.name===a)return c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.show(),c.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==c.mediaElement.renderer&&null!==c.mediaElement.renderer&&(c.mediaElement.renderer.pause(),c.mediaElement.renderer.stop&&c.mediaElement.renderer.stop(),c.mediaElement.renderer.hide());var e=c.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),c.mediaElement.renderer=e,c.mediaElement.rendererName=a,!0;for(var g=c.mediaElement.options.renderers.length?c.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,c.mediaElement.options);return e=f.create(c.mediaElement,l,b),e.name=a,c.mediaElement.renderers[f.name]=e,c.mediaElement.renderer=e,c.mediaElement.rendererName=a,e.show(),!0}}return!1},f.mediaElement.setSize=function(a,b){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer.setSize(a,b)},f.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=f.mediaElement.options.customError;if(!c){var d=f.mediaElement.originalNode.getAttribute("poster");d&&(c+='<img src="'+d+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var e=0,g=a.length;g>e;e++){var j=a[e];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,f.mediaElement.originalNode.parentNode.insertBefore(b,f.mediaElement.originalNode),f.mediaElement.originalNode.style.display="none",h=!0};var o=k["default"].html5media.properties,q=k["default"].html5media.methods,r=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},s=function(a){if("src"!==a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer["get"+b]():null},d=function(a){void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&f.mediaElement.renderer["set"+b](a)};r(f.mediaElement,a,c,d),f.mediaElement["get"+b]=c,f.mediaElement["set"+b]=d}},t=function(){return void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer?f.mediaElement.renderer.getSrc():null},u=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,d=a.length;d>c;c++){var e=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:e,type:""!==g&&null!==g&&void 0!==g||!e?g:m.getTypeFromFile(e)})}var h=n.renderer.select(b,f.mediaElement.options.renderers.length?f.mediaElement.options.renderers:[]),i=void 0;return f.mediaElement.paused||(f.mediaElement.pause(),i=l.createEvent("pause",f.mediaElement),f.mediaElement.dispatchEvent(i)),f.mediaElement.originalNode.setAttribute("src",b[0].src||""),f.mediaElement.querySelector(".me_cannotplay")&&f.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(f.mediaElement.createErrorMessage(b),i=l.createEvent("error",f.mediaElement),i.message="No renderer found",void f.mediaElement.dispatchEvent(i)):(f.mediaElement.changeRenderer(h.rendererName,b),void 0===f.mediaElement.renderer||null===f.mediaElement.renderer?(i=l.createEvent("error",f.mediaElement),i.message="Error creating renderer",f.mediaElement.dispatchEvent(i),void f.mediaElement.createErrorMessage(b)):void 0)},v=function(a){f.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),d=0;b>d;d++)c[d]=arguments[d];if(void 0!==f.mediaElement.renderer&&null!==f.mediaElement.renderer&&"function"==typeof f.mediaElement.renderer[a])try{f.mediaElement.renderer[a](c)}catch(e){f.mediaElement.createErrorMessage()}return null}};r(f.mediaElement,"src",t,u),f.mediaElement.getSrc=t,f.mediaElement.setSrc=u;for(var w=0,x=o.length;x>w;w++)s(o[w]);for(var y=0,z=q.length;z>y;y++)v(q[y]);f.mediaElement.events={},f.mediaElement.addEventListener=function(a,b){f.mediaElement.events[a]=f.mediaElement.events[a]||[],f.mediaElement.events[a].push(b)},f.mediaElement.removeEventListener=function(a,b){if(!a)return f.mediaElement.events={},!0;var c=f.mediaElement.events[a];if(!c)return!0;if(!b)return f.mediaElement.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return f.mediaElement.events[a].splice(d,1),!0;return!1},f.mediaElement.dispatchEvent=function(a){var b=f.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])};var A=void 0;if(null!==c)A=c;else if(null!==f.mediaElement.originalNode)switch(A=[],f.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":A.push({type:"",src:f.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var B=f.mediaElement.originalNode.childNodes.length,C=f.mediaElement.originalNode.getAttribute("src");if(C){var D=f.mediaElement.originalNode;A.push({type:m.formatType(C,D.getAttribute("type")),src:C})}for(var E=0;B>E;E++){var F=f.mediaElement.originalNode.childNodes[E];if(F.nodeType===Node.ELEMENT_NODE&&"source"===F.tagName.toLowerCase()){var G=F.getAttribute("src"),H=m.formatType(G,F.getAttribute("type"));A.push({type:H,src:G})}}}return A.length&&(f.mediaElement.src=A),f.mediaElement.options.success&&f.mediaElement.options.success(f.mediaElement,f.mediaElement.originalNode),h&&f.mediaElement.options.error&&f.mediaElement.options.error(f.mediaElement,f.mediaElement.originalNode),f.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,21:21,22:22,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.1.0",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;if(b=b.length?b:this.order,!c){var d=[/^(html5|native)/,/^flash/,/iframe$/],e=function(a){for(var b=0,c=d.length;c>b;b++)if(null!==a.match(d[b]))return b;return d.length};b.sort(function(a,b){return e(a)-e(b)})}for(var f=0,g=b.length;g>f;f++){var h=b[f],i=this.renderers[h];if(null!==i&&void 0!==i)for(var j=0,k=a.length;k>j;j++)if("function"==typeof i.canPlayType&&"string"==typeof a[j].type&&i.canPlayType(a[j].type))return{rendererName:i.name,src:a[j].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(19),o=d(n),p=a(21),q=a(20);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,a.detectFullscreenMode();var b=this,c=p.isString(b.options.fullscreenText)?b.options.fullscreenText:k["default"].t("mejs.fullscreen"),d=i["default"].createElement("div");if(d.className=b.options.classPrefix+"button "+b.options.classPrefix+"fullscreen-button",d.innerHTML='<button type="button" aria-controls="'+b.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>',b.addControlElement(d,"fullscreen"),d.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=d,b.globalBind("keydown",function(c){var d=c.which||c.keyCode||0;27===d&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||b.isFullScreen)&&a.exitFullScreen()}),b.normalHeight=0,b.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var e=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,e)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN)return void("function"==typeof a.media.webkitEnterFullscreen?a.media.webkitEnterFullscreen():a.media.originalNode.webkitEnterFullscreen());if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen")),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,19:19,2:2,20:20,21:21,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(21),l=a(20);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){null===d.rendererName.match(/flash/)&&e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,20:20,21:21,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(24),m=a(20);Object.assign(g.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-hovered no-hover"></span>')+('<span class="'+i.options.classPrefix+'time-handle"><span class="'+i.options.classPrefix+'time-handle-content"></span></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.hovered=b.querySelector("."+i.options.classPrefix+"time-hovered"),i.newTime=0,i.forcedHandlePause=!1,i.setTransformStyle=function(a,b){a.style.transform=b,a.style.webkitTransform=b,a.style.MozTransform=b,a.style.msTransform=b,a.style.OTransform=b};var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=function(){return void 0!==c.webkitTransform?"webkitTransform":void 0!==c.mozTransform?"mozTransform ":void 0!==c.oTransform?"oTransform":void 0!==c.msTransform?"msTransform":"transform"}(),j=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),n=0,o=0,p=void 0;if(p=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(p<e.left?p=e.left:p>f+e.left&&(p=f+e.left),o=p-e.left,n=o/f,i.newTime=.02>=n?0:n*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),!k.IS_IOS&&!k.IS_ANDROID&&i.timefloat)){if(0>o&&(o=0),i.options.useSmoothHover&&null!==j&&"undefined"!=typeof window[j]){var q=new window[j](getComputedStyle(i.handle)[h]),r=q.m41,s=o/parseFloat(getComputedStyle(i.total).width)-r/parseFloat(getComputedStyle(i.total).width);i.hovered.style.left=r+"px",i.setTransformStyle(i.hovered,"scaleX("+s+")"),i.hovered.setAttribute("pos",o),s>=0?m.removeClass(i.hovered,"negative"):m.addClass(i.hovered,"negative")}i.timefloat.style.left=o+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"}},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){
-a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){if(i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)){d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a);for(var b=["mouseup","touchend"],c=0,e=b.length;e>c;c++)i.container.addEventListener(b[c],function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)});i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.container.addEventListener("mousemove",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"),i.hovered&&!k.IS_IOS&&!k.IS_ANDROID&&i.options.useSmoothHover&&m.removeClass(i.hovered,"no-hover"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none"),i.hovered&&i.options.useSmoothHover&&m.addClass(i.hovered,"no-hover")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&c.setTransformStyle(c.loaded,"scaleX("+b+")"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=parseFloat(getComputedStyle(a.total).width),e=Math.round(d*c/a.media.duration),f=e-Math.round(a.handle.offsetWidth/2);if(f=0>f?0:f,a.setTransformStyle(a.current,"scaleX("+e/d+")"),a.setTransformStyle(a.handle,"translateX("+f+"px)"),a.options.useSmoothHover&&!m.hasClass(a.hovered,"no-hover")){var g=parseInt(a.hovered.getAttribute("pos"));g=isNaN(g)?0:g;var h=g/d-f/d;a.hovered.style.left=f+"px",a.setTransformStyle(a.hovered,"scaleX("+h+")"),h>=0?m.removeClass(a.hovered,"negative"):m.addClass(a.hovered,"negative")}}}}})},{16:16,19:19,2:2,20:20,24:24,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(24),j=a(20);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,20:20,24:24}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(24),n=a(21),o=a(20);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(a.tracks.length||a.trackFiles&&0!==!a.trackFiles.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=null===a.trackFiles?a.tracks.length:a.trackFiles.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-input").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=null===a.trackFiles?a.node.querySelectorAll("track"):a.trackFiles,c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;if(void 0===e||void 0===e.fadeIn){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}else if(!o.visible(e)){var h=o.siblings(self,function(a){return h(a)});o.fadeIn(c.slidesContainer.querySelector(e));for(var i=0,j=h.length;j>i;i++)o.fadeOut(h[i])}}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,20:20,21:21,24:24,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(21),m=a(20);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,19:19,2:2,20:20,21:21,4:4}],14:[function(a,b,c){"use strict";/*!
- * This is a `i18n` language object.
- *
- * English; This can serve as a template for other languages to translate
- *
- * @author
- *   TBD
- *   Sascha Greuel (Twitter: @SoftCreatR)
- *
- * @see core/i18n.js
  */
-Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(19),t=a(21),u=a(24),v=a(22),w=a(20),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;if(void 0===c){var g=d.node.getAttribute("data-mejsoptions");c=g?JSON.parse(g):{}}d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var h=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),i=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==i&&"video"!==i,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==i&&d.options.isVideo,d.mediaFiles=null,d.trackFiles=null,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var j=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),k=l["default"].createElement("span");if(k.className=d.options.classPrefix+"offscreen",k.innerText=j,d.media.parentNode.insertBefore(k,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",j),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var m=l["default"].createElement("div");m.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(m,d.container),m.appendChild(d.container)}if(s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),s.IS_SAFARI&&!s.IS_IOS){x.addClass(d.container,d.options.classPrefix+"hide-cues");for(var o=d.node.cloneNode(),q=d.node.childNodes,w=[],z=[],A=0,B=q.length;B>A;A++){var C=q[A];C&&C.nodeType!==Node.TEXT_NODE&&!function(){switch(C.tagName.toLowerCase()){case"source":var a={};Array.prototype.slice.call(C.attributes).forEach(function(b){a[b.name]=b.value}),a.type=v.formatType(a.src,a.type),w.push(a);break;case"track":C.mode="hidden",z.push(C);break;default:o.appendChild(C)}}()}d.node.remove(),d.node=d.media=o,w.length&&(d.mediaFiles=w),z.length&&(d.trackFiles=z)}d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var D=d.isVideo?"video":"audio",E=D.substring(0,1).toUpperCase()+D.substring(1);d.options[D+"Width"]>0||d.options[D+"Width"].toString().indexOf("%")>-1?d.width=d.options[D+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+E+"Width"],d.options[D+"Height"]>0||d.options[D+"Height"].toString().indexOf("%")>-1?d.height=d.options[D+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+E+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),h.pluginWidth=d.width,h.pluginHeight=d.height}if(new p["default"](d.media,h,d.mediaFiles),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var F=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(F)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),void(c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)));c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var g=0,h=c.options.features.length;h>g;g++){var i=c.options.features[g];if(c["build"+i])try{c["build"+i](c,c.controls,c.layers,c.media)}catch(k){console.error("error building "+i,k)}}var m=t.createEvent("controlsready",c.container);c.container.dispatchEvent(m),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-loading");a&&a.parentNode&&(a.parentNode.style.display="none")},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var o=null;c.media.addEventListener("timeupdate",function(){o!==c.media.duration&&(o=c.media.duration,u.calculateTimeFormat(o,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(m.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;switch("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node&&a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node&&a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){try{if(j["default"].self!==j["default"].top){if(null!==j["default"].frameElement)return j["default"].frameElement;b=j["default"].frameElement.parentNode}else b=c.parentElement}catch(d){b=c.parentElement}if(b&&x.visible(b))return b;c=b}return null}(),c=b?getComputedStyle(b,null):getComputedStyle(l["default"].body,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=void 0;try{b=j["default"].self!==j["default"].top?j["default"].frameElement.parentNode:a.outerContainer}catch(c){b=a.outerContainer}var d=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height="auto"),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth="none"),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight="none"),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height="auto"),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth="none"),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="none")),parseFloat(d.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(d.height)||(b.style.height=a.media.offsetHeight+"px"),d=getComputedStyle(b);var e=parseFloat(d.width),f=parseFloat(d.height);a.setDimensions("100%","100%");var g=a.container.querySelector(a.options.classPrefix+"poster img");g&&(g.style.display="");for(var h=a.container.querySelectorAll("object, embed, iframe, video"),i=a.height,k=a.width,l=e,m=i*e/k,n=k*f/i,o=f,p=n>e==!1,q=p?Math.floor(l):Math.floor(n),r=p?Math.floor(m):Math.floor(o),s=p?e+"px":q+"px",t=p?r+"px":f+"px",u=0,v=h.length;v>u;u++)h[u].style.height=t,h[u].style.width=s,a.media.setSize&&a.media.setSize(s,t),h[u].style.marginLeft=Math.floor((e-q)/2)+"px",h[u].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display=d.paused&&!s.IS_STOCK_ANDROID?"":"none",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),a.message&&(g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message)}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play();
-}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();var c=a.media.getSrc();a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic?a.container.parentNode.insertBefore(a.node,a.container):!function(){if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,""!==a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var d=l["default"].getElementById(a.media.id+"-iframe-overlay");d.remove()}var e=a.node.cloneNode();if(e.style.display="",a.container.parentNode.insertBefore(e,a.container),a.node.remove(),a.mediaFiles)for(var f=0,g=a.mediaFiles.length;g>f;f++){var h=l["default"].createElement("source");h.setAttribute("src",a.mediaFiles[f].src),h.setAttribute("type",a.mediaFiles[f].type),e.appendChild(h)}if(a.trackFiles)for(var i=function(b,c){var d=a.trackFiles[b],f=l["default"].createElement("track");f.kind=d.kind,f.label=d.label,f.srclang=d.srclang,f.src=d.src,e.appendChild(f),f.addEventListener("load",function(){this.mode="showing",e.textTracks[b].mode="showing"})},j=0,k=a.trackFiles.length;k>j;j++)i(j,k);delete a.node,delete a.mediaFiles,delete a.trackFiles}(),"function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var j=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");j.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{19:19,2:2,20:20,21:21,22:22,24:24,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(21),p=a(19),q=a(22),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var e=k["default"].html5media.properties,f=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null!==d.flashApi){if(void 0!==d.flashApi["get_"+a]){var b=d.flashApi["get_"+a]();return"buffered"===a?{start:function(){return 0},end:function(){return b},length:1}:b}return null}return null},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},h=0,j=e.length;j>h;h++)f(e[h]);var l=k["default"].html5media.methods,r=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};l.push("stop");for(var s=0,t=l.length;t>s;s++)r(l[s]);for(var u=["rendererready"],v=0,w=u.length;w>v;v++){var x=o.createEvent(u[v],d);a.dispatchEvent(x)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var y=a.originalNode.autoplay,z=["uid="+d.id,"autoplay="+y,"allowScriptAccess="+d.options.shimScriptAccess],A=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),B=A?a.originalNode.height:1,C=A?a.originalNode.width:1;a.originalNode.getAttribute("src")&&z.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(z.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),z.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var D=[];if(p.IS_IE){var E=i["default"].createElement("div");d.flashWrapper.appendChild(E),D=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),E.outerHTML="<object "+D.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+z.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else D=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+z.join("&")+'"','width="'+C+'"','height="'+B+'"'],A||D.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+D.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){A&&(d.flashNode.style.display="none")},d.show=function(){A&&(d.flashNode.style.display="")},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var F=0,G=c.length;G>F;F++)if(n.renderer.renderers[b.prefix].canPlayType(c[F].type)){d.setSrc(c[F].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{19:19,2:2,21:21,22:22,3:3,4:4,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(21),m=a(19),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=l.createEvent(b.type,a);a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{19:19,2:2,21:21,3:3,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(1-g/b,2);a.style.opacity=0>h?0:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d,h=parseFloat(g/b,2);a.style.opacity=h>1?1:h,g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(21),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{21:21,6:6}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}(),/firefox/i.test(navigator.userAgent)&&(window.oldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(a,b){var c=window.oldGetComputedStyle(a,b);return null===c?{getPropertyValue:function(){}}:c})},{2:2}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]);
\ No newline at end of file
+!function e(t,n,i){function o(r,s){if(!n[r]){if(!t[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(a)return a(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[r]={exports:{}};t[r][0].call(u.exports,function(e){var n=t[r][1][e];return o(n||e)},u,u.exports,e,t,n,i)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var i=void 0!==n?n:"undefined"!=typeof window?window:{},o=e(1);if("undefined"!=typeof document)t.exports=document;else{var a=i["__GLOBAL_DOCUMENT_CACHE@4"];a||(a=i["__GLOBAL_DOCUMENT_CACHE@4"]=o),t.exports=a}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),a=e(14),r=e(21),s={lang:"en",en:a.EN};s.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");s.lang=t[0],void 0===s[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])?t[1]:{},s[t[0]]=(0,r.isObjectEmpty)(t[1])?a.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])&&(s[t[0]]=t[1])}return s.lang},s.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,a=s.language(),l=function(e,t,n){return"object"!==(void 0===e?"undefined":i(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==s[a]&&(n=s[a][e],null!==t&&"number"==typeof t&&(o=s[a]["mejs.plural-form"],n=l.apply(null,[n,t,o]))),!n&&s.en&&(n=s.en[e],null!==t&&"number"==typeof t&&(o=s.en["mejs.plural-form"],n=l.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,r.escapeHTML)(n)}return e},o.default.i18n=s,"undefined"!=typeof mejsL10n&&o.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=s},{14:14,21:21,6:6}],5:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(21),d=e(22),u=e(7),c=e(19),f=function e(t,n,i){var f=this;o(this,e);var p=this;i=Array.isArray(i)?i:null,p.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(p.defaults,n),p.mediaElement=r.default.createElement(n.fakeNodeName),p.mediaElement.options=n;var m=t,h=!1;if("string"==typeof t?p.mediaElement.originalNode=r.default.getElementById(t):(p.mediaElement.originalNode=t,m=t.id),m=m||"mejs_"+Math.random().toString().slice(2),void 0!==p.mediaElement.originalNode&&null!==p.mediaElement.originalNode&&p.mediaElement.appendChild){p.mediaElement.originalNode.setAttribute("id",m+"_from_mejs");var v=p.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(v)>-1&&!p.mediaElement.originalNode.getAttribute("preload")&&p.mediaElement.originalNode.setAttribute("preload","none"),p.mediaElement.originalNode.parentNode.insertBefore(p.mediaElement,p.mediaElement.originalNode),p.mediaElement.appendChild(p.mediaElement.originalNode)}p.mediaElement.id=m,p.mediaElement.renderers={},p.mediaElement.renderer=null,p.mediaElement.rendererName=null,p.mediaElement.changeRenderer=function(e,t){var n=f;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(t[0].src),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var i=n.mediaElement.renderers[e],o=null;if(void 0!==i&&null!==i)return i.show(),i.setSrc(t[0].src),n.mediaElement.renderer=i,n.mediaElement.rendererName=e,!0;for(var a=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:u.renderer.order,r=0,s=a.length;r<s;r++){var l=a[r];if(l===e){o=u.renderer.renderers[l];var d=Object.assign(o.options,n.mediaElement.options);return i=o.create(n.mediaElement,d,t),i.name=e,n.mediaElement.renderers[o.name]=i,n.mediaElement.renderer=i,n.mediaElement.rendererName=e,i.show(),!0}}return!1},p.mediaElement.setSize=function(e,t){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer.setSize(e,t)},p.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=r.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=p.mediaElement.options.customError;if(!n){var i=p.mediaElement.originalNode.getAttribute("poster");i&&(n+='<img src="'+i+'" width="100%" height="100%" alt="'+s.default.i18n.t("mejs.download-file")+'">');for(var o=0,a=e.length;o<a;o++){var l=e[o];n+='<a href="'+l.src+'" data-type="'+l.type+'"><span>'+s.default.i18n.t("mejs.download-file")+": "+l.src+"</span></a>"}}t.innerHTML=n,p.mediaElement.originalNode.parentNode.insertBefore(t,p.mediaElement.originalNode),p.mediaElement.originalNode.style.display="none",h=!0};var y=s.default.html5media.properties,g=s.default.html5media.methods,E=function(e,t,n,i){var o=e[t],a=function(){return n.apply(e,[o])},r=function(t){return o=i.apply(e,[t])};Object.defineProperty(e,t,{get:a,set:r})},b=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer.getSrc():null},S=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,d.getTypeFromFile)(e):""});else for(var n=0,i=e.length;n<i;n++){var o=(0,d.absolutizeUrl)(e[n].src),a=e[n].type;t.push({src:o,type:""!==a&&null!==a&&void 0!==a||!o?a:(0,d.getTypeFromFile)(o)})}var r=u.renderer.select(t,p.mediaElement.options.renderers.length?p.mediaElement.options.renderers:[]),s=void 0;if(p.mediaElement.paused||(p.mediaElement.pause(),s=(0,l.createEvent)("pause",p.mediaElement),p.mediaElement.dispatchEvent(s)),p.mediaElement.originalNode.setAttribute("src",t[0].src||""),p.mediaElement.querySelector(".me_cannotplay")&&p.mediaElement.querySelector(".me_cannotplay").remove(),null===r)return p.mediaElement.createErrorMessage(t),s=(0,l.createEvent)("error",p.mediaElement),s.message="No renderer found",void p.mediaElement.dispatchEvent(s);p.mediaElement.changeRenderer(r.rendererName,t),void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer||((s=(0,l.createEvent)("error",p.mediaElement)).message="Error creating renderer",p.mediaElement.dispatchEvent(s),p.mediaElement.createErrorMessage(t))};E(p.mediaElement,"src",b,S),p.mediaElement.getSrc=b,p.mediaElement.setSrc=S;for(var x=0,w=y.length;x<w;x++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer?p.mediaElement.renderer["get"+t]():null},i=function(e){void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&p.mediaElement.renderer["set"+t](e)};E(p.mediaElement,e,n,i),p.mediaElement["get"+t]=n,p.mediaElement["set"+t]=i}}(y[x]);for(var P=0,T=g.length;P<T;P++)!function(e){p.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];if(void 0!==p.mediaElement.renderer&&null!==p.mediaElement.renderer&&"function"==typeof p.mediaElement.renderer[e])try{p.mediaElement.renderer[e](n)}catch(e){p.mediaElement.createErrorMessage()}return null}}(g[P]);p.mediaElement.events={},p.mediaElement.addEventListener=function(e,t){p.mediaElement.events[e]=p.mediaElement.events[e]||[],p.mediaElement.events[e].push(t)},p.mediaElement.removeEventListener=function(e,t){if(!e)return p.mediaElement.events={},!0;var n=p.mediaElement.events[e];if(!n)return!0;if(!t)return p.mediaElement.events[e]=[],!0;for(var i=0;i<n.length;i++)if(n[i]===t)return p.mediaElement.events[e].splice(i,1),!0;return!1},p.mediaElement.dispatchEvent=function(e){var t=p.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var C=function(e,t){if(s.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===a.default.location.protocol&&c.IS_IOS&&!a.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(a.default.URL||a.default.webkitURL).createObjectURL(this.response);return p.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},k=void 0;if(null!==i)k=i;else if(null!==p.mediaElement.originalNode)switch(k=[],p.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":k.push({type:"",src:p.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var N=p.mediaElement.originalNode.childNodes.length,A=p.mediaElement.originalNode.getAttribute("src");if(A){var _=p.mediaElement.originalNode,F=(0,d.formatType)(A,_.getAttribute("type"));k.push({type:F,src:C(A,F)})}for(var L=0;L<N;L++){var j=p.mediaElement.originalNode.childNodes[L];if(j.nodeType===Node.ELEMENT_NODE&&"source"===j.tagName.toLowerCase()){var M=j.getAttribute("src"),I=(0,d.formatType)(M,j.getAttribute("type"));k.push({type:I,src:C(M,I)})}}}return k.length&&(p.mediaElement.src=k),p.mediaElement.options.success&&p.mediaElement.options.success(p.mediaElement,p.mediaElement.originalNode),h&&p.mediaElement.options.error&&p.mediaElement.options.error(p.mediaElement,p.mediaElement.originalNode),p.mediaElement};a.default.MediaElement=f,n.default=f},{19:19,2:2,21:21,22:22,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),o={};o.version="4.1.1",o.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},i.default.mejs=o,n.default=o},{3:3}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),s=function(){function e(){i(this,e),this.renderers={},this.order=[]}return a(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var i=[/^(html5|native)/i,/^flash/i,/iframe$/i],o=function(e){for(var t=0,n=i.length;t<n;t++)if(i[t].test(e))return t;return i.length};t.sort(function(e,t){return o(e)-o(t)})}for(var a=0,r=t.length;a<r;a++){var s=t[a],l=this.renderers[s];if(null!==l&&void 0!==l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":o(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),l=n.renderer=new s;r.default.Renderers=l},{6:6}],8:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(4)),s=e(16),l=i(s),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(19)),u=e(21),c=e(20);Object.assign(s.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(l.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(e){if(e.isVideo){e.isInIframe=o.default.location!==o.default.parent.location,e.detectFullscreenMode();var t=this,n=(0,u.isString)(t.options.fullscreenText)?t.options.fullscreenText:r.default.t("mejs.fullscreen"),i=a.default.createElement("div");if(i.className=t.options.classPrefix+"button "+t.options.classPrefix+"fullscreen-button",i.innerHTML='<button type="button" aria-controls="'+t.id+'" title="'+n+'" aria-label="'+n+'" tabindex="0"></button>',t.addControlElement(i,"fullscreen"),i.addEventListener("click",function(){d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||e.isFullScreen?e.exitFullScreen():e.enterFullScreen()}),e.fullscreenBtn=i,t.globalBind("keydown",function(n){27===(n.which||n.keyCode||0)&&(d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||t.isFullScreen)&&e.exitFullScreen()}),t.normalHeight=0,t.normalWidth=0,d.HAS_TRUE_NATIVE_FULLSCREEN){var s=function(){e.isFullScreen&&(d.isFullScreen()?(e.isNativeFullScreen=!0,e.setControlsSize()):(e.isNativeFullScreen=!1,e.exitFullScreen()))};e.globalBind(d.FULLSCREEN_EVENT_NAME,s)}}},detectFullscreenMode:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName),n="";return n=d.HAS_TRUE_NATIVE_FULLSCREEN&&t?"native-native":d.HAS_TRUE_NATIVE_FULLSCREEN&&!t?"plugin-native":e.usePluginFullScreen&&d.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",e.fullscreenMode=n,n},cleanfullscreen:function(e){e.exitFullScreen()},enterFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(html5|native)/i.test(e.media.rendererName),n=getComputedStyle(e.container);if(d.IS_IOS&&d.HAS_IOS_FULLSCREEN)"function"==typeof e.media.webkitEnterFullscreen?e.media.webkitEnterFullscreen():e.media.originalNode.webkitEnterFullscreen();else{if((0,c.addClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.normalHeight=parseFloat(n.height),e.normalWidth=parseFloat(n.width),"native-native"!==e.fullscreenMode&&"plugin-native"!==e.fullscreenMode||(d.requestFullScreen(e.container),e.isInIframe&&setTimeout(function t(){if(e.isNativeFullScreen){var n=o.default.innerWidth||a.default.documentElement.clientWidth||a.default.body.clientWidth,i=screen.width;Math.abs(i-n)>.002*i?e.exitFullScreen():setTimeout(t,500)}},1e3)),e.container.style.width="100%",e.container.style.height="100%",e.containerSizeTimeout=setTimeout(function(){e.container.style.width="100%",e.container.style.height="100%",e.setControlsSize()},500),t)e.node.style.width="100%",e.node.style.height="100%";else for(var i=e.container.querySelectorAll("iframe, embed, object, video"),r=i.length,s=0;s<r;s++)i[s].style.width="100%",i[s].style.height="100%";e.options.setDimensions&&"function"==typeof e.media.setSize&&e.media.setSize(screen.width,screen.height);for(var l=e.layers.childNodes,f=l.length,p=0;p<f;p++)l[p].style.width="100%",l[p].style.height="100%";e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen")),e.setControlsSize(),e.isFullScreen=!0;var m=Math.min(screen.width/e.width,screen.height/e.height),h=e.container.querySelector("."+e.options.classPrefix+"captions-text");h&&(h.style.fontSize=100*m+"%",h.style.lineHeight="normal",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="45px");var v=(0,u.createEvent)("enteredfullscreen",e.container);e.container.dispatchEvent(v)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(clearTimeout(e.containerSizeTimeout),d.HAS_TRUE_NATIVE_FULLSCREEN&&(d.IS_FULLSCREEN||e.isFullScreen)&&d.cancelFullScreen(),(0,c.removeClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.removeClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.container.style.width=e.normalWidth+"px",e.container.style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.container.querySelectorAll("iframe, embed, object, video"),i=n.length,o=0;o<i;o++)n[o].style.width=e.normalWidth+"px",n[o].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.layers.childNodes,s=r.length,l=0;l<s;l++)r[l].style.width=e.normalWidth+"px",r[l].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var f=e.container.querySelector("."+e.options.classPrefix+"captions-text");f&&(f.style.fontSize="",f.style.lineHeight="",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var p=(0,u.createEvent)("exitedfullscreen",e.container);e.container.dispatchEvent(p)}})},{16:16,19:19,2:2,20:20,21:21,3:3,4:4}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(21),d=e(20);Object.assign(a.config,{playText:null,pauseText:null}),Object.assign(r.default.prototype,{buildplaypause:function(e,t,n,i){function a(e){"play"===e?((0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"pause"),m.setAttribute("title",f),m.setAttribute("aria-label",f)):((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"play"),m.setAttribute("title",c),m.setAttribute("aria-label",c))}var r=this,u=r.options,c=(0,l.isString)(u.playText)?u.playText:s.default.t("mejs.play"),f=(0,l.isString)(u.pauseText)?u.pauseText:s.default.t("mejs.pause"),p=o.default.createElement("div");p.className=r.options.classPrefix+"button "+r.options.classPrefix+"playpause-button "+r.options.classPrefix+"play",p.innerHTML='<button type="button" aria-controls="'+r.id+'" title="'+c+'" aria-label="'+f+'" tabindex="0"></button>',p.addEventListener("click",function(){i.paused?i.play():i.pause()});var m=p.querySelector("button");r.addControlElement(p,"playpause"),a("pse"),i.addEventListener("loadedmetadata",function(){-1===i.rendererName.indexOf("flash")&&a("pse")}),i.addEventListener("play",function(){a("play")}),i.addEventListener("playing",function(){a("play")}),i.addEventListener("pause",function(){a("pse")}),i.addEventListener("ended",function(){e.options.loop||((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.addClass)(p,r.options.classPrefix+"replay"),m.setAttribute("title",c),m.setAttribute("aria-label",c))})}})},{16:16,2:2,20:20,21:21,4:4}],10:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(19),d=e(24),u=e(20);Object.assign(a.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(r.default.prototype,{buildprogress:function(e,t,n,i){var a=0,r=!1,c=!1,f=this,p=e.options.autoRewind,m=e.options.enableProgressTooltip?'<span class="'+f.options.classPrefix+'time-float"><span class="'+f.options.classPrefix+'time-float-current">00:00</span><span class="'+f.options.classPrefix+'time-float-corner"></span></span>':"",h=o.default.createElement("div");h.className=f.options.classPrefix+"time-rail",h.innerHTML='<span class="'+f.options.classPrefix+"time-total "+f.options.classPrefix+'time-slider"><span class="'+f.options.classPrefix+'time-buffering"></span><span class="'+f.options.classPrefix+'time-loaded"></span><span class="'+f.options.classPrefix+'time-current"></span><span class="'+f.options.classPrefix+'time-hovered no-hover"></span><span class="'+f.options.classPrefix+'time-handle"><span class="'+f.options.classPrefix+'time-handle-content"></span></span>'+m+"</span>",f.addControlElement(h,"progress"),t.querySelector("."+f.options.classPrefix+"time-buffering").style.display="none",f.rail=t.querySelector("."+f.options.classPrefix+"time-rail"),f.total=t.querySelector("."+f.options.classPrefix+"time-total"),f.loaded=t.querySelector("."+f.options.classPrefix+"time-loaded"),f.current=t.querySelector("."+f.options.classPrefix+"time-current"),f.handle=t.querySelector("."+f.options.classPrefix+"time-handle"),f.timefloat=t.querySelector("."+f.options.classPrefix+"time-float"),f.timefloatcurrent=t.querySelector("."+f.options.classPrefix+"time-float-current"),f.slider=t.querySelector("."+f.options.classPrefix+"time-slider"),f.hovered=t.querySelector("."+f.options.classPrefix+"time-hovered"),f.newTime=0,f.forcedHandlePause=!1,f.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t};var v=function(t){var n=getComputedStyle(f.total),o=(0,u.offset)(f.total),a=parseFloat(n.width),s=function(){return void 0!==n.webkitTransform?"webkitTransform":void 0!==n.mozTransform?"mozTransform ":void 0!==n.oTransform?"oTransform":void 0!==n.msTransform?"msTransform":"transform"}(),c=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),p=0,m=0,h=void 0;if(h=t.originalEvent&&t.originalEvent.changedTouches?t.originalEvent.changedTouches[0].pageX:t.changedTouches?t.changedTouches[0].pageX:t.pageX,i.duration&&(h<o.left?h=o.left:h>a+o.left&&(h=a+o.left),m=h-o.left,p=m/a,f.newTime=p<=.02?0:p*i.duration,r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(f.setCurrentRailHandle(f.newTime),f.updateCurrent(f.newTime)),!l.IS_IOS&&!l.IS_ANDROID&&f.timefloat)){if(m<0&&(m=0),f.options.useSmoothHover&&null!==c&&void 0!==window[c]){var v=new window[c](getComputedStyle(f.handle)[s]).m41,y=m/parseFloat(getComputedStyle(f.total).width)-v/parseFloat(getComputedStyle(f.total).width);f.hovered.style.left=v+"px",f.setTransformStyle(f.hovered,"scaleX("+y+")"),f.hovered.setAttribute("pos",m),y>=0?(0,u.removeClass)(f.hovered,"negative"):(0,u.addClass)(f.hovered,"negative")}f.timefloat.style.left=m+"px",f.timefloatcurrent.innerHTML=(0,d.secondsToTimeCode)(f.newTime,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),f.timefloat.style.display="block"}},y=function(){var t=i.currentTime,n=s.default.t("mejs.time-slider"),o=(0,d.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),a=i.duration;f.slider.setAttribute("role","slider"),f.slider.tabIndex=0,i.paused?(f.slider.setAttribute("aria-label",n),f.slider.setAttribute("aria-valuemin",0),f.slider.setAttribute("aria-valuemax",a),f.slider.setAttribute("aria-valuenow",t),f.slider.setAttribute("aria-valuetext",o)):(f.slider.removeAttribute("aria-label"),f.slider.removeAttribute("aria-valuemin"),f.slider.removeAttribute("aria-valuemax"),f.slider.removeAttribute("aria-valuenow"),f.slider.removeAttribute("aria-valuetext"))},g=function(){new Date-a>=1e3&&i.play()},E=function(){r&&null!==i.currentTime&&f.newTime.toFixed(4)!==i.currentTime.toFixed(4)&&(i.setCurrentTime(f.newTime),e.setCurrentRail(),f.updateCurrent(f.newTime)),f.forcedHandlePause&&f.media.play(),f.forcedHandlePause=!1};f.slider.addEventListener("focus",function(){e.options.autoRewind=!1}),f.slider.addEventListener("blur",function(){e.options.autoRewind=p}),f.slider.addEventListener("keydown",function(t){if(new Date-a>=1e3&&(c=i.paused),f.options.keyActions.length){var n=t.which||t.keyCode||0,o=i.duration,r=e.options.defaultSeekForwardInterval(i),s=e.options.defaultSeekBackwardInterval(i),d=i.currentTime;switch(n){case 37:case 40:i.duration!==1/0&&(d-=s);break;case 39:case 38:i.duration!==1/0&&(d+=r);break;case 36:d=0;break;case 35:d=o;break;case 32:return void(l.IS_FIREFOX||(i.paused?i.play():i.pause()));case 13:return void(i.paused?i.play():i.pause());default:return}d=d<0?0:d>=o?o:Math.floor(d),a=new Date,c||i.pause(),d<i.duration&&!c&&setTimeout(g,1100),i.setCurrentTime(d),t.preventDefault(),t.stopPropagation()}});var b=["mousedown","touchstart"];f.slider.addEventListener("dragstart",function(){return!1});for(var S=0,x=b.length;S<x;S++)f.slider.addEventListener(b[S],function(e){if(f.forcedHandlePause=!1,i.duration!==1/0&&(1===e.which||0===e.which)){i.paused||(f.media.pause(),f.forcedHandlePause=!0),r=!0,v(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)f.container.addEventListener(t[n],function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)});f.globalBind("mouseup.dur touchend.dur",function(){E(),r=!1,f.timefloat&&(f.timefloat.style.display="none"),f.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});f.slider.addEventListener("mouseenter",function(e){e.target===f.slider&&i.duration!==1/0&&(f.container.addEventListener("mousemove",function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)}),!f.timefloat||l.IS_IOS||l.IS_ANDROID||(f.timefloat.style.display="block"),f.hovered&&!l.IS_IOS&&!l.IS_ANDROID&&f.options.useSmoothHover&&(0,u.removeClass)(f.hovered,"no-hover"))}),f.slider.addEventListener("mouseleave",function(){i.duration!==1/0&&(r||(f.globalUnbind("mousemove.dur"),f.timefloat&&(f.timefloat.style.display="none"),f.hovered&&f.options.useSmoothHover&&(0,u.addClass)(f.hovered,"no-hover")))}),i.addEventListener("progress",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n);else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),f.slider.style.display="none"}}),i.addEventListener("timeupdate",function(n){var a=t.querySelector("."+f.options.classPrefix+"broadcast");if(i.duration!==1/0)a&&(f.slider.style.display="",a.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n),y();else if(!a){var r=o.default.createElement("span");r.className=f.options.classPrefix+"broadcast",r.innerText=s.default.t("mejs.live-broadcast"),t.querySelector("."+f.options.classPrefix+"time-rail").appendChild(r),f.slider.style.display="none"}}),f.container.addEventListener("controlsresize",function(t){i.duration!==1/0&&(e.setProgressRail(t),f.forcedHandlePause||e.setCurrentRail(t))})},setProgressRail:function(e){var t=this,n=void 0!==e?e.target:t.media,i=null;n&&n.buffered&&n.buffered.length>0&&n.buffered.end&&n.duration?i=n.buffered.end(n.buffered.length-1)/n.duration:n&&void 0!==n.bytesTotal&&n.bytesTotal>0&&void 0!==n.bufferedBytes?i=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(i=e.loaded/e.total),null!==i&&(i=Math.min(1,Math.max(0,i)),t.loaded&&t.total&&t.setTransformStyle(t.loaded,"scaleX("+i+")"))},setCurrentRailHandle:function(e){var t=this;t.setCurrentRailMain(t,e)},setCurrentRail:function(){var e=this;e.setCurrentRailMain(e)},setCurrentRailMain:function(e,t){if(void 0!==e.media.currentTime&&e.media.duration){var n=void 0===t?e.media.currentTime:t;if(e.total&&e.handle){var i=parseFloat(getComputedStyle(e.total).width),o=Math.round(i*n/e.media.duration),a=o-Math.round(e.handle.offsetWidth/2);if(a=a<0?0:a,e.setTransformStyle(e.current,"scaleX("+o/i+")"),e.setTransformStyle(e.handle,"translateX("+a+"px)"),e.options.useSmoothHover&&!(0,u.hasClass)(e.hovered,"no-hover")){var r=parseInt(e.hovered.getAttribute("pos")),s=(r=isNaN(r)?0:r)/i-a/i;e.hovered.style.left=a+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),s>=0?(0,u.removeClass)(e.hovered,"negative"):(0,u.addClass)(e.hovered,"negative")}}}}})},{16:16,19:19,2:2,20:20,24:24,4:4}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=e(24),l=e(20);Object.assign(a.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(r.default.prototype,{buildcurrent:function(e,t,n,i){var a=this,r=o.default.createElement("div");r.className=a.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+a.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"current"),i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateCurrent()})},buildduration:function(e,t,n,i){var a=this;if(t.lastChild.querySelector("."+a.options.classPrefix+"currenttime"))t.querySelector("."+a.options.classPrefix+"time").innerHTML+=a.options.timeAndDurationSeparator+'<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>";else{t.querySelector("."+a.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+a.options.classPrefix+"currenttime").parentNode,a.options.classPrefix+"currenttime-container");var r=o.default.createElement("div");r.className=a.options.classPrefix+"time "+a.options.classPrefix+"duration-container",r.innerHTML='<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"duration")}i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateDuration()})},updateCurrent:function(){var e=this,t=e.media.currentTime;isNaN(t)&&(t=0),e.controls.querySelector("."+e.options.classPrefix+"currenttime")&&(e.controls.querySelector("."+e.options.classPrefix+"currenttime").innerText=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength))},updateDuration:function(){var e=this,t=e.media.duration;(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),e.options.duration>0&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength);n.length>5&&(0,l.toggleClass)(e.container,e.options.classPrefix+"long-video"),e.controls.querySelector("."+e.options.classPrefix+"duration")&&t>0&&(e.controls.querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,20:20,24:24}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=i(e(6)),r=i(e(4)),s=e(16),l=i(s),d=e(24),u=e(21),c=e(20);Object.assign(s.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l.default.prototype,{hasChapters:!1,buildtracks:function(e,t,n,i){if(e.tracks.length||e.trackFiles&&0!==!e.trackFiles.length){var a=this,s=a.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",l=(0,u.isString)(a.options.tracksText)?a.options.tracksText:r.default.t("mejs.captions-subtitles"),d=(0,u.isString)(a.options.chaptersText)?a.options.chaptersText:r.default.t("mejs.captions-chapters"),f=null===e.trackFiles?e.tracks.length:e.trackFiles.length;if(a.domNode.textTracks)for(var p=a.domNode.textTracks.length-1;p>=0;p--)a.domNode.textTracks[p].mode="hidden";a.cleartracks(e),e.captions=o.default.createElement("div"),e.captions.className=a.options.classPrefix+"captions-layer "+a.options.classPrefix+"layer",e.captions.innerHTML='<div class="'+a.options.classPrefix+"captions-position "+a.options.classPrefix+'captions-position-hover"'+s+'><span class="'+a.options.classPrefix+'captions-text"></span></div>',e.captions.style.display="none",n.insertBefore(e.captions,n.firstChild),e.captionsText=e.captions.querySelector("."+a.options.classPrefix+"captions-text"),e.captionsButton=o.default.createElement("div"),e.captionsButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"captions-button",e.captionsButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+l+'" aria-label="'+l+'" tabindex="0"></button><div class="'+a.options.classPrefix+"captions-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'captions-selector-list"><li class="'+a.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+a.options.classPrefix+'captions-selector-input" name="'+e.id+'_captions" id="'+e.id+'_captions_none" value="none" checked disabled><label class="'+a.options.classPrefix+"captions-selector-label "+a.options.classPrefix+'captions-selected" for="'+e.id+'_captions_none">'+r.default.t("mejs.none")+"</label></li></ul></div>",a.addControlElement(e.captionsButton,"tracks"),e.captionsButton.querySelector("."+a.options.classPrefix+"captions-selector-input").disabled=!1,e.chaptersButton=o.default.createElement("div"),e.chaptersButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"chapters-button",e.chaptersButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+d+'" aria-label="'+d+'" tabindex="0"></button><div class="'+a.options.classPrefix+"chapters-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'chapters-selector-list"></ul></div>';for(var m=0,h=0;h<f;h++){var v=e.tracks[h].kind;"subtitles"===v||"captions"===v?m++:"chapters"!==v||t.querySelector("."+a.options.classPrefix+"chapter-selector")||e.captionsButton.parentNode.insertBefore(e.chaptersButton,e.captionsButton)}e.trackToLoad=-1,e.selectedTrack=null,e.isLoadingTrack=!1;for(var y=0;y<f;y++){var g=e.tracks[y].kind;"subtitles"!==g&&"captions"!==g||e.addTrackButton(e.tracks[y].trackId,e.tracks[y].srclang,e.tracks[y].label)}e.loadNextTrack();var E=["mouseenter","focusin"],b=["mouseleave","focusout"];if(a.options.toggleCaptionsButtonWhenOnlyOne&&1===m)e.captionsButton.addEventListener("click",function(){var t="none";null===e.selectedTrack&&(t=e.tracks[0].trackId),e.setTrack(t)});else{for(var S=e.captionsButton.querySelectorAll("."+a.options.classPrefix+"captions-selector-label"),x=e.captionsButton.querySelectorAll("input[type=radio]"),w=0,P=E.length;w<P;w++)e.captionsButton.addEventListener(E[w],function(){(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var T=0,C=b.length;T<C;T++)e.captionsButton.addEventListener(b[T],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var k=0,N=x.length;k<N;k++)x[k].addEventListener("click",function(){e.setTrack(this.value)});for(var A=0,_=S.length;A<_;A++)S[A].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)});e.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var F=0,L=E.length;F<L;F++)e.chaptersButton.addEventListener(E[F],function(){this.querySelector("."+a.options.classPrefix+"chapters-selector-list").childNodes.length&&(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});for(var j=0,M=b.length;j<M;j++)e.chaptersButton.addEventListener(b[j],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});e.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),e.options.alwaysShowControls?(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover"):(e.container.addEventListener("controlsshown",function(){(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")}),e.container.addEventListener("controlshidden",function(){i.paused||(0,c.removeClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")})),i.addEventListener("timeupdate",function(){e.displayCaptions()}),""!==e.options.slidesSelector&&(e.slidesContainer=o.default.querySelectorAll(e.options.slidesSelector),i.addEventListener("timeupdate",function(){e.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.controls,e.layers,e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var i=0;i<n;i++){var o=t[i],a=o.getAttribute("srclang").toLowerCase()||"",r=e.id+"_track_"+i+"_"+o.getAttribute("kind")+"_"+a;e.tracks.push({trackId:r,srclang:a,src:o.getAttribute("src"),kind:o.getAttribute("kind"),label:o.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e){for(var t=this,n=t.captionsButton.querySelectorAll('input[type="radio"]'),i=t.captionsButton.querySelectorAll("."+t.options.classPrefix+"captions-selected"),o=t.captionsButton.querySelector('input[value="'+e+'"]'),a=0,r=n.length;a<r;a++)n[a].checked=!1;for(var s=0,l=i.length;s<l;s++)(0,c.removeClass)(i[s],t.options.classPrefix+"captions-selected");o.checked=!0;for(var d=(0,c.siblings)(o,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),f=0,p=d.length;f<p;f++)(0,c.addClass)(d[f],t.options.classPrefix+"captions-selected");if("none"===e)t.selectedTrack=null,(0,c.removeClass)(t.captionsButton,t.options.classPrefix+"captions-enabled");else for(var m=0,h=t.tracks.length;m<h;m++){var v=t.tracks[m];if(v.trackId===e){null===t.selectedTrack&&(0,c.addClass)(t.captionsButton,t.options.classPrefix+"captions-enabled"),t.selectedTrack=v,t.captions.setAttribute("lang",t.selectedTrack.srclang),t.displayCaptions();break}}var y=(0,u.createEvent)("captionschange",t.media);y.detail.caption=t.selectedTrack,t.media.dispatchEvent(y)},loadNextTrack:function(){var e=this;++e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,c.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?a.default.TrackFormatParser.dfxp.parse(e):a.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,i=o.default.getElementById(""+e.trackId);if(i){var s=e.label;""===s&&(s=r.default.t(a.default.language.codes[n])||n),i.disabled=!1;for(var l=(0,c.siblings)(i,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),d=0,f=l.length;d<f;d++)l[d].innerHTML=s;if(t.options.startLanguage===n){i.checked=!0;var p=(0,u.createEvent)("click",i);i.dispatchEvent(p)}}},removeTrackButton:function(e){var t=o.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var i=this;""===n&&(n=r.default.t(a.default.language.codes[t])||t),i.captionsButton.querySelector("ul").innerHTML+='<li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+i.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+i.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,i=e.tracks.length;n<i;n++){var o=e.tracks[n].kind;if(("subtitles"===o||"captions"===o)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(n>-1)return e.captionsText.innerHTML=function(e){var t=o.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),i=n.length;i--;)n[i].remove();for(var a=t.getElementsByTagName("*"),r=0,s=a.length;r<s;r++)for(var l=a[r].attributes,d=Array.prototype.slice.call(l),u=0,c=d.length;u<c;u++)d[u].name.startsWith("on")||d[u].value.startsWith("javascript")?a[r].remove():"style"===d[u].name&&a[r].removeAttribute(d[u].name);return t.innerHTML}(t.entries[n].text),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px");e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){var t=this;t.slides=e,t.slides.entries.imgs=[t.slides.entries.length],t.showSlide(0)},showSlide:function(e){var t=this,n=this;if(void 0!==n.tracks&&void 0!==n.slidesContainer){var i=n.slides.entries[e].text,a=n.slides.entries[e].imgs;if(void 0===a||void 0===a.fadeIn){var r=o.default.createElement("img");r.src=i,r.addEventListener("load",function(){var e=t,i=(0,c.siblings)(e,function(e){return i(e)});e.style.display="none",n.slidesContainer.innerHTML+=e.innerHTML,(0,c.fadeIn)(n.slidesContainer.querySelector(r));for(var o=0,a=i.length;o<a;o++)(0,c.fadeOut)(i[o],400)}),n.slides.entries[e].imgs=a=r}else if(!(0,c.visible)(a)){var s=(0,c.siblings)(self,function(e){return s(e)});(0,c.fadeIn)(n.slidesContainer.querySelector(a));for(var l=0,d=s.length;l<d;l++)(0,c.fadeOut)(s[l])}}},displaySlides:function(){var e=this;if(void 0!==this.slides){var t=e.slides,n=e.searchTrackPosition(t.entries,e.media.currentTime);n>-1&&e.showSlide(n)}},drawChapters:function(e){var t=this,n=e.entries.length;if(n){t.chaptersButton.querySelector("ul").innerHTML="";for(var i=0;i<n;i++)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="'+e.entries[i].start+'" disabled><label class="'+t.options.classPrefix+'chapters-selector-label"for="'+t.id+"_chapters_"+i+'">'+e.entries[i].text+"</label></li>";for(var o=t.chaptersButton.querySelectorAll('input[type="radio"]'),a=t.chaptersButton.querySelectorAll("."+t.options.classPrefix+"chapters-selector-label"),r=0,s=o.length;r<s;r++)o[r].disabled=!1,o[r].checked=!1,o[r].addEventListener("click",function(){var e=this,n=t.chaptersButton.querySelectorAll("li"),i=(0,c.siblings)(e,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"chapters-selector-label")})[0];e.checked=!0,e.parentNode.setAttribute("aria-checked",!0),(0,c.addClass)(i,t.options.classPrefix+"chapters-selected"),(0,c.removeClass)(t.chaptersButton.querySelector("."+t.options.classPrefix+"chapters-selected"),t.options.classPrefix+"chapters-selected");for(var o=0,a=n.length;o<a;o++)n[o].setAttribute("aria-checked",!1);t.media.setCurrentTime(parseFloat(e.value)),t.media.paused&&t.media.play()});for(var l=0,d=a.length;l<d;l++)a[l].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)})}},searchTrackPosition:function(e,t){for(var n=0,i=e.length-1,o=void 0,a=void 0,r=void 0;n<=i;){if(o=n+i>>1,a=e[o].start,r=e[o].stop,t>=a&&t<r)return o;a<t?n=o+1:a>t&&(i=o-1)}return-1}}),a.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},a.default.TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],i=void 0,o=void 0,a=void 0,r=0,s=t.length;r<s;r++){if((i=this.pattern.exec(t[r]))&&r<t.length){for(r-1>=0&&""!==t[r-1]&&(a=t[r-1]),o=t[++r],r++;""!==t[r]&&r<t.length;)o=o+"\n"+t[r],r++;o=o.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:a,start:0===(0,d.convertSMPTEtoSeconds)(i[1])?.2:(0,d.convertSMPTEtoSeconds)(i[1]),stop:(0,d.convertSMPTEtoSeconds)(i[3]),text:o,settings:i[5]})}a=""}return n}},dfxp:{parse:function(e){var t=(e=$(e).filter("tt")).firstChild,n=t.querySelectorAll("p"),i=e.getElementById(""+t.attr("style")),o=[],a=void 0;if(i.length){i.removeAttribute("id");var r=i.attributes;if(r.length){a={};for(var s=0,l=r.length;s<l;s++)a[r[s].name.split(":")[1]]=r[s].value}}for(var u=0,c=n.length;u<c;u++){var f=void 0,p={start:null,stop:null,style:null,text:null};if(n.eq(u).attr("begin")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("begin"))),!p.start&&n.eq(u-1).attr("end")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u-1).attr("end"))),n.eq(u).attr("end")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("end"))),!p.stop&&n.eq(u+1).attr("begin")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u+1).attr("begin"))),a){f="";for(var m in a)f+=m+":"+a[m]+";"}f&&(p.style=f),0===p.start&&(p.start=.2),p.text=n.eq(u).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),o.push(p)}return o}}}},{16:16,2:2,20:20,21:21,24:24,4:4,6:6}],13:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(19),d=e(21),u=e(20);Object.assign(a.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(r.default.prototype,{buildvolume:function(e,t,n,i){if(!l.IS_ANDROID&&!l.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,r=a.isVideo?a.options.videoVolume:a.options.audioVolume,c=(0,d.isString)(a.options.muteText)?a.options.muteText:s.default.t("mejs.mute"),f=(0,d.isString)(a.options.unmuteText)?a.options.unmuteText:s.default.t("mejs.unmute"),p=(0,d.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:s.default.t("mejs.volume-help-text"),m=o.default.createElement("div");if(m.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",m.innerHTML="horizontal"===r?'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+s.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(m,"volume"),"horizontal"===r){var h=o.default.createElement("a");h.className=a.options.classPrefix+"horizontal-volume-slider",h.href="javascript:void(0);",h.setAttribute("aria-label",s.default.t("mejs.volume-slider")),h.setAttribute("aria-valuemin",0),h.setAttribute("aria-valuemax",100),h.setAttribute("role","slider"),h.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',m.parentNode.insertBefore(h,m.nextSibling)}var v=!1,y=!1,g=function(){var e=Math.floor(100*i.volume);E.setAttribute("aria-valuenow",e),E.setAttribute("aria-valuetext",e+"%")},E="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-slider"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),b="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-total"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-total"),S="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-current"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-current"),x="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-handle"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),w=function(e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute");var t=m.firstElementChild;t.setAttribute("title",f),t.setAttribute("aria-label",f)}else{(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute");var n=m.firstElementChild;n.setAttribute("title",c),n.setAttribute("aria-label",c)}var i=100*e+"%",o=getComputedStyle(x);"vertical"===r?(S.style.bottom=0,S.style.height=i,x.style.bottom=i,x.style.marginBottom=-parseFloat(o.height)/2+"px"):(S.style.left=0,S.style.width=i,x.style.left=i,x.style.marginLeft=-parseFloat(o.width)/2+"px")},P=function(e){var t=(0,u.offset)(b),n=getComputedStyle(b),o=null;if("vertical"===r){var a=parseFloat(n.height);if(o=(a-(e.pageY-t.top))/a,0===t.top||0===t.left)return}else{var s=parseFloat(n.width);o=(e.pageX-t.left)/s}o=Math.max(0,o),o=Math.min(o,1),w(o),0===o?i.setMuted(!0):i.setMuted(!1),i.setVolume(o),e.preventDefault(),e.stopPropagation()};m.addEventListener("mouseenter",function(e){e.target===m&&(E.style.display="block",y=!0,e.preventDefault(),e.stopPropagation())}),m.addEventListener("focusin",function(){E.style.display="block",y=!0}),m.addEventListener("focusout",function(e){e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider")||"vertical"!==r||(E.style.display="none")}),m.addEventListener("mouseleave",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),m.addEventListener("focusout",function(){y=!1}),m.addEventListener("keydown",function(e){if(a.options.keyActions.length){var t=e.which||e.keyCode||0,n=i.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}v=!1,w(n),i.setVolume(n),e.preventDefault(),e.stopPropagation()}}),m.querySelector("button").addEventListener("click",function(){i.setMuted(!i.muted);var e=(0,d.createEvent)("volumechange",i);i.dispatchEvent(e)}),E.addEventListener("dragstart",function(){return!1}),E.addEventListener("mouseover",function(){y=!0}),E.addEventListener("focusin",function(){E.style.display="block",y=!0}),E.addEventListener("focusout",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),E.addEventListener("mousedown",function(e){P(e),a.globalBind("mousemove.vol",function(e){var t=e.target;v&&(t===E||t.closest("vertical"===r?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&P(e)}),a.globalBind("mouseup.vol",function(){v=!1,a.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==r||(E.style.display="none")}),v=!0,e.preventDefault(),e.stopPropagation()}),i.addEventListener("volumechange",function(e){v||(i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))),g()}),0===e.options.startVolume&&i.setMuted(!0),i.setVolume(e.options.startVolume),a.container.addEventListener("controlsresize",function(){i.muted?(w(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(w(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))})}}})},{16:16,19:19,2:2,20:20,21:21,4:4}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6));"undefined"!=typeof jQuery?a.default.$=o.default.jQuery=o.default.$=jQuery:"undefined"!=typeof Zepto?a.default.$=o.default.Zepto=o.default.$=Zepto:"undefined"!=typeof ender&&(a.default.$=o.default.ender=o.default.$=ender)},{3:3,6:6}],16:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=i(e(3)),l=i(e(2)),d=i(e(6)),u=i(e(5)),c=i(e(4)),f=e(19),p=e(21),m=e(24),h=e(22),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(20));d.default.mepIndex=0,d.default.players={};var y=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.duration},defaultSeekForwardInterval:function(e){return.05*e.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(e,t){f.IS_FIREFOX||(t.paused||t.ended?t.play():t.pause())}},{keys:[38],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.volume+.1,1);t.setVolume(n),n>0&&t.setMuted(!1)}},{keys:[40],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.volume-.1,0);t.setVolume(n),n<=.1&&t.setMuted(!0)}},{keys:[37,227],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.currentTime-e.options.defaultSeekBackwardInterval(t),0);t.setCurrentTime(n)}}},{keys:[39,228],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.currentTime+e.options.defaultSeekForwardInterval(t),t.duration);t.setCurrentTime(n)}}},{keys:[70],action:function(e,t,n,i){i.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}},{keys:[77],action:function(e){e.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}]};d.default.MepDefaults=y;var g=function(){function e(t,n){o(this,e);var i=this,a="string"==typeof t?l.default.getElementById(t):t;if(i.hasFocus=!1,i.controlsAreVisible=!0,i.controlsEnabled=!0,i.controlsTimer=null,!(i instanceof e))return new e(a,n);if(i.node=i.media=a,i.node){if(void 0!==i.media.player)return i.media.player;if(void 0===n){var r=i.node.getAttribute("data-mejsoptions");n=r?JSON.parse(r):{}}i.options=Object.assign({},y,n),i.options.timeFormat||(i.options.timeFormat="mm:ss",i.options.alwaysShowHours&&(i.options.timeFormat="hh:mm:ss"),i.options.showTimecodeFrameCount&&(i.options.timeFormat+=":ff")),(0,m.calculateTimeFormat)(0,i.options,i.options.framesPerSecond||25),i.id="mep_"+d.default.mepIndex++,d.default.players[i.id]=i;var s=Object.assign({},i.options,{success:function(e,t){i._meReady(e,t)},error:function(e){i._handleError(e)}}),g=i.node.tagName.toLowerCase();if(i.isDynamic="audio"!==g&&"video"!==g,i.isVideo=i.isDynamic?i.options.isVideo:"audio"!==g&&i.options.isVideo,i.mediaFiles=null,i.trackFiles=null,f.IS_IPAD&&i.options.iPadUseNativeControls||f.IS_IPHONE&&i.options.iPhoneUseNativeControls)i.node.setAttribute("controls",!0),f.IS_IPAD&&i.node.getAttribute("autoplay")&&i.play();else if(!(i.isVideo||!i.isVideo&&i.options.features.length)||f.IS_ANDROID&&i.options.AndroidUseNativeControls)i.isVideo||i.options.features.length||(i.node.style.display="none");else{i.node.removeAttribute("controls");var E=i.isVideo?c.default.t("mejs.video-player"):c.default.t("mejs.audio-player"),b=l.default.createElement("span");if(b.className=i.options.classPrefix+"offscreen",b.innerText=E,i.media.parentNode.insertBefore(b,i.media),i.container=l.default.createElement("div"),i.container.id=i.id,i.container.className=i.options.classPrefix+"container "+i.options.classPrefix+"container-keyboard-inactive "+i.media.className,i.container.tabIndex=0,i.container.setAttribute("role","application"),i.container.setAttribute("aria-label",E),i.container.innerHTML='<div class="'+i.options.classPrefix+'inner"><div class="'+i.options.classPrefix+'mediaelement"></div><div class="'+i.options.classPrefix+'layers"></div><div class="'+i.options.classPrefix+'controls"></div><div class="'+i.options.classPrefix+'clear"></div></div>',i.container.addEventListener("focus",function(e){if(!i.controlsAreVisible&&!i.hasFocus&&i.controlsEnabled){i.showControls(!0);var t=(0,p.isNodeAfter)(e.relatedTarget,i.container)?"."+i.options.classPrefix+"controls ."+i.options.classPrefix+"button:last-child > button":"."+i.options.classPrefix+"playpause-button > button";i.container.querySelector(t).focus()}}),i.node.parentNode.insertBefore(i.container,i.node),i.options.features.length||(i.container.style.background="transparent",i.container.querySelector("."+i.options.classPrefix+"controls").style.display="none"),i.isVideo&&"fill"===i.options.stretching&&!v.hasClass(i.container.parentNode,i.options.classPrefix+"fill-container")){i.outerContainer=i.media.parentNode;var S=l.default.createElement("div");S.className=i.options.classPrefix+"fill-container",i.container.parentNode.insertBefore(S,i.container),S.appendChild(i.container)}if(f.IS_ANDROID&&v.addClass(i.container,i.options.classPrefix+"android"),f.IS_IOS&&v.addClass(i.container,i.options.classPrefix+"ios"),f.IS_IPAD&&v.addClass(i.container,i.options.classPrefix+"ipad"),f.IS_IPHONE&&v.addClass(i.container,i.options.classPrefix+"iphone"),v.addClass(i.container,i.isVideo?i.options.classPrefix+"video":i.options.classPrefix+"audio"),f.IS_SAFARI&&!f.IS_IOS){v.addClass(i.container,i.options.classPrefix+"hide-cues");for(var x=i.node.cloneNode(),w=i.node.childNodes,P=[],T=[],C=0,k=w.length;C<k;C++){var N=w[C];N&&N.nodeType!==Node.TEXT_NODE&&function(){switch(N.tagName.toLowerCase()){case"source":var e={};Array.prototype.slice.call(N.attributes).forEach(function(t){e[t.name]=t.value}),e.type=(0,h.formatType)(e.src,e.type),P.push(e);break;case"track":N.mode="hidden",T.push(N);break;default:x.appendChild(N)}}()}i.node.remove(),i.node=i.media=x,P.length&&(i.mediaFiles=P),T.length&&(i.trackFiles=T)}i.container.querySelector("."+i.options.classPrefix+"mediaelement").appendChild(i.node),i.media.player=i,i.controls=i.container.querySelector("."+i.options.classPrefix+"controls"),i.layers=i.container.querySelector("."+i.options.classPrefix+"layers");var A=i.isVideo?"video":"audio",_=A.substring(0,1).toUpperCase()+A.substring(1);i.options[A+"Width"]>0||i.options[A+"Width"].toString().indexOf("%")>-1?i.width=i.options[A+"Width"]:""!==i.node.style.width&&null!==i.node.style.width?i.width=i.node.style.width:i.node.getAttribute("width")?i.width=i.node.getAttribute("width"):i.width=i.options["default"+_+"Width"],i.options[A+"Height"]>0||i.options[A+"Height"].toString().indexOf("%")>-1?i.height=i.options[A+"Height"]:""!==i.node.style.height&&null!==i.node.style.height?i.height=i.node.style.height:i.node.getAttribute("height")?i.height=i.node.getAttribute("height"):i.height=i.options["default"+_+"Height"],i.initialAspectRatio=i.height>=i.width?i.width/i.height:i.height/i.width,i.setPlayerSize(i.width,i.height),s.pluginWidth=i.width,s.pluginHeight=i.height}if(new u.default(i.media,s,i.mediaFiles),void 0!==i.container&&i.options.features.length&&i.controlsAreVisible&&!i.options.hideVideoControlsOnLoad){var F=(0,p.createEvent)("controlsshown",i.container);i.container.dispatchEvent(F)}return i}}return r(e,[{key:"showControls",value:function(e){var t=this;if(e=void 0===e||e,!t.controlsAreVisible&&t.isVideo){if(e)!function(){v.removeClass(t.controls,t.options.classPrefix+"offscreen"),v.fadeIn(t.controls,200,function(){var e=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(e)});for(var e=t.container.querySelectorAll("."+t.options.classPrefix+"control"),n=0,i=e.length;n<i;n++)!function(n,i){v.fadeIn(e[n],200,function(){v.removeClass(e[n],t.options.classPrefix+"offscreen")})}(n)}();else{v.removeClass(t.controls,t.options.classPrefix+"offscreen"),t.controls.style.display="",t.controls.style.opacity=1;for(var n=t.container.querySelectorAll("."+t.options.classPrefix+"control"),i=0,o=n.length;i<o;i++)v.removeClass(n[i],t.options.classPrefix+"offscreen"),n[i].style.display="";var a=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(a)}t.controlsAreVisible=!0,t.setControlsSize()}}},{key:"hideControls",value:function(e,t){var n=this;if(e=void 0===e||e,!0===t||!(!n.controlsAreVisible||n.options.alwaysShowControls||n.keyboardAction||n.media.paused&&4===n.media.readyState&&(!n.options.hideVideoControlsOnLoad&&n.media.currentTime<=0||!n.options.hideVideoControlsOnPause&&n.media.currentTime>0)||n.isVideo&&!n.options.hideVideoControlsOnLoad&&!n.media.readyState||n.media.ended)){if(e)!function(){v.fadeOut(n.controls,200,function(){v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="";var e=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(e)});for(var e=n.container.querySelectorAll("."+n.options.classPrefix+"control"),t=0,i=e.length;t<i;t++)!function(t,i){v.fadeOut(e[t],200,function(){v.addClass(e[t],n.options.classPrefix+"offscreen"),e[t].style.display=""})}(t)}();else{v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="",n.controls.style.opacity=0;for(var i=n.container.querySelectorAll("."+n.options.classPrefix+"control"),o=0,a=i.length;o<a;o++)v.addClass(i[o],n.options.classPrefix+"offscreen"),i[o].style.display="";var r=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(r)}n.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){var e=this;null!==e.controlsTimer&&(clearTimeout(e.controlsTimer),delete e.controlsTimer,e.controlsTimer=null)}},{key:"disableControls",value:function(){var e=this;e.killControlsTimer(),e.controlsEnabled=!0,e.hideControls(!1,!0)}},{key:"enableControls",value:function(){var e=this;e.controlsEnabled=!0,e.showControls(!1)}},{key:"_meReady",value:function(e,t){var n=this,i=t.getAttribute("autoplay"),o=!(void 0===i||null===i||"false"===i),a=null!==e.rendererName&&/(native|html5)/i.test(n.media.rendererName);if(n.controls&&n.enableControls(),n.container&&n.container.querySelector("."+n.options.classPrefix+"overlay-play")&&(n.container.querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(f.IS_ANDROID&&n.options.AndroidUseNativeControls||f.IS_IPAD&&n.options.iPadUseNativeControls||f.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length)return o&&a&&n.play(),void(n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));n.buildposter(n,n.controls,n.layers,n.media),n.buildkeyboard(n,n.controls,n.layers,n.media),n.buildoverlays(n,n.controls,n.layers,n.media),n.findTracks(),n.featurePosition={};for(var r=0,u=n.options.features.length;r<u;r++){var c=n.options.features[r];if(n["build"+c])try{n["build"+c](n,n.controls,n.layers,n.media)}catch(e){console.error("error building "+c,e)}}var h=(0,p.createEvent)("controlsready",n.container);n.container.dispatchEvent(h),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.media.paused&&t?n.pause():n.media.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t)}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!f.IS_ANDROID&&!f.IS_IOS||n.options.alwaysShowControls?(n.container.addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.container.addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.container.addEventListener("mouseleave",function(){n.controlsEnabled&&(n.media.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),o&&!n.options.alwaysShowControls&&n.hideControls(),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&null!==e.target&&!isNaN(e.target.videoHeight)&&(n.setPlayerSize(e.target.videoWidth,e.target.videoHeight),n.setControlsSize(),n.media.setSize(e.target.videoWidth,e.target.videoHeight))})),n.media.addEventListener("play",function(){n.hasFocus=!0;for(var e in d.default.players)if(d.default.players.hasOwnProperty(e)){var t=d.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||(t.pause(),t.hasFocus=!1)}}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.media.setCurrentTime(0),setTimeout(function(){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.stop?n.media.stop():n.media.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,m.calculateTimeFormat)(n.duration,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var y=null;n.media.addEventListener("timeupdate",function(){y!==n.media.duration&&(y=n.media.duration,(0,m.calculateTimeFormat)(y,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.container.addEventListener("click",function(e){v.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.container.addEventListener("focusin",function(e){v.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),n.controlsEnabled&&!n.options.alwaysShowControls&&n.showControls(!1)}),n.container.addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,n.isVideo&&!n.options.alwaysShowControls&&n.hideControls(!0))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalBind("resize",function(){n.isFullScreen||f.HAS_TRUE_NATIVE_FULLSCREEN&&l.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()})}o&&a&&n.play(),n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e){var t=this;t.controls&&t.disableControls();var n=t.layers.querySelector("."+t.options.classPrefix+"overlay-play");n&&(n.style.display="none"),t.options.error&&t.options.error(e)}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var e=this,t=function(){for(var t=void 0,n=e.container;n;){try{if(f.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&s.default.self!==s.default.top&&null!==s.default.frameElement)return s.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&v.visible(t))return t;n=t}return null}(),n=t?getComputedStyle(t,null):getComputedStyle(l.default.body,null),i=function(){return e.isVideo?e.media.videoWidth&&e.media.videoWidth>0?e.media.videoWidth:e.node.getAttribute("width")?e.node.getAttribute("width"):e.options.defaultVideoWidth:e.options.defaultAudioWidth}(),o=function(){return e.isVideo?e.media.videoHeight&&e.media.videoHeight>0?e.media.videoHeight:e.node.getAttribute("height")?e.node.getAttribute("height"):e.options.defaultVideoHeight:e.options.defaultAudioHeight}(),a=function(){var t=1;return e.isVideo?(t=e.media.videoWidth&&e.media.videoWidth>0&&e.media.videoHeight&&e.media.videoHeight>0?e.height>=e.width?e.media.videoWidth/e.media.videoHeight:e.media.videoHeight/e.media.videoWidth:e.initialAspectRatio,(isNaN(t)||t<.01||t>100)&&(t=1),t):t}(),r=parseFloat(n.height),d=void 0,u=parseFloat(n.width);if(d=e.isVideo?"100%"===e.height?parseFloat(u*o/i,10):e.height>=e.width?parseFloat(u/a,10):parseFloat(u*a,10):o,isNaN(d)&&(d=r),e.container.parentNode.length>0&&"body"===e.container.parentNode.tagName.toLowerCase()&&(u=s.default.innerWidth||l.default.documentElement.clientWidth||l.default.body.clientWidth,d=s.default.innerHeight||l.default.documentElement.clientHeight||l.default.body.clientHeight),d&&u){e.container.style.width=u+"px",e.container.style.height=d+"px",e.node.style.width="100%",e.node.style.height="100%",e.isVideo&&e.media.setSize&&e.media.setSize(u,d);for(var c=e.layers.childNodes,p=0,m=c.length;p<m;p++)c[p].style.width="100%",c[p].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=void 0,n=!1;try{s.default.self!==s.default.top?(n=!0,t=s.default.frameElement):t=e.outerContainer}catch(n){t=e.outerContainer}var i=getComputedStyle(t);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),n||parseFloat(i.width)||(t.style.width=e.media.offsetWidth+"px"),n||parseFloat(i.height)||(t.style.height=e.media.offsetHeight+"px"),i=getComputedStyle(t);var o=parseFloat(i.width),a=parseFloat(i.height);e.setDimensions("100%","100%");var r=e.container.querySelector(e.options.classPrefix+"poster img");r&&(r.style.display="");for(var l=e.container.querySelectorAll("object, embed, iframe, video"),d=e.height,u=e.width,c=o,f=d*o/u,p=u*a/d,m=a,h=p>o==!1,v=h?Math.floor(c):Math.floor(p),y=h?Math.floor(f):Math.floor(m),g=h?o+"px":v+"px",E=h?y+"px":a+"px",b=0,S=l.length;b<S;b++)l[b].style.height=E,l[b].style.width=g,e.media.setSize&&e.media.setSize(g,E),l[b].style.marginLeft=Math.floor((o-v)/2)+"px",l[b].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,p.isString)(e)&&e.indexOf("%")>-1?e:parseFloat(e)+"px",t=(0,p.isString)(t)&&t.indexOf("%")>-1?t:parseFloat(t)+"px",n.container.style.width=e,n.container.style.height=t;for(var i=n.layers.childNodes,o=0,a=i.length;o<a;o++)i[o].style.width=e,i[o].style.height=t}},{key:"setControlsSize",value:function(){var e=this;if(v.visible(e.container)&&e.rail&&v.visible(e.rail)){for(var t=getComputedStyle(e.rail),n=getComputedStyle(e.total),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),o=parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=0,r=v.siblings(e.rail,function(t){return t!==e.rail}),s=r.length,l=0;l<s;l++)a+=r[l].offsetWidth;a+=o+(0===o?2*i:i)+1;var d=parseFloat(e.controls.offsetWidth);e.rail.style.width=(a>d?0:d-a)+"px";var u=(0,p.createEvent)("controlsresize",e.container);e.container.dispatchEvent(u)}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var i=n.controls.childNodes[n.featurePosition[t]-1];i.parentNode.insertBefore(e,i.nextSibling)}else{n.controls.appendChild(e);for(var o=n.controls.childNodes,a=0,r=o.length;a<r;a++)if(e==o[a]){n.featurePosition[t]=a;break}}}},{key:"createIframeLayer",value:function(){var e=this;if(e.isVideo&&null!==e.media.rendererName&&e.media.rendererName.indexOf("iframe")>-1&&!l.default.getElementById(e.media.id+"-iframe-overlay")){var t=l.default.createElement("div"),n=l.default.getElementById(e.media.id+"_"+e.media.rendererName);t.id=e.media.id+"-iframe-overlay",t.className=e.options.classPrefix+"iframe-overlay",t.addEventListener("click",function(t){e.options.clickToPlayPause&&(e.media.paused?e.media.play():e.media.pause(),t.preventDefault(),t.stopPropagation())}),n.parentNode.insertBefore(t,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this,n=t.container.querySelector("."+t.options.classPrefix+"poster"),i=n.querySelector("img");i||((i=l.default.createElement("img")).className=t.options.classPrefix+"poster-img",i.width="100%",i.height="100%",n.appendChild(i)),i.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")'}},{key:"changeSkin",value:function(e){var t=this;t.container.className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.addEventListener(n,t,!1),n},"");if(e.w)for(var d=e.w.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.addEventListener(n,t,!1),n},"")}},{key:"globalUnbind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.removeEventListener(n,t,!1),n},"");if(e.w)for(var d=e.d.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.removeEventListener(n,t,!1),n},"")}},{key:"buildposter",value:function(e,t,n,i){var o=this,a=l.default.createElement("div");a.className=o.options.classPrefix+"poster "+o.options.classPrefix+"layer",n.appendChild(a);var r=e.media.getAttribute("poster");""!==e.options.poster&&(r=e.options.poster),r?o.setPoster(r):a.style.display="none",i.addEventListener("play",function(){a.style.display="none"}),i.addEventListener("playing",function(){a.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&i.addEventListener("ended",function(){a.style.display=""}),i.addEventListener("error",function(){a.style.display="none"}),e.options.showPosterWhenPaused&&i.addEventListener("pause",function(){i.ended||(a.style.display="")})}},{key:"buildoverlays",value:function(e,t,n,i){if(e.isVideo){var o=this,a=l.default.createElement("div"),r=l.default.createElement("div"),s=l.default.createElement("div"),d=t.querySelector("."+o.options.classPrefix+"time-buffering");a.style.display="none",a.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",a.innerHTML='<div class="'+o.options.classPrefix+'overlay-loading"><span class="'+o.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(a),r.style.display="none",r.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",r.innerHTML='<div class="'+o.options.classPrefix+'overlay-error"></div>',n.appendChild(r),s.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer "+o.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+o.options.classPrefix+'overlay-button" role="button" tabindex="0"aria-label="'+c.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(o.options.clickToPlayPause){var e=o.container.querySelector("."+o.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t)}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||f.IS_FIREFOX&&32===t){var n=(0,p.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==o.media.rendererName&&(/(youtube|facebook)/i.test(o.media.rendererName)&&!e.media.originalNode.getAttribute("poster")&&!e.options.poster||f.IS_STOCK_ANDROID)&&(s.style.display="none"),i.addEventListener("play",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("playing",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("seeking",function(){s.style.display="none",a.style.display="",d&&(d.style.display="")}),i.addEventListener("seeked",function(){s.style.display=i.paused&&!f.IS_STOCK_ANDROID?"":"none",a.style.display="none",d&&(d.style.display="")}),i.addEventListener("pause",function(){a.style.display="none",f.IS_STOCK_ANDROID||(s.style.display=""),d&&(d.style.display="none")}),i.addEventListener("waiting",function(){a.style.display="",d&&(d.style.display="")}),i.addEventListener("loadeddata",function(){a.style.display="",d&&(d.style.display=""),f.IS_ANDROID&&(i.canplayTimeout=setTimeout(function(){if(l.default.createEvent){var e=l.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),i.dispatchEvent(e)}},300))}),i.addEventListener("canplay",function(){a.style.display="none",d&&(d.style.display="none"),clearTimeout(i.canplayTimeout)}),i.addEventListener("error",function(e){o._handleError(e),a.style.display="none",s.style.display="none",d&&(d.style.display="none"),e.message&&(r.style.display="block",r.querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=e.message)}),i.addEventListener("keydown",function(t){o.onkeydown(e,i,t)})}}},{key:"buildkeyboard",value:function(e,t,n,i){var o=this;o.container.addEventListener("keydown",function(){o.keyboardAction=!0}),o.globalBind("keydown",function(t){var n=l.default.activeElement.closest("."+o.options.classPrefix+"container"),a=o.media.closest("."+o.options.classPrefix+"container");return o.hasFocus=!(!n||!a||n.id!==a.id),o.onkeydown(e,i,t)}),o.globalBind("click",function(e){o.hasFocus=!!e.target.closest("."+o.options.classPrefix+"container")})}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var i=0,o=e.options.keyActions.length;i<o;i++)for(var a=e.options.keyActions[i],r=0,s=a.keys.length;r<s;r++)n.keyCode===a.keys[r]&&(a.action(e,t,n.keyCode,n),n.preventDefault(),n.stopPropagation());return!0}},{key:"play",value:function(){var e=this;e.media.getCurrentTime()<=0&&e.load(),e.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(e){}}},{key:"load",value:function(){var e=this;e.isLoaded||e.media.load(),e.isLoaded=!0}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(e){var t=this,n=l.default.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer()}},{key:"remove",value:function(){var e=this,t=e.media.rendererName;e.media.paused||e.media.pause();var n=e.media.getSrc();e.media.setSrc("");for(var i in e.options.features){var o=e.options.features[i];if(e["clean"+o])try{e["clean"+o](e)}catch(e){console.error("error cleaning "+o,e)}}var r=e.node.getAttribute("width"),s=e.node.getAttribute("height");r?-1===r.indexOf("%")&&(r+="px"):r="auto",s?-1===s.indexOf("%")&&(s+="px"):s="auto",e.node.style.width=r,e.node.style.height=s,e.isDynamic?e.container.parentNode.insertBefore(e.node,e.container):function(){e.node.setAttribute("controls",!0),e.node.setAttribute("id",e.node.getAttribute("id").replace("_"+t,"").replace("_from_mejs","")),delete e.node.autoplay,""!==e.media.canPlayType((0,h.getTypeFromFile)(n))&&e.node.setAttribute("src",n),~t.indexOf("iframe")&&l.default.getElementById(e.media.id+"-iframe-overlay").remove();var i=e.node.cloneNode();if(i.style.display="",e.container.parentNode.insertBefore(i,e.container),e.node.remove(),e.mediaFiles)for(var o=0,a=e.mediaFiles.length;o<a;o++){var r=l.default.createElement("source");r.setAttribute("src",e.mediaFiles[o].src),r.setAttribute("type",e.mediaFiles[o].type),i.appendChild(r)}if(e.trackFiles)for(var s=0,d=e.trackFiles.length;s<d;s++)!function(t,n){var o=e.trackFiles[t],a=l.default.createElement("track");a.kind=o.kind,a.label=o.label,a.srclang=o.srclang,a.src=o.src,i.appendChild(a),a.addEventListener("load",function(){this.mode="showing",i.textTracks[t].mode="showing"})}(s);delete e.node,delete e.mediaFiles,delete e.trackFiles}(),"function"==typeof e.media.destroy&&e.media.destroy(),delete d.default.players[e.id],"object"===a(e.container)&&(e.container.parentNode.querySelector("."+e.options.classPrefix+"offscreen").remove(),e.container.remove()),e.globalUnbind(),delete e.media.player}}]),e}();s.default.MediaElementPlayer=g,n.default=g,function(e){void 0!==e&&(e.fn.mediaelementplayer=function(t){return!1===t?this.each(function(){var t=e(this).data("mediaelementplayer");t&&t.remove(),e(this).removeData("mediaelementplayer")}):this.each(function(){e(this).data("mediaelementplayer",new g(this,t))}),this},e(l.default).ready(function(){e("."+y.classPrefix+"player").mediaelementplayer()}))}(d.default.$)},{19:19,2:2,20:20,21:21,22:22,24:24,3:3,4:4,5:5,6:6}],17:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=i(e(4)),d=e(7),u=e(21),c=e(19),f=e(22),p=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=p.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,i,o){p.plugins[e]=p.detectPlugin(t,n,i,o)},detectPlugin:function(e,t,n,i){var r=[0,0,0],s=void 0,l=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===o(c.NAV.plugins[e])){if((s=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(r=s.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)r[d]=parseInt(r[d].match(/\d+/),10)}else if(void 0!==a.default.ActiveXObject)try{(l=new ActiveXObject(n))&&(r=i(l))}catch(e){}return r}};p.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var m={create:function(e,t,n){var i={};i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var o=s.default.html5media.properties,p=0,m=o.length;p<m;p++)!function(e){i.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);i["get"+t]=function(){if(null!==i.flashApi){if(void 0!==i.flashApi["get_"+e]){var t=i.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},i["set"+t]=function(t){"src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==i.flashApi&&void 0!==i.flashApi["set_"+e]?i.flashApi["set_"+e](t):i.flashApiStack.push({type:"set",propName:e,value:t})}}(o[p]);var h=s.default.html5media.methods;h.push("stop");for(var v=0,y=h.length;v<y;v++)!function(e){i[e]=function(){if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var g=["rendererready"],E=0,b=g.length;E<b;E++){var S=(0,u.createEvent)(g[E],i);e.dispatchEvent(S)}a.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=r.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var o=n.propName,a=""+o.substring(0,1).toUpperCase()+o.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},a.default["__event__"+i.id]=function(e,t){var n=(0,u.createEvent)(e,i);n.message=t||"",i.mediaElement.dispatchEvent(n)},i.flashWrapper=r.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var x=e.originalNode.autoplay,w=["uid="+i.id,"autoplay="+x,"allowScriptAccess="+i.options.shimScriptAccess],P=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),T=P?e.originalNode.height:1,C=P?e.originalNode.width:1;e.originalNode.getAttribute("src")&&w.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(w.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),w.push("pseudostreamtype="+i.options.pseudoStreamingType)),e.appendChild(i.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var k=[];if(c.IS_IE){var N=r.default.createElement("div");i.flashWrapper.appendChild(N),k=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),N.outerHTML="<object "+k.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+w.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+l.default.t("mejs.install-flash")+"</div></object>"}else k=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+w.join("&")+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),i.flashWrapper.innerHTML="<embed "+k.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){P&&(i.flashNode.style.display="none")},i.show=function(){P&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&n.length>0)for(var A=0,_=n.length;A<_;A++)if(d.renderer.renderers[t.prefix].canPlayType(n[A].type)){i.setSrc(n[A].src);break}return i}};if(p.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(v);var y={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(y);var g={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(g);var E={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(E)}},{19:19,2:2,21:21,22:22,3:3,4:4,6:6,7:7}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=e(7),l=e(21),d=e(19),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=a.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var i=e.id+"_"+t.prefix,o=null;void 0===e.originalNode||null===e.originalNode?(o=a.default.createElement("audio"),e.appendChild(o)):o=e.originalNode,o.setAttribute("id",i);for(var d=r.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);o["get"+t]=function(){return o[e]},o["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&(o[e]=t)}}(d[u]);for(var f=r.default.html5media.events.concat(["click","mouseover","mouseout"]),p=0,m=f.length;p<m;p++)!function(t){o.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[p]);if(o.setSize=function(e,t){return o.style.width=e+"px",o.style.height=t+"px",o},o.hide=function(){return o.style.display="none",o},o.show=function(){return o.style.display="",o},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(s.renderer.renderers[t.prefix].canPlayType(n[h].type)){o.setAttribute("src",n[h].src);break}var y=(0,l.createEvent)("rendererready",o);return e.dispatchEvent(y),o}};o.default.HtmlMediaElement=r.default.HtmlMediaElement=u,s.renderer.add(u)},{19:19,2:2,21:21,3:3,6:6,7:7}],19:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=n.NAV=o.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l),u=n.IS_IPHONE=/iphone/i.test(l),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(l)),f=n.IS_IE=/(trident|microsoft)/i.test(s.appName),p=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in a.default)),m=n.IS_CHROME=/chrome/i.test(l),h=n.IS_FIREFOX=/firefox/i.test(l),v=n.IS_SAFARI=/safari/i.test(l)&&!m,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),g=(n.HAS_MSE="MediaSource"in o.default),E=(n.SUPPORT_POINTER_EVENTS=function(){var e=a.default.createElement("x"),t=a.default.documentElement,n=o.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var i=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!i}()),b=["source","track","audio","video"],S=void 0,x=0,w=b.length;x<w;x++)S=a.default.createElement(b[x]);var P=n.SUPPORTS_NATIVE_HLS=v||c&&(m||y)||f&&/edge/i.test(l),T=void 0!==S.webkitEnterFullscreen,C=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(l)&&(C=!1,T=!1);var k=void 0!==S.webkitRequestFullScreen,N=void 0!==S.mozRequestFullScreen,A=void 0!==S.msRequestFullscreen,_=k||N||A,F=_,L="",j=void 0,M=void 0,I=void 0;N?F=a.default.mozFullScreenEnabled:A&&(F=a.default.msFullscreenEnabled),m&&(T=!1),_&&(k?L="webkitfullscreenchange":N?L="mozfullscreenchange":A&&(L="MSFullscreenChange"),n.isFullScreen=j=function(){return N?a.default.mozFullScreen:k?a.default.webkitIsFullScreen:A?null!==a.default.msFullscreenElement:void 0},n.requestFullScreen=M=function(e){k?e.webkitRequestFullScreen():N?e.mozRequestFullScreen():A&&e.msRequestFullscreen()},n.cancelFullScreen=I=function(){k?a.default.webkitCancelFullScreen():N?a.default.mozCancelFullScreen():A&&a.default.msExitFullscreen()});var O=n.HAS_NATIVE_FULLSCREEN=C,H=n.HAS_WEBKIT_NATIVE_FULLSCREEN=k,q=n.HAS_MOZ_NATIVE_FULLSCREEN=N,R=n.HAS_MS_NATIVE_FULLSCREEN=A,U=n.HAS_IOS_FULLSCREEN=T,D=n.HAS_TRUE_NATIVE_FULLSCREEN=_,V=n.HAS_NATIVE_FULLSCREEN_ENABLED=F,B=n.FULLSCREEN_EVENT_NAME=L;n.isFullScreen=j,n.requestFullScreen=M,n.cancelFullScreen=I,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=c,r.default.Features.isIE=f,r.default.Features.isEdge=p,r.default.Features.isChrome=m,r.default.Features.isFirefox=h,r.default.Features.isSafari=v,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=g,r.default.Features.supportsNativeHLS=P,r.default.Features.supportsPointerEvents=E,r.default.Features.hasiOSFullScreen=U,r.default.Features.hasNativeFullscreen=O,r.default.Features.hasWebkitNativeFullScreen=H,r.default.Features.hasMozNativeFullScreen=q,r.default.Features.hasMsNativeFullScreen=R,r.default.Features.hasTrueNativeFullScreen=D,r.default.Features.nativeFullScreenEnabled=V,r.default.Features.fullScreenEventName=B,r.default.Features.isFullScreen=j,r.default.Features.requestFullScreen=M,r.default.Features.cancelFullScreen=I},{2:2,3:3,6:6}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){for(o=e;a=n.shift();)a[i]&&a[i](o)}var n=[],i=-1,o=void 0,a=void 0;return e(function(e){return t(e,i=0)},function(e){return t(e,i=1)}),{then:function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];~i?t[i]&&t[i](o):n.push(t)}}}function a(e){return o(function(t,n){var i=m.default.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},m.default.head.appendChild(i)})}function r(e){var t=e.getBoundingClientRect(),n=p.default.pageXOffset||m.default.documentElement.scrollLeft,i=p.default.pageYOffset||m.default.documentElement.scrollTop;return{top:t.top+i,left:t.left+n}}function s(e,t){E(e,t)?S(e,t):b(e,t)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(1-r/t,2);e.style.opacity=s<0?0:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(r/t,2);e.style.opacity=s>1?1:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,i){var o=p.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),a="application/x-www-form-urlencoded; charset=UTF-8",r=!1,s="*/".concat("*");switch(t){case"text":a="text/plain";break;case"json":a="application/json, text/javascript";break;case"html":a="text/html";break;case"xml":a="application/xml, text/xml"}"application/x-www-form-urlencoded"!==a&&(s=a+", */*; q=0.01"),o&&(o.open("GET",e,!0),o.setRequestHeader("Accept",s),o.onreadystatechange=function(){if(!r&&4===o.readyState)if(200===o.status){r=!0;var e=void 0;switch(t){case"json":e=JSON.parse(o.responseText);break;case"xml":e=o.responseXML;break;default:e=o.responseText}n(e)}else"function"==typeof i&&i(o.status)},o.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=r,n.toggleClass=s,n.fadeOut=l,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var p=i(e(3)),m=i(e(2)),h=i(e(6)),v=void 0,y=void 0,g=void 0;"classList"in m.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},y=function(e,t){return e.classList.add(t)},g=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},y=function(e,t){E(e,t)||(e.className+=" "+t)},g=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var E=n.hasClass=v,b=n.addClass=y,S=n.removeClass=g;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=r,h.default.Utils.hasClass=E,h.default.Utils.addClass=b,h.default.Utils.removeClass=S,h.default.Utils.toggleClass=s,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=l,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=a},{2:2,3:3,6:6}],21:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return e.replace(/[&<>"]/g,function(e){return t[e]})}function o(e,t){var n=this,i=arguments,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var a=void 0;return function(){var r=n,s=i,l=function(){a=null,o||e.apply(r,s)},d=o&&!a;clearTimeout(a),a=setTimeout(l,t),d&&e.apply(r,s)}}function a(e){return Object.getOwnPropertyNames(e).length<=0}function r(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var o=e+(t?"."+t:"");o.startsWith(".")?(i.d.push(o),i.w.push(o)):i[n.test(e)?"w":"d"].push(o)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function s(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),i={target:t};return null!==n&&(e=n[1],i.namespace=n[2]),new window.CustomEvent(e,{detail:i})}function l(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=i,n.debounce=o,n.isObjectEmpty=a,n.splitEvents=r,n.createEvent=s,n.isNodeAfter=l,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=i,u.default.Utils.debounce=o,u.default.Utils.isObjectEmpty=a,u.default.Utils.splitEvents=r,u.default.Utils.createEvent=s,u.default.Utils.isNodeAfter=l,u.default.Utils.isString=d},{6:6}],22:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?r(e):a(t)}function a(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var i=c[t](e);if(i)return i}var o=l(s(e)),a="video/mp4";return o&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(o)?a="video/"+o:~["mp3","oga","wav","mid","midi"].indexOf(o)&&(a="audio/"+o)),a}function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function l(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=i,n.formatType=o,n.getMimeFromType=a,n.getTypeFromFile=r,n.getExtension=s,n.normalizeExtension=l;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(21),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=i,d.default.Utils.formatType=o,d.default.Utils.getMimeFromType=a,d.default.Utils.getTypeFromFile=r,d.default.Utils.getExtension=s,d.default.Utils.normalizeExtension=l},{21:21,6:6}],23:[function(e,t,n){"use strict";var i=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,i=arguments.length;n<i;n++){var o=arguments[n];if(null!==o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,i=this;do{for(n=t.length;--n>=0&&t.item(n)!==i;);}while(n<0&&(i=i.parentElement));return i}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+i)},i);return e=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}],24:[function(e,t,n){"use strict";function i(){return!((arguments.length>0&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;e=!e||"number"!=typeof e||e<0?0:e;var r=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=i(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(i(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*r*Math.floor(h/d),v>r&&(h+=r*Math.floor((v-r)/Math.round(60*s-r)));var y=Math.floor(h/s);c=Math.floor(Math.floor(y/60)/60),f=Math.floor(y/60)%60,p=n?y%60:(h/s%60).toFixed(a)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):(e%60).toFixed(a);c=c<=0?0:c,f=f<=0?0:f,p=p<=0?0:p;var g=t||c>0?(c<10?"0"+c:c)+":":"";return g+=(f<10?"0"+f:f)+":",g+=""+(p<10?"0"+p:p),n&&(g+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10?u+"0"+m:""+u+m),g}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(e.indexOf(";")>0&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,a=0,r=0,s=0,l=0,d=0,u=Math.round(.066666*t),c=Math.round(t),f=3600*c,p=60*c;switch(n.length){default:case 1:s=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),s=parseInt(n[1],10);break;case 3:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10);break;case 4:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10),l=parseInt(n[3],10)}return o=i(t)?f*a+p*r+c*s+l-u*((d=60*a+r)-Math.floor(d/10)):(f*a+p*r+t*s+l)/t,parseFloat(o.toFixed(3))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var i=Math.floor(e/3600)%24,o=Math.floor(e/60)%60,a=Math.floor(e%60),r=[[Math.floor((e%1*n).toFixed(3)),"f"],[a,"s"],[o,"m"],[i,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=r.length;p<m;p++)if(~s.indexOf(r[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(r[v][0]>0){h=!0;break}if(!h)break;l||(s=c+s),s=r[p][1]+u+s,l&&(s=r[p][1]+s),c=r[p][1]}t.currentTimeFormat=s}function s(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,i=1,o=0,a=(e=e.split(":").reverse()).length;o<a;o++)i=1,o>0&&(i=Math.pow(60,o)),n+=Number(e[o])*i;return Number(n.toFixed(t))}Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=i,n.secondsToTimeCode=o,n.timeCodeToSeconds=a,n.calculateTimeFormat=r,n.convertSMPTEtoSeconds=s;var l=function(e){return e&&e.__esModule?e:{default:e}}(e(6));l.default.Utils=l.default.Utils||{},l.default.Utils.secondsToTimeCode=o,l.default.Utils.timeCodeToSeconds=a,l.default.Utils.calculateTimeFormat=r,l.default.Utils.convertSMPTEtoSeconds=s},{6:6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]);
\ No newline at end of file
diff --git a/lib/mejs/renderers/dailymotion.js b/lib/mejs/renderers/dailymotion.js
index 33cba9cfdc9d0641203ecf4ee3b90cd5a14d8f65..2ce6620d758b3c71ef5c3d8644fba10001f36be0 100644
--- a/lib/mejs/renderers/dailymotion.js
+++ b/lib/mejs/renderers/dailymotion.js
@@ -11,33 +11,13 @@
  */(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})({1:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * DailyMotion renderer
- *
- * Uses <iframe> approach and uses DailyMotion API to manipulate it.
- * @see https://developer.dailymotion.com/player
- *
- */
-
 var DailyMotionApi = {
-	/**
-  * @type {Boolean}
-  */
 	isSDKStarted: false,
-	/**
-  * @type {Boolean}
-  */
+
 	isSDKLoaded: false,
-	/**
-  * @type {Array}
-  */
+
 	iframeQueue: [],
 
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	enqueueIframe: function enqueueIframe(settings) {
 
 		if (DailyMotionApi.isLoaded) {
@@ -48,25 +28,13 @@ var DailyMotionApi = {
 		}
 	},
 
-	/**
-  * Load DailyMotion API script on the header of the document
-  *
-  */
 	loadIframeApi: function loadIframeApi() {
 		if (!DailyMotionApi.isSDKStarted) {
-			var e = document.createElement('script');
-			e.async = true;
-			e.src = '//api.dmcdn.net/all.js';
-			var s = document.getElementsByTagName('script')[0];
-			s.parentNode.insertBefore(e, s);
+			mejs.Utils.loadScript('https://api.dmcdn.net/all.js');
 			DailyMotionApi.isSDKStarted = true;
 		}
 	},
 
-	/**
-  * Process queue of DailyMotion <iframe> element creation
-  *
-  */
 	apiReady: function apiReady() {
 
 		DailyMotionApi.isLoaded = true;
@@ -74,15 +42,17 @@ var DailyMotionApi = {
 
 		while (DailyMotionApi.iframeQueue.length > 0) {
 			var settings = DailyMotionApi.iframeQueue.pop();
+
+			DM.init({
+				apiKey: settings.apiKey,
+				status: settings.status,
+				cookie: settings.cookie
+			});
+
 			DailyMotionApi.createIframe(settings);
 		}
 	},
 
-	/**
-  * Create a new instance of DailyMotion API player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
 	createIframe: function createIframe(settings) {
 
 		var player = DM.player(settings.container, {
@@ -98,15 +68,6 @@ var DailyMotionApi = {
 		});
 	},
 
-	/**
-  * Extract ID from DailyMotion's URL to be loaded through API
-  * Valid URL format(s):
-  * - http://www.dailymotion.com/embed/video/x35yawy
-  * - http://dai.ly/x35yawy
-  *
-  * @param {String} url
-  * @return {String}
-  */
 	getDailyMotionId: function getDailyMotionId(url) {
 		var parts = url.split('/'),
 		    lastPart = parts[parts.length - 1],
@@ -118,10 +79,8 @@ var DailyMotionApi = {
 
 var DailyMotionIframeRenderer = {
 	name: 'dailymotion_iframe',
-
 	options: {
 		prefix: 'dailymotion_iframe',
-
 		dailymotion: {
 			width: '100%',
 			height: '100%',
@@ -131,28 +90,17 @@ var DailyMotionIframeRenderer = {
 				info: 0,
 				logo: 0,
 				related: 0
-			}
+			},
+			apiKey: null,
+			status: true,
+			cookie: true
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/dailymotion', 'video/x-dailymotion'].includes(type);
+		return ~['video/dailymotion', 'video/x-dailymotion'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var dm = {},
@@ -167,38 +115,28 @@ var DailyMotionIframeRenderer = {
 		dm.id = mediaElement.id + '_' + options.prefix;
 		dm.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
-			// add to flash state that we will store
-
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
 			dm['get' + capName] = function () {
 				if (dmPlayer !== null) {
 					var value = null;
 
-					// figure out how to get dm dta here
 					switch (propName) {
 						case 'currentTime':
 							return dmPlayer.currentTime;
-
 						case 'duration':
 							return isNaN(dmPlayer.duration) ? 0 : dmPlayer.duration;
-
 						case 'volume':
 							return dmPlayer.volume;
-
 						case 'paused':
 							return dmPlayer.paused;
-
 						case 'ended':
 							return dmPlayer.ended;
-
 						case 'muted':
 							return dmPlayer.muted;
-
 						case 'buffered':
 							var percentLoaded = dmPlayer.bufferedTime,
 							    duration = dmPlayer.duration;
@@ -213,7 +151,6 @@ var DailyMotionIframeRenderer = {
 							};
 						case 'src':
 							return mediaElement.originalNode.getAttribute('src');
-
 						case 'readyState':
 							return readyState;
 					}
@@ -226,31 +163,21 @@ var DailyMotionIframeRenderer = {
 
 			dm['set' + capName] = function (value) {
 				if (dmPlayer !== null) {
-
 					switch (propName) {
-
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src;
-
 							dmPlayer.load(DailyMotionApi.getDailyMotionId(url));
 							break;
-
 						case 'currentTime':
 							dmPlayer.seek(value);
 							break;
-
 						case 'muted':
-							if (value) {
-								dmPlayer.setMuted(true);
-							} else {
-								dmPlayer.setMuted(false);
-							}
+							dmPlayer.setMuted(value);
 							setTimeout(function () {
 								var event = mejs.Utils.createEvent('volumechange', dm);
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'volume':
 							dmPlayer.setVolume(value);
 							setTimeout(function () {
@@ -258,18 +185,15 @@ var DailyMotionIframeRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'readyState':
 							var event = mejs.Utils.createEvent('canplay', dm);
 							mediaElement.dispatchEvent(event);
 							break;
-
 						default:
 							
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -279,15 +203,10 @@ var DailyMotionIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			dm[methodName] = function () {
 				if (dmPlayer !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							return dmPlayer.play();
@@ -295,7 +214,6 @@ var DailyMotionIframeRenderer = {
 							return dmPlayer.pause();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -307,12 +225,10 @@ var DailyMotionIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// Initial method to register all DailyMotion events when initializing <iframe>
 		window['__ready__' + dm.id] = function (_dmPlayer) {
 
 			mediaElement.dmPlayer = dmPlayer = _dmPlayer;
 
-			// do call stack
 			if (apiStack.length) {
 				for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 
@@ -331,7 +247,6 @@ var DailyMotionIframeRenderer = {
 
 			dmIframe = document.getElementById(dm.id);
 
-			// a few more events
 			events = ['mouseover', 'mouseout'];
 			var assignEvents = function assignEvents(e) {
 				var event = mejs.Utils.createEvent(e.type, dm);
@@ -342,14 +257,10 @@ var DailyMotionIframeRenderer = {
 				dmIframe.addEventListener(events[_i3], assignEvents, false);
 			}
 
-			// BUBBLE EVENTS up
 			events = mejs.html5media.events;
 			events = events.concat(['click', 'mouseover', 'mouseout']);
 			var assignNativeEvents = function assignNativeEvents(eventName) {
-
-				// Deprecated event; not consider it
 				if (eventName !== 'ended') {
-
 					dmPlayer.addEventListener(eventName, function (e) {
 						var event = mejs.Utils.createEvent(e.type, dmPlayer);
 						mediaElement.dispatchEvent(event);
@@ -361,7 +272,6 @@ var DailyMotionIframeRenderer = {
 				assignNativeEvents(events[_i4]);
 			}
 
-			// Custom DailyMotion events
 			dmPlayer.addEventListener('ad_start', function () {
 				var event = mejs.Utils.createEvent('play', dmPlayer);
 				mediaElement.dispatchEvent(event);
@@ -404,8 +314,7 @@ var DailyMotionIframeRenderer = {
 				mediaElement.dispatchEvent(event);
 			});
 
-			// give initial events
-			var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
+			var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
 
 			for (var _i5 = 0, _total5 = initEvents.length; _i5 < _total5; _i5++) {
 				var event = mejs.Utils.createEvent(initEvents[_i5], dm);
@@ -445,39 +354,22 @@ var DailyMotionIframeRenderer = {
 			}
 		};
 		dm.setSize = function (width, height) {
-			dmIframe.width = width;
-			dmIframe.height = height;
+			if (dmIframe) {
+				dmIframe.width = width;
+				dmIframe.height = height;
+			}
 		};
 		dm.destroy = function () {
 			dmPlayer.destroy();
 		};
-		dm.interval = null;
-
-		dm.startInterval = function () {
-			dm.interval = setInterval(function () {
-				DailyMotionApi.sendEvent(dm.id, dmPlayer, 'timeupdate', {
-					paused: false,
-					ended: false
-				});
-			}, 250);
-		};
-		dm.stopInterval = function () {
-			if (dm.interval) {
-				clearInterval(dm.interval);
-			}
-		};
 
 		return dm;
 	}
 };
 
-/*
- * Register DailyMotion event globally
- *
- */
 mejs.Utils.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('//dailymotion.com') || url.includes('www.dailymotion.com') || url.includes('//dai.ly') ? 'video/x-dailymotion' : null;
+	return (/\/\/((www\.)?dailymotion\.com|dai\.ly)/i.test(url) ? 'video/x-dailymotion' : null
+	);
 });
 
 window.dmAsyncInit = function () {
diff --git a/lib/mejs/renderers/dailymotion.min.js b/lib/mejs/renderers/dailymotion.min.js
index dfc809eccb21a7759e41c53ddf30c7dbe9b1451a..f6c225c88b0b8615a4baccf715eac21b4f77c0e7 100644
--- a/lib/mejs/renderers/dailymotion.min.js
+++ b/lib/mejs/renderers/dailymotion.min.js
@@ -1,14 +1,4 @@
 /*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- *//*!
  * MediaElement.js
  * http://www.mediaelementjs.com/
  *
@@ -19,4 +9,4 @@
  * License: MIT
  *
  */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isSDKStarted){var a=document.createElement("script");a.async=!0,a.src="//api.dmcdn.net/all.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),d.isSDKStarted=!0}},apiReady:function(){for(d.isLoaded=!0,d.isSDKLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=DM.player(a.container,{height:a.height||"100%",width:a.width||"100%",video:a.videoId,params:Object.assign({api:!0},a.params),origin:location.host});b.addEventListener("apiready",function(){window["__ready__"+a.id](b,{paused:!0,ended:!1})})},getDailyMotionId:function(a){var b=a.split("/"),c=b[b.length-1],d=c.split("_");return d[0]}},e={name:"dailymotion_iframe",options:{prefix:"dailymotion_iframe",dailymotion:{width:"100%",height:"100%",params:{autoplay:!1,chromeless:1,info:0,logo:0,related:0}}},canPlayType:function(a){return["video/dailymotion","video/x-dailymotion"].includes(a)},create:function(a,b,c){var e={},f=[],g=4,h=void 0,i=null,j=null;e.options=b,e.id=a.id+"_"+b.prefix,e.mediaElement=a;for(var k=mejs.html5media.properties,l=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);e["get"+c]=function(){if(null!==i){var c=null;switch(b){case"currentTime":return i.currentTime;case"duration":return isNaN(i.duration)?0:i.duration;case"volume":return i.volume;case"paused":return i.paused;case"ended":return i.ended;case"muted":return i.muted;case"buffered":var d=i.bufferedTime,e=i.duration;return{start:function(){return 0},end:function(){return d/e},length:1};case"src":return a.originalNode.getAttribute("src");case"readyState":return g}return c}return null},e["set"+c]=function(c){if(null!==i)switch(b){case"src":var g="string"==typeof c?c:c[0].src;i.load(d.getDailyMotionId(g));break;case"currentTime":i.seek(c);break;case"muted":c?i.setMuted(!0):i.setMuted(!1),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"volume":i.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"readyState":var h=mejs.Utils.createEvent("canplay",e);a.dispatchEvent(h)}else f.push({type:"set",propName:b,value:c})}},m=0,n=k.length;n>m;m++)l(k[m]);for(var o=mejs.html5media.methods,p=function(a){e[a]=function(){if(null!==i)switch(a){case"play":return i.play();case"pause":return i.pause();case"load":return null}else f.push({type:"call",methodName:a})}},q=0,r=o.length;r>q;q++)p(o[q]);window["__ready__"+e.id]=function(b){if(a.dmPlayer=i=b,f.length)for(var c=0,d=f.length;d>c;c++){var g=f[c];if("set"===g.type){var k=g.propName,l=""+k.substring(0,1).toUpperCase()+k.substring(1);e["set"+l](g.value)}else"call"===g.type&&e[g.methodName]()}j=document.getElementById(e.id),h=["mouseover","mouseout"];for(var m=function(b){var c=mejs.Utils.createEvent(b.type,e);a.dispatchEvent(c)},n=0,o=h.length;o>n;n++)j.addEventListener(h[n],m,!1);h=mejs.html5media.events,h=h.concat(["click","mouseover","mouseout"]);for(var p=function(b){"ended"!==b&&i.addEventListener(b,function(b){var c=mejs.Utils.createEvent(b.type,i);a.dispatchEvent(c)})},q=0,r=h.length;r>q;q++)p(h[q]);i.addEventListener("ad_start",function(){var b=mejs.Utils.createEvent("play",i);a.dispatchEvent(b),b=mejs.Utils.createEvent("progress",i),a.dispatchEvent(b),b=mejs.Utils.createEvent("timeupdate",i),a.dispatchEvent(b)}),i.addEventListener("ad_timeupdate",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)}),i.addEventListener("ad_pause",function(){var b=mejs.Utils.createEvent("pause",i);a.dispatchEvent(b)}),i.addEventListener("ad_end",function(){var b=mejs.Utils.createEvent("ended",i);a.dispatchEvent(b)}),i.addEventListener("video_start",function(){var b=mejs.Utils.createEvent("play",i);a.dispatchEvent(b),b=mejs.Utils.createEvent("timeupdate",i),a.dispatchEvent(b)}),i.addEventListener("video_end",function(){var b=mejs.Utils.createEvent("ended",i);a.dispatchEvent(b)}),i.addEventListener("progress",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)}),i.addEventListener("durationchange",function(){var b=mejs.Utils.createEvent("timeupdate",i);a.dispatchEvent(b)});for(var s=["rendererready","loadeddata","loadedmetadata","canplay"],t=0,u=s.length;u>t;t++){var v=mejs.Utils.createEvent(s[t],e);a.dispatchEvent(v)}};var s=document.createElement("div");s.id=e.id,a.appendChild(s),a.originalNode&&(s.style.width=a.originalNode.style.width,s.style.height=a.originalNode.style.height),a.originalNode.style.display="none";var t=d.getDailyMotionId(c[0].src),u=Object.assign({id:e.id,container:s,videoId:t,autoplay:a.originalNode.autoplay},e.options.dailymotion);return d.enqueueIframe(u),e.hide=function(){e.stopInterval(),e.pause(),j&&(j.style.display="none")},e.show=function(){j&&(j.style.display="")},e.setSize=function(a,b){j.width=a,j.height=b},e.destroy=function(){i.destroy()},e.interval=null,e.startInterval=function(){e.interval=setInterval(function(){d.sendEvent(e.id,i,"timeupdate",{paused:!1,ended:!1})},250)},e.stopInterval=function(){e.interval&&clearInterval(e.interval)},e}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//dailymotion.com")||a.includes("www.dailymotion.com")||a.includes("//dai.ly")?"video/x-dailymotion":null}),window.dmAsyncInit=function(){d.apiReady()},mejs.Renderers.add(e)},{}]},{},[1]);
\ No newline at end of file
+!function e(t,n,a){function i(s,d){if(!n[s]){if(!t[s]){var o="function"==typeof require&&require;if(!d&&o)return o(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return i(n||e)},c,c.exports,e,t,n,a)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s<a.length;s++)i(a[s]);return i}({1:[function(e,t,n){"use strict";var a={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(e){a.isLoaded?a.createIframe(e):(a.loadIframeApi(),a.iframeQueue.push(e))},loadIframeApi:function(){a.isSDKStarted||(mejs.Utils.loadScript("https://api.dmcdn.net/all.js"),a.isSDKStarted=!0)},apiReady:function(){for(a.isLoaded=!0,a.isSDKLoaded=!0;a.iframeQueue.length>0;){var e=a.iframeQueue.pop();DM.init({apiKey:e.apiKey,status:e.status,cookie:e.cookie}),a.createIframe(e)}},createIframe:function(e){var t=DM.player(e.container,{height:e.height||"100%",width:e.width||"100%",video:e.videoId,params:Object.assign({api:!0},e.params),origin:location.host});t.addEventListener("apiready",function(){window["__ready__"+e.id](t,{paused:!0,ended:!1})})},getDailyMotionId:function(e){var t=e.split("/");return t[t.length-1].split("_")[0]}},i={name:"dailymotion_iframe",options:{prefix:"dailymotion_iframe",dailymotion:{width:"100%",height:"100%",params:{autoplay:!1,chromeless:1,info:0,logo:0,related:0},apiKey:null,status:!0,cookie:!0}},canPlayType:function(e){return~["video/dailymotion","video/x-dailymotion"].indexOf(e.toLowerCase())},create:function(e,t,n){var i={},r=[],s=void 0,d=null,o=null;i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var u=mejs.html5media.properties,c=0,l=u.length;c<l;c++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+n]=function(){if(null!==d){switch(t){case"currentTime":return d.currentTime;case"duration":return isNaN(d.duration)?0:d.duration;case"volume":return d.volume;case"paused":return d.paused;case"ended":return d.ended;case"muted":return d.muted;case"buffered":var n=d.bufferedTime,a=d.duration;return{start:function(){return 0},end:function(){return n/a},length:1};case"src":return e.originalNode.getAttribute("src");case"readyState":return 4}return null}return null},i["set"+n]=function(n){if(null!==d)switch(t){case"src":var s="string"==typeof n?n:n[0].src;d.load(a.getDailyMotionId(s));break;case"currentTime":d.seek(n);break;case"muted":d.setMuted(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":d.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var o=mejs.Utils.createEvent("canplay",i);e.dispatchEvent(o)}else r.push({type:"set",propName:t,value:n})}}(u[c]);for(var v=mejs.html5media.methods,p=0,m=v.length;p<m;p++)!function(e){i[e]=function(){if(null!==d)switch(e){case"play":return d.play();case"pause":return d.pause();case"load":return null}else r.push({type:"call",methodName:e})}}(v[p]);window["__ready__"+i.id]=function(t){if(e.dmPlayer=d=t,r.length)for(var n=0,a=r.length;n<a;n++){var u=r[n];if("set"===u.type){var c=u.propName,l=""+c.substring(0,1).toUpperCase()+c.substring(1);i["set"+l](u.value)}else"call"===u.type&&i[u.methodName]()}o=document.getElementById(i.id);for(var v=function(t){var n=mejs.Utils.createEvent(t.type,i);e.dispatchEvent(n)},p=0,m=(s=["mouseover","mouseout"]).length;p<m;p++)o.addEventListener(s[p],v,!1);s=mejs.html5media.events;for(var f=0,h=(s=s.concat(["click","mouseover","mouseout"])).length;f<h;f++)!function(t){"ended"!==t&&d.addEventListener(t,function(t){var n=mejs.Utils.createEvent(t.type,d);e.dispatchEvent(n)})}(s[f]);d.addEventListener("ad_start",function(){var t=mejs.Utils.createEvent("play",d);e.dispatchEvent(t),t=mejs.Utils.createEvent("progress",d),e.dispatchEvent(t),t=mejs.Utils.createEvent("timeupdate",d),e.dispatchEvent(t)}),d.addEventListener("ad_timeupdate",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)}),d.addEventListener("ad_pause",function(){var t=mejs.Utils.createEvent("pause",d);e.dispatchEvent(t)}),d.addEventListener("ad_end",function(){var t=mejs.Utils.createEvent("ended",d);e.dispatchEvent(t)}),d.addEventListener("video_start",function(){var t=mejs.Utils.createEvent("play",d);e.dispatchEvent(t),t=mejs.Utils.createEvent("timeupdate",d),e.dispatchEvent(t)}),d.addEventListener("video_end",function(){var t=mejs.Utils.createEvent("ended",d);e.dispatchEvent(t)}),d.addEventListener("progress",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)}),d.addEventListener("durationchange",function(){var t=mejs.Utils.createEvent("timeupdate",d);e.dispatchEvent(t)});for(var y=["rendererready","loadedmetadata","loadeddata","canplay"],E=0,g=y.length;E<g;E++){var j=mejs.Utils.createEvent(y[E],i);e.dispatchEvent(j)}};var f=document.createElement("div");f.id=i.id,e.appendChild(f),e.originalNode&&(f.style.width=e.originalNode.style.width,f.style.height=e.originalNode.style.height),e.originalNode.style.display="none";var h=a.getDailyMotionId(n[0].src),y=Object.assign({id:i.id,container:f,videoId:h,autoplay:e.originalNode.autoplay},i.options.dailymotion);return a.enqueueIframe(y),i.hide=function(){i.stopInterval(),i.pause(),o&&(o.style.display="none")},i.show=function(){o&&(o.style.display="")},i.setSize=function(e,t){o&&(o.width=e,o.height=t)},i.destroy=function(){d.destroy()},i}};mejs.Utils.typeChecks.push(function(e){return/\/\/((www\.)?dailymotion\.com|dai\.ly)/i.test(e)?"video/x-dailymotion":null}),window.dmAsyncInit=function(){a.apiReady()},mejs.Renderers.add(i)},{}]},{},[1]);
\ No newline at end of file
diff --git a/lib/mejs/renderers/facebook.js b/lib/mejs/renderers/facebook.js
index 295baf6990ac99580f6beb30146de155b90fc8d3..9104d54a1d67460ec489669c77ab5fc1daeaa036 100644
--- a/lib/mejs/renderers/facebook.js
+++ b/lib/mejs/renderers/facebook.js
@@ -11,16 +11,8 @@
  */(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})({1:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * Facebook renderer
- *
- * It creates an <iframe> from a <div> with specific configuration.
- * @see https://developers.facebook.com/docs/plugins/embedded-video-player
- */
-
 var FacebookRenderer = {
 	name: 'facebook',
-
 	options: {
 		prefix: 'facebook',
 		facebook: {
@@ -30,24 +22,10 @@ var FacebookRenderer = {
 		}
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/facebook', 'video/x-facebook'].includes(type);
+		return ~['video/facebook', 'video/x-facebook'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var fbWrapper = {},
@@ -68,7 +46,6 @@ var FacebookRenderer = {
 		fbWrapper.id = mediaElement.id + '_' + options.prefix;
 		fbWrapper.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
@@ -79,26 +56,19 @@ var FacebookRenderer = {
 				if (fbApi !== null) {
 					var value = null;
 
-					// figure out how to get youtube dta here
 					switch (propName) {
 						case 'currentTime':
 							return fbApi.getCurrentPosition();
-
 						case 'duration':
 							return fbApi.getDuration();
-
 						case 'volume':
 							return fbApi.getVolume();
-
 						case 'paused':
 							return paused;
-
 						case 'ended':
 							return ended;
-
 						case 'muted':
 							return fbApi.isMuted();
-
 						case 'buffered':
 							return {
 								start: function start() {
@@ -111,7 +81,6 @@ var FacebookRenderer = {
 							};
 						case 'src':
 							return src;
-
 						case 'readyState':
 							return readyState;
 					}
@@ -127,16 +96,12 @@ var FacebookRenderer = {
 				if (fbApi !== null) {
 
 					switch (propName) {
-
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src;
 
-							// Only way is to destroy instance and all the events fired,
-							// and create new one
 							fbDiv.remove();
 							createFacebookEmbed(url, options.facebook);
 
-							// This method reloads video on-demand
 							FB.XFBML.parse();
 
 							if (autoplay) {
@@ -144,11 +109,9 @@ var FacebookRenderer = {
 							}
 
 							break;
-
 						case 'currentTime':
 							fbApi.seek(value);
 							break;
-
 						case 'muted':
 							if (value) {
 								fbApi.mute();
@@ -160,7 +123,6 @@ var FacebookRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'volume':
 							fbApi.setVolume(value);
 							setTimeout(function () {
@@ -168,18 +130,15 @@ var FacebookRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'readyState':
 							var event = mejs.Utils.createEvent('canplay', fbWrapper);
 							mediaElement.dispatchEvent(event);
 							break;
-
 						default:
 							
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -189,16 +148,10 @@ var FacebookRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			fbWrapper[methodName] = function () {
-
 				if (fbApi !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							return fbApi.play();
@@ -206,7 +159,6 @@ var FacebookRenderer = {
 							return fbApi.pause();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -218,12 +170,6 @@ var FacebookRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		/**
-   * Dispatch a list of events
-   *
-   * @private
-   * @param {Array} events
-   */
 		function sendEvents(events) {
 			for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) {
 				var event = mejs.Utils.createEvent(events[_i2], fbWrapper);
@@ -231,19 +177,7 @@ var FacebookRenderer = {
 			}
 		}
 
-		/**
-   * Create a new Facebook player and attach all its events
-   *
-   * This method creates a <div> element that, once the API is available, will generate an <iframe>.
-   * Valid URL format(s):
-   *  - https://www.facebook.com/johndyer/videos/10107816243681884/
-   *
-   * @param {String} url
-   * @param {Object} config
-   */
 		function createFacebookEmbed(url, config) {
-
-			// Append width and height if not detected
 			src = url;
 
 			fbDiv = document.createElement('div');
@@ -256,10 +190,6 @@ var FacebookRenderer = {
 			mediaElement.originalNode.parentNode.insertBefore(fbDiv, mediaElement.originalNode);
 			mediaElement.originalNode.style.display = 'none';
 
-			/*
-    * Register Facebook API event globally
-    *
-    */
 			window.fbAsyncInit = function () {
 
 				FB.init(config);
@@ -270,7 +200,6 @@ var FacebookRenderer = {
 
 						fbApi = msg.instance;
 
-						// Set proper size since player dimensions are unknown before this event
 						var fbIframe = fbDiv.getElementsByTagName('iframe')[0],
 						    width = fbIframe.offsetWidth,
 						    height = fbIframe.offsetHeight,
@@ -290,7 +219,6 @@ var FacebookRenderer = {
 							fbIframe.addEventListener(events[_i3], assignEvents, false);
 						}
 
-						// remove previous listeners
 						var fbEvents = ['startedPlaying', 'paused', 'finishedPlaying', 'startedBuffering', 'finishedBuffering'];
 						for (var _i4 = 0, _total4 = fbEvents.length; _i4 < _total4; _i4++) {
 							var event = fbEvents[_i4],
@@ -300,7 +228,6 @@ var FacebookRenderer = {
 							}
 						}
 
-						// do call stack
 						if (apiStack.length) {
 							for (var _i5 = 0, _total5 = apiStack.length; _i5 < _total5; _i5++) {
 
@@ -321,7 +248,6 @@ var FacebookRenderer = {
 
 						var timer = void 0;
 
-						// Custom Facebook events
 						eventHandler.startedPlaying = fbApi.subscribe('startedPlaying', function () {
 							if (!hasStartedPlaying) {
 								hasStartedPlaying = true;
@@ -330,7 +256,6 @@ var FacebookRenderer = {
 							ended = false;
 							sendEvents(['play', 'playing', 'timeupdate']);
 
-							// Workaround to update progress bar
 							timer = setInterval(function () {
 								fbApi.getCurrentPosition();
 								sendEvents(['timeupdate']);
@@ -359,16 +284,7 @@ var FacebookRenderer = {
 				});
 			};
 
-			(function (d, s, id) {
-				var fjs = d.getElementsByTagName(s)[0];
-				if (d.getElementById(id)) {
-					return;
-				}
-				var js = d.createElement(s);
-				js.id = id;
-				js.src = '//connect.facebook.net/en_US/sdk.js';
-				fjs.parentNode.insertBefore(js, fjs);
-			})(document, 'script', 'facebook-jssdk');
+			mejs.Utils.loadScript('https://connect.facebook.net/en_US/sdk.js');
 		}
 
 		if (mediaFiles.length > 0) {
@@ -397,7 +313,6 @@ var FacebookRenderer = {
 		fbWrapper.interval = null;
 
 		fbWrapper.startInterval = function () {
-			// create timer
 			fbWrapper.interval = setInterval(function () {
 				var event = mejs.Utils.createEvent('timeupdate', fbWrapper);
 				mediaElement.dispatchEvent(event);
@@ -413,13 +328,8 @@ var FacebookRenderer = {
 	}
 };
 
-/**
- * Register Facebook type based on URL structure
- *
- */
 mejs.Utils.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('//www.facebook') ? 'video/x-facebook' : null;
+	return ~url.toLowerCase().indexOf('//www.facebook') ? 'video/x-facebook' : null;
 });
 
 mejs.Renderers.add(FacebookRenderer);
diff --git a/lib/mejs/renderers/facebook.min.js b/lib/mejs/renderers/facebook.min.js
index 4ef8875637f1566014db8ad46207898d5e84c790..68ffb8617ad316a587a8b74a2f8ccf0ee1f224fc 100644
--- a/lib/mejs/renderers/facebook.min.js
+++ b/lib/mejs/renderers/facebook.min.js
@@ -1,14 +1,4 @@
 /*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- *//*!
  * MediaElement.js
  * http://www.mediaelementjs.com/
  *
@@ -19,4 +9,4 @@
  * License: MIT
  *
  */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={name:"facebook",options:{prefix:"facebook",facebook:{appId:"{your-app-id}",xfbml:!0,version:"v2.6"}},canPlayType:function(a){return["video/facebook","video/x-facebook"].includes(a)},create:function(a,b,c){function d(b){for(var c=0,d=b.length;d>c;c++){var e=mejs.Utils.createEvent(b[c],f);a.dispatchEvent(e)}}function e(b,c){k=b,p=document.createElement("div"),p.id=f.id,p.className="fb-video",p.setAttribute("data-href",b),p.setAttribute("data-allowfullscreen","true"),p.setAttribute("data-controls","false"),a.originalNode.parentNode.insertBefore(p,a.originalNode),a.originalNode.style.display="none",window.fbAsyncInit=function(){FB.init(c),FB.Event.subscribe("xfbml.ready",function(b){if("video"===b.type){o=b.instance;var c=p.getElementsByTagName("iframe")[0],e=c.offsetWidth,i=c.offsetHeight,k=["mouseover","mouseout"],q=function(b){var c=mejs.Utils.createEvent(b.type,f);a.dispatchEvent(c)};f.setSize(e,i),j&&o.play();for(var r=0,s=k.length;s>r;r++)c.addEventListener(k[r],q,!1);for(var t=["startedPlaying","paused","finishedPlaying","startedBuffering","finishedBuffering"],u=0,v=t.length;v>u;u++){var w=t[u],x=h[w];void 0===x||null===x||mejs.Utils.isObjectEmpty(x)||"function"!=typeof x.removeListener||x.removeListener(w)}if(g.length)for(var y=0,z=g.length;z>y;y++){var A=g[y];if("set"===A.type){var B=A.propName,C=""+B.substring(0,1).toUpperCase()+B.substring(1);f["set"+C](A.value)}else"call"===A.type&&f[A.methodName]()}d(["rendererready","loadeddata","canplay","progress","loadedmetadata","timeupdate"]);var D=void 0;h.startedPlaying=o.subscribe("startedPlaying",function(){n||(n=!0),l=!1,m=!1,d(["play","playing","timeupdate"]),D=setInterval(function(){o.getCurrentPosition(),d(["timeupdate"])},250)}),h.paused=o.subscribe("paused",function(){l=!0,m=!1,d(["pause"])}),h.finishedPlaying=o.subscribe("finishedPlaying",function(){l=!0,m=!0,d(["ended"]),clearInterval(D),D=null}),h.startedBuffering=o.subscribe("startedBuffering",function(){d(["progress","timeupdate"])}),h.finishedBuffering=o.subscribe("finishedBuffering",function(){d(["progress","timeupdate"])})}})},function(a,b,c){var d=a.getElementsByTagName(b)[0];if(!a.getElementById(c)){var e=a.createElement(b);e.id=c,e.src="//connect.facebook.net/en_US/sdk.js",d.parentNode.insertBefore(e,d)}}(document,"script","facebook-jssdk")}var f={},g=[],h={},i=4,j=a.originalNode.autoplay,k="",l=!0,m=!1,n=!1,o=null,p=null;b=Object.assign(b,a.options),f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=mejs.html5media.properties,r=function(c){var d=""+c.substring(0,1).toUpperCase()+c.substring(1);f["get"+d]=function(){if(null!==o){var a=null;switch(c){case"currentTime":return o.getCurrentPosition();case"duration":return o.getDuration();case"volume":return o.getVolume();case"paused":return l;case"ended":return m;case"muted":return o.isMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return k;case"readyState":return i}return a}return null},f["set"+d]=function(d){if(null!==o)switch(c){case"src":var h="string"==typeof d?d:d[0].src;p.remove(),e(h,b.facebook),FB.XFBML.parse(),j&&o.play();break;case"currentTime":o.seek(d);break;case"muted":d?o.mute():o.unmute(),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"volume":o.setVolume(d),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"readyState":var i=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(i)}else g.push({type:"set",propName:c,value:d})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=mejs.html5media.methods,v=function(a){f[a]=function(){if(null!==o)switch(a){case"play":return o.play();case"pause":return o.pause();case"load":return null}else g.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);return c.length>0&&e(c[0].src,f.options.facebook),f.hide=function(){f.stopInterval(),f.pause(),p&&(p.style.display="none")},f.show=function(){p&&(p.style.display="")},f.setSize=function(a,b){null===o||isNaN(a)||isNaN(b)||(p.style.width=a,p.style.height=b)},f.destroy=function(){},f.interval=null,f.startInterval=function(){f.interval=setInterval(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},250)},f.stopInterval=function(){f.interval&&clearInterval(f.interval)},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.facebook")?"video/x-facebook":null}),mejs.Renderers.add(d)},{}]},{},[1]);
\ No newline at end of file
+!function e(t,n,r){function a(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(i)return i(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return a(n||e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){"use strict";var r={name:"facebook",options:{prefix:"facebook",facebook:{appId:"{your-app-id}",xfbml:!0,version:"v2.6"}},canPlayType:function(e){return~["video/facebook","video/x-facebook"].indexOf(e.toLowerCase())},create:function(e,t,n){function r(t){for(var n=0,r=t.length;n<r;n++){var a=mejs.Utils.createEvent(t[n],i);e.dispatchEvent(a)}}function a(t,n){l=t,(v=document.createElement("div")).id=i.id,v.className="fb-video",v.setAttribute("data-href",t),v.setAttribute("data-allowfullscreen","true"),v.setAttribute("data-controls","false"),e.originalNode.parentNode.insertBefore(v,e.originalNode),e.originalNode.style.display="none",window.fbAsyncInit=function(){FB.init(n),FB.Event.subscribe("xfbml.ready",function(t){if("video"===t.type){p=t.instance;var n=v.getElementsByTagName("iframe")[0],a=n.offsetWidth,l=n.offsetHeight,m=["mouseover","mouseout"],g=function(t){var n=mejs.Utils.createEvent(t.type,i);e.dispatchEvent(n)};i.setSize(a,l),u&&p.play();for(var h=0,y=m.length;h<y;h++)n.addEventListener(m[h],g,!1);for(var b=["startedPlaying","paused","finishedPlaying","startedBuffering","finishedBuffering"],E=0,k=b.length;E<k;E++){var N=b[E],j=o[N];void 0===j||null===j||mejs.Utils.isObjectEmpty(j)||"function"!=typeof j.removeListener||j.removeListener(N)}if(s.length)for(var w=0,U=s.length;w<U;w++){var x=s[w];if("set"===x.type){var B=x.propName,I=""+B.substring(0,1).toUpperCase()+B.substring(1);i["set"+I](x.value)}else"call"===x.type&&i[x.methodName]()}r(["rendererready","loadeddata","canplay","progress","loadedmetadata","timeupdate"]);var P=void 0;o.startedPlaying=p.subscribe("startedPlaying",function(){d||(d=!0),c=!1,f=!1,r(["play","playing","timeupdate"]),P=setInterval(function(){p.getCurrentPosition(),r(["timeupdate"])},250)}),o.paused=p.subscribe("paused",function(){c=!0,f=!1,r(["pause"])}),o.finishedPlaying=p.subscribe("finishedPlaying",function(){c=!0,f=!0,r(["ended"]),clearInterval(P),P=null}),o.startedBuffering=p.subscribe("startedBuffering",function(){r(["progress","timeupdate"])}),o.finishedBuffering=p.subscribe("finishedBuffering",function(){r(["progress","timeupdate"])})}})},mejs.Utils.loadScript("https://connect.facebook.net/en_US/sdk.js")}var i={},s=[],o={},u=e.originalNode.autoplay,l="",c=!0,f=!1,d=!1,p=null,v=null;t=Object.assign(t,e.options),i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var m=mejs.html5media.properties,g=0,h=m.length;g<h;g++)!function(n){var r=""+n.substring(0,1).toUpperCase()+n.substring(1);i["get"+r]=function(){if(null!==p){switch(n){case"currentTime":return p.getCurrentPosition();case"duration":return p.getDuration();case"volume":return p.getVolume();case"paused":return c;case"ended":return f;case"muted":return p.isMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return l;case"readyState":return 4}return null}return null},i["set"+r]=function(r){if(null!==p)switch(n){case"src":var o="string"==typeof r?r:r[0].src;v.remove(),a(o,t.facebook),FB.XFBML.parse(),u&&p.play();break;case"currentTime":p.seek(r);break;case"muted":r?p.mute():p.unmute(),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":p.setVolume(r),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var l=mejs.Utils.createEvent("canplay",i);e.dispatchEvent(l)}else s.push({type:"set",propName:n,value:r})}}(m[g]);for(var y=mejs.html5media.methods,b=0,E=y.length;b<E;b++)!function(e){i[e]=function(){if(null!==p)switch(e){case"play":return p.play();case"pause":return p.pause();case"load":return null}else s.push({type:"call",methodName:e})}}(y[b]);return n.length>0&&a(n[0].src,i.options.facebook),i.hide=function(){i.stopInterval(),i.pause(),v&&(v.style.display="none")},i.show=function(){v&&(v.style.display="")},i.setSize=function(e,t){null===p||isNaN(e)||isNaN(t)||(v.style.width=e,v.style.height=t)},i.destroy=function(){},i.interval=null,i.startInterval=function(){i.interval=setInterval(function(){var t=mejs.Utils.createEvent("timeupdate",i);e.dispatchEvent(t)},250)},i.stopInterval=function(){i.interval&&clearInterval(i.interval)},i}};mejs.Utils.typeChecks.push(function(e){return~e.toLowerCase().indexOf("//www.facebook")?"video/x-facebook":null}),mejs.Renderers.add(r)},{}]},{},[1]);
\ No newline at end of file
diff --git a/lib/mejs/renderers/soundcloud.js b/lib/mejs/renderers/soundcloud.js
index 4c114e79df580ca4cc770b990c308370f5c51c1e..cfd16ad06ed189ce469b859ccdec25258b9029d8 100644
--- a/lib/mejs/renderers/soundcloud.js
+++ b/lib/mejs/renderers/soundcloud.js
@@ -11,93 +11,23 @@
  */(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})({1:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * SoundCloud renderer
- *
- * Uses <iframe> approach and uses SoundCloud Widget API to manipulate it.
- * @see https://developers.soundcloud.com/docs/api/html5-widget
- */
-
 var SoundCloudApi = {
-	/**
-  * @type {Boolean}
-  */
-	isSDKStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isSDKLoaded: false,
-	/**
-  * @type {Array}
-  */
-	iframeQueue: [],
-
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	enqueueIframe: function enqueueIframe(settings) {
-
-		if (SoundCloudApi.isLoaded) {
-			SoundCloudApi.createIframe(settings);
-		} else {
-			SoundCloudApi.loadIframeApi();
-			SoundCloudApi.iframeQueue.push(settings);
-		}
-	},
-
-	/**
-  * Load SoundCloud API script on the header of the document
-  *
-  */
-	loadIframeApi: function loadIframeApi() {
-		if (!SoundCloudApi.isSDKStarted) {
-
-			var head = document.getElementsByTagName("head")[0] || document.documentElement,
-			    script = document.createElement("script");
 
-			var done = false;
+	promise: null,
 
-			script.src = '//w.soundcloud.com/player/api.js';
-
-			// Attach handlers for all browsers
-			// Is onload enough now? do IE9 support it?
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!SoundCloudApi.readyState || SoundCloudApi.readyState === "loaded" || SoundCloudApi.readyState === "complete")) {
-					done = true;
-					SoundCloudApi.apiReady();
-
-					// Handle memory leak in IE
-					script.onload = script.onreadystatechange = null;
-					script.remove();
-				}
-			};
-			head.appendChild(script);
-			SoundCloudApi.isSDKStarted = true;
-		}
-	},
+	load: function load(settings) {
 
-	/**
-  * Process queue of SoundCloud <iframe> element creation
-  *
-  */
-	apiReady: function apiReady() {
-		SoundCloudApi.isLoaded = true;
-		SoundCloudApi.isSDKLoaded = true;
-
-		while (SoundCloudApi.iframeQueue.length > 0) {
-			var settings = SoundCloudApi.iframeQueue.pop();
-			SoundCloudApi.createIframe(settings);
+		if (typeof SC !== 'undefined') {
+			SoundCloudApi._createPlayer(settings);
+		} else {
+			SoundCloudApi.promise = SoundCloudApi.promise || mejs.Utils.loadScript('https://w.soundcloud.com/player/api.js');
+			SoundCloudApi.promise.then(function () {
+				SoundCloudApi._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of SoundCloud Widget player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	createIframe: function createIframe(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = SC.Widget(settings.iframe);
 		window['__ready__' + settings.id](player);
 	}
@@ -105,32 +35,15 @@ var SoundCloudApi = {
 
 var SoundCloudIframeRenderer = {
 	name: 'soundcloud_iframe',
-
 	options: {
 		prefix: 'soundcloud_iframe'
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/soundcloud', 'video/x-soundcloud'].includes(type);
+		return ~['video/soundcloud', 'video/x-soundcloud'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
-
-		// create our fake element that allows events and such to work
 		var sc = {},
 		    apiStack = [],
 		    readyState = 4,
@@ -146,43 +59,31 @@ var SoundCloudIframeRenderer = {
 		    scPlayer = null,
 		    scIframe = null;
 
-		// store main variable
 		sc.options = options;
 		sc.id = mediaElement.id + '_' + options.prefix;
 		sc.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-			// add to flash state that we will store
-
-			var capName = "" + propName.substring(0, 1).toUpperCase() + propName.substring(1);
-
-			sc["get" + capName] = function () {
+			sc['get' + capName] = function () {
 				if (scPlayer !== null) {
 					var value = null;
 
-					// figure out how to get dm dta here
 					switch (propName) {
 						case 'currentTime':
 							return currentTime;
-
 						case 'duration':
 							return duration;
-
 						case 'volume':
 							return volume;
-
 						case 'paused':
 							return paused;
-
 						case 'ended':
 							return ended;
-
 						case 'muted':
-							return muted; // ?
-
+							return muted;
 						case 'buffered':
 							return {
 								start: function start() {
@@ -195,50 +96,39 @@ var SoundCloudIframeRenderer = {
 							};
 						case 'src':
 							return scIframe ? scIframe.src : '';
-
 						case 'readyState':
 							return readyState;
 					}
-
 					return value;
 				} else {
 					return null;
 				}
 			};
 
-			sc["set" + capName] = function (value) {
-
+			sc['set' + capName] = function (value) {
 				if (scPlayer !== null) {
-
-					// do something
 					switch (propName) {
-
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src;
-
 							scPlayer.load(url);
-
 							if (autoplay) {
 								scPlayer.play();
 							}
 							break;
-
 						case 'currentTime':
 							scPlayer.seekTo(value * 1000);
 							break;
-
 						case 'muted':
 							if (value) {
-								scPlayer.setVolume(0); // ?
+								scPlayer.setVolume(0);
 							} else {
-								scPlayer.setVolume(1); // ?
+								scPlayer.setVolume(1);
 							}
 							setTimeout(function () {
 								var event = mejs.Utils.createEvent('volumechange', sc);
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'volume':
 							scPlayer.setVolume(value);
 							setTimeout(function () {
@@ -246,7 +136,6 @@ var SoundCloudIframeRenderer = {
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
-
 						case 'readyState':
 							var event = mejs.Utils.createEvent('canplay', sc);
 							mediaElement.dispatchEvent(event);
@@ -257,7 +146,6 @@ var SoundCloudIframeRenderer = {
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -267,16 +155,10 @@ var SoundCloudIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the Soundcloud API
 			sc[methodName] = function () {
-
 				if (scPlayer !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							return scPlayer.play();
@@ -284,7 +166,6 @@ var SoundCloudIframeRenderer = {
 							return scPlayer.pause();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -296,7 +177,6 @@ var SoundCloudIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// add a ready method that SC can fire
 		window['__ready__' + sc.id] = function (_scPlayer) {
 
 			mediaElement.scPlayer = scPlayer = _scPlayer;
@@ -305,7 +185,6 @@ var SoundCloudIframeRenderer = {
 				scPlayer.play();
 			}
 
-			// do call stack
 			if (apiStack.length) {
 				for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 
@@ -313,51 +192,44 @@ var SoundCloudIframeRenderer = {
 
 					if (stackItem.type === 'set') {
 						var propName = stackItem.propName,
-						    capName = "" + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-						sc["set" + capName](stackItem.value);
+						sc['set' + capName](stackItem.value);
 					} else if (stackItem.type === 'call') {
 						sc[stackItem.methodName]();
 					}
 				}
 			}
 
-			// SoundCloud properties are async, so we don't fire the event until the property callback fires
 			scPlayer.bind(SC.Widget.Events.PLAY_PROGRESS, function () {
 				paused = false;
 				ended = false;
-
 				scPlayer.getPosition(function (_currentTime) {
 					currentTime = _currentTime / 1000;
 					var event = mejs.Utils.createEvent('timeupdate', sc);
 					mediaElement.dispatchEvent(event);
 				});
 			});
-
 			scPlayer.bind(SC.Widget.Events.PAUSE, function () {
 				paused = true;
-
 				var event = mejs.Utils.createEvent('pause', sc);
 				mediaElement.dispatchEvent(event);
 			});
 			scPlayer.bind(SC.Widget.Events.PLAY, function () {
 				paused = false;
 				ended = false;
-
 				var event = mejs.Utils.createEvent('play', sc);
 				mediaElement.dispatchEvent(event);
 			});
 			scPlayer.bind(SC.Widget.Events.FINISHED, function () {
 				paused = false;
 				ended = true;
-
 				var event = mejs.Utils.createEvent('ended', sc);
 				mediaElement.dispatchEvent(event);
 			});
 			scPlayer.bind(SC.Widget.Events.READY, function () {
 				scPlayer.getDuration(function (_duration) {
 					duration = _duration / 1000;
-
 					var event = mejs.Utils.createEvent('loadedmetadata', sc);
 					mediaElement.dispatchEvent(event);
 				});
@@ -366,7 +238,6 @@ var SoundCloudIframeRenderer = {
 				scPlayer.getDuration(function (loadProgress) {
 					if (duration > 0) {
 						bufferedTime = duration * loadProgress;
-
 						var event = mejs.Utils.createEvent('progress', sc);
 						mediaElement.dispatchEvent(event);
 					}
@@ -379,16 +250,13 @@ var SoundCloudIframeRenderer = {
 				});
 			});
 
-			// give initial events
 			var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
-
 			for (var _i3 = 0, _total3 = initEvents.length; _i3 < _total3; _i3++) {
 				var event = mejs.Utils.createEvent(initEvents[_i3], sc);
 				mediaElement.dispatchEvent(event);
 			}
 		};
 
-		// container for API API
 		scIframe = document.createElement('iframe');
 		scIframe.id = sc.id;
 		scIframe.width = 10;
@@ -406,7 +274,7 @@ var SoundCloudIframeRenderer = {
 			id: sc.id
 		};
 
-		SoundCloudApi.enqueueIframe(scSettings);
+		SoundCloudApi.load(scSettings);
 
 		sc.setSize = function () {};
 		sc.hide = function () {
@@ -428,13 +296,9 @@ var SoundCloudIframeRenderer = {
 	}
 };
 
-/**
- * Register SoundCloud type based on URL structure
- *
- */
 mejs.Utils.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('//soundcloud.com') || url.includes('//w.soundcloud.com') ? 'video/x-soundcloud' : null;
+	return (/\/\/(w\.)?soundcloud.com/i.test(url) ? 'video/x-soundcloud' : null
+	);
 });
 
 mejs.Renderers.add(SoundCloudIframeRenderer);
diff --git a/lib/mejs/renderers/soundcloud.min.js b/lib/mejs/renderers/soundcloud.min.js
index 05878aedb52e364c47aa464df0336e3f015c2cac..01bacf0a2c9b1f119a6aca41d1d3ae8248c9b96c 100644
--- a/lib/mejs/renderers/soundcloud.min.js
+++ b/lib/mejs/renderers/soundcloud.min.js
@@ -1,14 +1,4 @@
 /*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- *//*!
  * MediaElement.js
  * http://www.mediaelementjs.com/
  *
@@ -19,4 +9,4 @@
  * License: MIT
  *
  */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isSDKStarted:!1,isSDKLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isSDKStarted){var a=document.getElementsByTagName("head")[0]||document.documentElement,b=document.createElement("script"),c=!1;b.src="//w.soundcloud.com/player/api.js",b.onload=b.onreadystatechange=function(){c||d.readyState&&"loaded"!==d.readyState&&"complete"!==d.readyState||(c=!0,d.apiReady(),b.onload=b.onreadystatechange=null,b.remove())},a.appendChild(b),d.isSDKStarted=!0}},apiReady:function(){for(d.isLoaded=!0,d.isSDKLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=SC.Widget(a.iframe);window["__ready__"+a.id](b)}},e={name:"soundcloud_iframe",options:{prefix:"soundcloud_iframe"},canPlayType:function(a){return["video/soundcloud","video/x-soundcloud"].includes(a)},create:function(a,b,c){var e={},f=[],g=4,h=a.originalNode.autoplay,i=0,j=0,k=0,l=1,m=!1,n=!0,o=!1,p=null,q=null;e.options=b,e.id=a.id+"_"+b.prefix,e.mediaElement=a;for(var r=mejs.html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);e["get"+c]=function(){if(null!==p){var a=null;switch(b){case"currentTime":return j;case"duration":return i;case"volume":return l;case"paused":return n;case"ended":return o;case"muted":return m;case"buffered":return{start:function(){return 0},end:function(){return k*i},length:1};case"src":return q?q.src:"";case"readyState":return g}return a}return null},e["set"+c]=function(c){if(null!==p)switch(b){case"src":var d="string"==typeof c?c:c[0].src;p.load(d),h&&p.play();break;case"currentTime":p.seekTo(1e3*c);break;case"muted":c?p.setVolume(0):p.setVolume(1),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"volume":p.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",e);a.dispatchEvent(b)},50);break;case"readyState":var g=mejs.Utils.createEvent("canplay",e);a.dispatchEvent(g)}else f.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=mejs.html5media.methods,w=function(a){e[a]=function(){if(null!==p)switch(a){case"play":return p.play();case"pause":return p.pause();case"load":return null}else f.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);window["__ready__"+e.id]=function(b){if(a.scPlayer=p=b,h&&p.play(),f.length)for(var c=0,d=f.length;d>c;c++){var g=f[c];if("set"===g.type){var l=g.propName,m=""+l.substring(0,1).toUpperCase()+l.substring(1);e["set"+m](g.value)}else"call"===g.type&&e[g.methodName]()}p.bind(SC.Widget.Events.PLAY_PROGRESS,function(){n=!1,o=!1,p.getPosition(function(b){j=b/1e3;var c=mejs.Utils.createEvent("timeupdate",e);a.dispatchEvent(c)})}),p.bind(SC.Widget.Events.PAUSE,function(){n=!0;var b=mejs.Utils.createEvent("pause",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.PLAY,function(){n=!1,o=!1;var b=mejs.Utils.createEvent("play",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.FINISHED,function(){n=!1,o=!0;var b=mejs.Utils.createEvent("ended",e);a.dispatchEvent(b)}),p.bind(SC.Widget.Events.READY,function(){p.getDuration(function(b){i=b/1e3;var c=mejs.Utils.createEvent("loadedmetadata",e);a.dispatchEvent(c)})}),p.bind(SC.Widget.Events.LOAD_PROGRESS,function(){p.getDuration(function(b){if(i>0){k=i*b;var c=mejs.Utils.createEvent("progress",e);a.dispatchEvent(c)}}),p.getDuration(function(b){i=b;var c=mejs.Utils.createEvent("loadedmetadata",e);a.dispatchEvent(c)})});for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=mejs.Utils.createEvent(q[r],e);a.dispatchEvent(t)}},q=document.createElement("iframe"),q.id=e.id,q.width=10,q.height=10,q.frameBorder=0,q.style.visibility="hidden",q.src=c[0].src,q.scrolling="no",a.appendChild(q),a.originalNode.style.display="none";var z={iframe:q,id:e.id};return d.enqueueIframe(z),e.setSize=function(){},e.hide=function(){e.pause(),q&&(q.style.display="none")},e.show=function(){q&&(q.style.display="")},e.destroy=function(){p.destroy()},e}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//soundcloud.com")||a.includes("//w.soundcloud.com")?"video/x-soundcloud":null}),mejs.Renderers.add(e)},{}]},{},[1]);
\ No newline at end of file
+!function e(t,n,r){function a(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return a(n||e)},d,d.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof SC?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://w.soundcloud.com/player/api.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=SC.Widget(e.iframe);window["__ready__"+e.id](t)}},a={name:"soundcloud_iframe",options:{prefix:"soundcloud_iframe"},canPlayType:function(e){return~["video/soundcloud","video/x-soundcloud"].indexOf(e.toLowerCase())},create:function(e,t,n){var a={},i=[],s=e.originalNode.autoplay,o=0,u=0,c=0,d=!0,l=!1,p=null,f=null;a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var v=mejs.html5media.properties,m=0,h=v.length;m<h;m++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==p){switch(t){case"currentTime":return u;case"duration":return o;case"volume":return 1;case"paused":return d;case"ended":return l;case"muted":return!1;case"buffered":return{start:function(){return 0},end:function(){return c*o},length:1};case"src":return f?f.src:"";case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==p)switch(t){case"src":var r="string"==typeof n?n:n[0].src;p.load(r),s&&p.play();break;case"currentTime":p.seekTo(1e3*n);break;case"muted":n?p.setVolume(0):p.setVolume(1),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"volume":p.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"readyState":var o=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(o)}else i.push({type:"set",propName:t,value:n})}}(v[m]);for(var y=mejs.html5media.methods,E=0,g=y.length;E<g;E++)!function(e){a[e]=function(){if(null!==p)switch(e){case"play":return p.play();case"pause":return p.pause();case"load":return null}else i.push({type:"call",methodName:e})}}(y[E]);window["__ready__"+a.id]=function(t){if(e.scPlayer=p=t,s&&p.play(),i.length)for(var n=0,r=i.length;n<r;n++){var f=i[n];if("set"===f.type){var v=f.propName,m=""+v.substring(0,1).toUpperCase()+v.substring(1);a["set"+m](f.value)}else"call"===f.type&&a[f.methodName]()}p.bind(SC.Widget.Events.PLAY_PROGRESS,function(){d=!1,l=!1,p.getPosition(function(t){u=t/1e3;var n=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(n)})}),p.bind(SC.Widget.Events.PAUSE,function(){d=!0;var t=mejs.Utils.createEvent("pause",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.PLAY,function(){d=!1,l=!1;var t=mejs.Utils.createEvent("play",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.FINISHED,function(){d=!1,l=!0;var t=mejs.Utils.createEvent("ended",a);e.dispatchEvent(t)}),p.bind(SC.Widget.Events.READY,function(){p.getDuration(function(t){o=t/1e3;var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)})}),p.bind(SC.Widget.Events.LOAD_PROGRESS,function(){p.getDuration(function(t){if(o>0){c=o*t;var n=mejs.Utils.createEvent("progress",a);e.dispatchEvent(n)}}),p.getDuration(function(t){o=t;var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)})});for(var h=["rendererready","loadeddata","loadedmetadata","canplay"],y=0,E=h.length;y<E;y++){var g=mejs.Utils.createEvent(h[y],a);e.dispatchEvent(g)}},(f=document.createElement("iframe")).id=a.id,f.width=10,f.height=10,f.frameBorder=0,f.style.visibility="hidden",f.src=n[0].src,f.scrolling="no",e.appendChild(f),e.originalNode.style.display="none";var S={iframe:f,id:a.id};return r.load(S),a.setSize=function(){},a.hide=function(){a.pause(),f&&(f.style.display="none")},a.show=function(){f&&(f.style.display="")},a.destroy=function(){p.destroy()},a}};mejs.Utils.typeChecks.push(function(e){return/\/\/(w\.)?soundcloud.com/i.test(e)?"video/x-soundcloud":null}),mejs.Renderers.add(a)},{}]},{},[1]);
\ No newline at end of file
diff --git a/lib/mejs/renderers/twitch.js b/lib/mejs/renderers/twitch.js
index 32a2ee42218484ef6f6d6e35ae99640bda14bf37..c639c72528fa85d9f2ecf0ec597937b620aacde0 100644
--- a/lib/mejs/renderers/twitch.js
+++ b/lib/mejs/renderers/twitch.js
@@ -11,132 +11,43 @@
  */(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})({1:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * Twitch renderer
- *
- * Uses <iframe> approach and uses Twitch API to manipulate it.
- * @see https://github.com/justintv/Twitch-API/blob/master/embed-video.md
- */
-
-var twitchApi = {
-	/**
-  * @type {Boolean}
-  */
-	isIframeStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isIframeLoaded: false,
-	/**
-  * @type {Array}
-  */
-	iframeQueue: [],
-
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	enqueueIframe: function enqueueIframe(settings) {
-
-		// Check whether Twitch API is already loaded.
-		twitchApi.isLoaded = typeof Twitch !== 'undefined';
-
-		if (twitchApi.isLoaded) {
-			twitchApi.createIframe(settings);
-		} else {
-			twitchApi.loadIframeApi();
-			twitchApi.iframeQueue.push(settings);
-		}
-	},
-
-	/**
-  * Load Twitch API script on the header of the document
-  *
-  */
-	loadIframeApi: function loadIframeApi() {
-		if (!twitchApi.isIframeStarted) {
-
-			var script = document.createElement('script'),
-			    firstScriptTag = document.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = '//player.twitch.tv/js/embed/v1.js';
-
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
-					done = true;
-					twitchApi.iFrameReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			twitchApi.isIframeStarted = true;
-		}
-	},
+var TwitchApi = {
 
-	/**
-  * Process queue of Twitch <iframe> element creation
-  *
-  */
-	iFrameReady: function iFrameReady() {
+	promise: null,
 
-		twitchApi.isLoaded = true;
-		twitchApi.isIframeLoaded = true;
+	load: function load(settings) {
 
-		while (twitchApi.iframeQueue.length > 0) {
-			var settings = twitchApi.iframeQueue.pop();
-			twitchApi.createIframe(settings);
+		if (typeof Twitch !== 'undefined') {
+			TwitchApi._createPlayer(settings);
+		} else {
+			TwitchApi.promise = TwitchApi.promise || mejs.Utils.loadScript('https://player.twitch.tv/js/embed/v1.js');
+			TwitchApi.promise.then(function () {
+				TwitchApi._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of Twitch API player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	createIframe: function createIframe(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = new Twitch.Player(settings.id, settings);
 		window['__ready__' + settings.id](player);
 	},
 
-	/**
-  * Extract ID from Twitch to be loaded through API
-  * Valid URL format(s):
-  *  - https://player.twitch.tv/?video=40464143
-  *  - https://www.twitch.tv/40464143
-  *  - https://player.twitch.tv/?channel=monserrat
-  *  - https://www.twitch.tv/monserrat
-  *
-  * @param {String} url - Twitch full URL to grab the number Id of the source
-  * @return {int}
-  */
 	getTwitchId: function getTwitchId(url) {
 
 		var twitchId = '';
 
 		if (url.indexOf('?') > 0) {
-			twitchId = twitchApi.getTwitchIdFromParam(url);
+			twitchId = TwitchApi.getTwitchIdFromParam(url);
 			if (twitchId === '') {
-				twitchId = twitchApi.getTwitchIdFromUrl(url);
+				twitchId = TwitchApi.getTwitchIdFromUrl(url);
 			}
 		} else {
-			twitchId = twitchApi.getTwitchIdFromUrl(url);
+			twitchId = TwitchApi.getTwitchIdFromUrl(url);
 		}
 
 		return twitchId;
 	},
 
-	/**
-  * Get ID from URL with format:
-  *  - https://player.twitch.tv/?channel=monserrat
-  *  - https://player.twitch.tv/?video=40464143
-  *
-  * @param {String} url
-  * @returns {string}
-  */
 	getTwitchIdFromParam: function getTwitchIdFromParam(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -150,10 +61,10 @@ var twitchApi = {
 
 		for (var i = 0, total = parameters.length; i < total; i++) {
 			var paramParts = parameters[i].split('=');
-			if (paramParts[0].includes('channel=')) {
+			if (~paramParts[0].indexOf('channel=')) {
 				twitchId = paramParts[1];
 				break;
-			} else if (paramParts[0].includes('video=')) {
+			} else if (~paramParts[0].indexOf('video=')) {
 				twitchId = 'v' + paramParts[1];
 				break;
 			}
@@ -162,14 +73,6 @@ var twitchApi = {
 		return twitchId;
 	},
 
-	/**
-  * Get ID from URL with formats:
-  *  - https://www.twitch.tv/40464143
-  *  - https://www.twitch.tv/monserrat
-  *
-  * @param {String} url
-  * @return {?String}
-  */
 	getTwitchIdFromUrl: function getTwitchIdFromUrl(url) {
 
 		if (url === undefined || url === null || !url.trim().length) {
@@ -179,18 +82,13 @@ var twitchApi = {
 		var parts = url.split('?');
 		url = parts[0];
 		var id = url.substring(url.lastIndexOf('/') + 1);
-		return id.match(/^\d+$/i) !== null ? 'v' + id : id;
+		return (/^\d+$/i.test(id) !== null ? 'v' + id : id
+		);
 	},
 
-	/**
-  * Determine whether media is channel or video based on Twitch ID
-  *
-  * @see getTwitchId()
-  * @param {String} id
-  * @returns {String}
-  */
 	getTwitchType: function getTwitchType(id) {
-		return id.match(/^v\d+/i) !== null ? 'video' : 'channel';
+		return (/^v\d+/i.test(id) !== null ? 'video' : 'channel'
+		);
 	}
 };
 
@@ -201,31 +99,15 @@ var TwitchIframeRenderer = {
 		prefix: 'twitch_iframe'
 	},
 
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
 	canPlayType: function canPlayType(type) {
-		return ['video/twitch', 'video/x-twitch'].includes(type);
+		return ~['video/twitch', 'video/x-twitch'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
-
-		// API objects
 		var twitch = {},
 		    apiStack = [],
 		    readyState = 4,
-		    twitchId = twitchApi.getTwitchId(mediaFiles[0].src);
+		    twitchId = TwitchApi.getTwitchId(mediaFiles[0].src);
 
 		var twitchPlayer = null,
 		    paused = true,
@@ -239,19 +121,15 @@ var TwitchIframeRenderer = {
 		twitch.id = mediaElement.id + '_' + options.prefix;
 		twitch.mediaElement = mediaElement;
 
-		// wrappers for get/set
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
-			// add to flash state that we will store
-
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
 			twitch['get' + capName] = function () {
 				if (twitchPlayer !== null) {
 					var value = null;
 
-					// figure out how to get Twitch dta here
 					switch (propName) {
 						case 'currentTime':
 							time = twitchPlayer.getCurrentTime();
@@ -288,7 +166,7 @@ var TwitchIframeRenderer = {
 							};
 						case 'src':
 
-							return twitchApi.getTwitchType(twitchId) === 'channel' ? twitchPlayer.getChannel() : twitchPlayer.getVideo();
+							return TwitchApi.getTwitchType(twitchId) === 'channel' ? twitchPlayer.getChannel() : twitchPlayer.getVideo();
 
 						case 'readyState':
 							return readyState;
@@ -303,15 +181,13 @@ var TwitchIframeRenderer = {
 			twitch['set' + capName] = function (value) {
 
 				if (twitchPlayer !== null) {
-
-					// do something
 					switch (propName) {
 
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src,
-							    videoId = twitchApi.getTwitchId(url);
+							    videoId = TwitchApi.getTwitchId(url);
 
-							if (twitchApi.getTwitchType(twitchId) === 'channel') {
+							if (TwitchApi.getTwitchType(twitchId) === 'channel') {
 								twitchPlayer.setChannel(videoId);
 							} else {
 								twitchPlayer.setVideo(videoId);
@@ -352,7 +228,6 @@ var TwitchIframeRenderer = {
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -362,16 +237,11 @@ var TwitchIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-
-			// run the method on the native HTMLMediaElement
 			twitch[methodName] = function () {
 
 				if (twitchPlayer !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							paused = false;
@@ -393,12 +263,6 @@ var TwitchIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		/**
-   * Dispatch a list of events
-   *
-   * @private
-   * @param {Array} events
-   */
 		function sendEvents(events) {
 			for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) {
 				var event = mejs.Utils.createEvent(events[_i2], twitch);
@@ -406,12 +270,10 @@ var TwitchIframeRenderer = {
 			}
 		}
 
-		// Initial method to register all Twitch events when initializing <iframe>
 		window['__ready__' + twitch.id] = function (_twitchPlayer) {
 
 			mediaElement.twitchPlayer = twitchPlayer = _twitchPlayer;
 
-			// do call stack
 			if (apiStack.length) {
 				for (var _i3 = 0, _total3 = apiStack.length; _i3 < _total3; _i3++) {
 
@@ -432,7 +294,6 @@ var TwitchIframeRenderer = {
 			twitchIframe.style.width = '100%';
 			twitchIframe.style.height = '100%';
 
-			// a few more events
 			var events = ['mouseover', 'mouseout'];
 
 			var assignEvents = function assignEvents(e) {
@@ -446,7 +307,6 @@ var TwitchIframeRenderer = {
 
 			var timer = void 0;
 
-			// Twitch events
 			twitchPlayer.addEventListener('ready', function () {
 				paused = false;
 				ended = false;
@@ -460,7 +320,6 @@ var TwitchIframeRenderer = {
 				ended = false;
 				sendEvents(['play', 'playing', 'progress']);
 
-				// Workaround to update progress bar
 				timer = setInterval(function () {
 					twitchPlayer.getCurrentTime();
 					sendEvents(['timeupdate']);
@@ -483,11 +342,10 @@ var TwitchIframeRenderer = {
 			});
 		};
 
-		// CREATE Twitch
 		var height = mediaElement.originalNode.height,
 		    width = mediaElement.originalNode.width,
 		    twitchContainer = document.createElement('div'),
-		    type = twitchApi.getTwitchType(twitchId),
+		    type = TwitchApi.getTwitchType(twitchId),
 		    twitchSettings = {
 			id: twitch.id,
 			width: width,
@@ -505,11 +363,10 @@ var TwitchIframeRenderer = {
 		mediaElement.originalNode.style.display = 'none';
 		mediaElement.originalNode.autoplay = false;
 
-		// send it off for async loading and creation
-		twitchApi.enqueueIframe(twitchSettings);
+		TwitchApi.load(twitchSettings);
 
 		twitch.setSize = function (width, height) {
-			if (twitchApi !== null && !isNaN(width) && !isNaN(height)) {
+			if (TwitchApi !== null && !isNaN(width) && !isNaN(height)) {
 				twitchContainer.setAttribute('width', width);
 				twitchContainer.setAttribute('height', height);
 			}
@@ -528,8 +385,8 @@ var TwitchIframeRenderer = {
 };
 
 mejs.Utils.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('//www.twitch.tv') || url.includes('//player.twitch.tv') ? 'video/x-twitch' : null;
+	return (/\/\/(www|player).twitch.tv/i.test(url) ? 'video/x-twitch' : null
+	);
 });
 
 mejs.Renderers.add(TwitchIframeRenderer);
diff --git a/lib/mejs/renderers/twitch.min.js b/lib/mejs/renderers/twitch.min.js
index 3d58460350e37c480040cdb7063ff3bc1f49d68e..1035c87901744e75b175a0240689ce4ddb4d02ed 100644
--- a/lib/mejs/renderers/twitch.min.js
+++ b/lib/mejs/renderers/twitch.min.js
@@ -1,14 +1,4 @@
 /*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- *//*!
  * MediaElement.js
  * http://www.mediaelementjs.com/
  *
@@ -19,4 +9,4 @@
  * License: MIT
  *
  */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded="undefined"!=typeof Twitch,d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isIframeStarted){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0],c=!1;a.src="//player.twitch.tv/js/embed/v1.js",a.onload=a.onreadystatechange=function(){c||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(c=!0,d.iFrameReady(),a.onload=a.onreadystatechange=null)},b.parentNode.insertBefore(a,b),d.isIframeStarted=!0}},iFrameReady:function(){for(d.isLoaded=!0,d.isIframeLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=new Twitch.Player(a.id,a);window["__ready__"+a.id](b)},getTwitchId:function(a){var b="";return a.indexOf("?")>0?(b=d.getTwitchIdFromParam(a),""===b&&(b=d.getTwitchIdFromUrl(a))):b=d.getTwitchIdFromUrl(a),b},getTwitchIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if(g[0].includes("channel=")){d=g[1];break}if(g[0].includes("video=")){d="v"+g[1];break}}return d},getTwitchIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");a=b[0];var c=a.substring(a.lastIndexOf("/")+1);return null!==c.match(/^\d+$/i)?"v"+c:c},getTwitchType:function(a){return null!==a.match(/^v\d+/i)?"video":"channel"}},e={name:"twitch_iframe",options:{prefix:"twitch_iframe"},canPlayType:function(a){return["video/twitch","video/x-twitch"].includes(a)},create:function(a,b,c){function e(b){for(var c=0,d=b.length;d>c;c++){var e=mejs.Utils.createEvent(b[c],f);a.dispatchEvent(e)}}var f={},g=[],h=4,i=d.getTwitchId(c[0].src),j=null,k=!0,l=!1,m=!1,n=1,o=1/0,p=0;f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=mejs.html5media.properties,r=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);f["get"+c]=function(){if(null!==j){var a=null;switch(b){case"currentTime":return p=j.getCurrentTime();case"duration":return o=j.getDuration();case"volume":return n=j.getVolume();case"paused":return k=j.isPaused();case"ended":return l=j.getEnded();case"muted":return j.getMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return"channel"===d.getTwitchType(i)?j.getChannel():j.getVideo();case"readyState":return h}return a}return null},f["set"+c]=function(c){if(null!==j)switch(b){case"src":var e="string"==typeof c?c:c[0].src,h=d.getTwitchId(e);"channel"===d.getTwitchType(i)?j.setChannel(h):j.setVideo(h);break;case"currentTime":j.seek(c),setTimeout(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},50);break;case"muted":j.setMuted(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"volume":n=c,j.setVolume(c),setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50);break;case"readyState":var k=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(k)}else g.push({type:"set",propName:b,value:c})}},s=0,t=q.length;t>s;s++)r(q[s]);for(var u=mejs.html5media.methods,v=function(a){f[a]=function(){if(null!==j)switch(a){case"play":return k=!1,j.play();case"pause":return k=!0,j.pause();case"load":return null}else g.push({type:"call",methodName:a})}},w=0,x=u.length;x>w;w++)v(u[w]);window["__ready__"+f.id]=function(b){if(a.twitchPlayer=j=b,g.length)for(var c=0,d=g.length;d>c;c++){var h=g[c];if("set"===h.type){var i=h.propName,n=""+i.substring(0,1).toUpperCase()+i.substring(1);f["set"+n](h.value)}else"call"===h.type&&f[h.methodName]()}var o=document.getElementById(f.id).firstChild;o.style.width="100%",o.style.height="100%";for(var p=["mouseover","mouseout"],q=function(b){var c=createEvent(b.type,f);a.dispatchEvent(c)},r=0,s=p.length;s>r;r++)o.addEventListener(p[r],q,!1);var t=void 0;j.addEventListener("ready",function(){k=!1,l=!1,e(["rendererready","loadedmetadata","loadeddata","canplay"])}),j.addEventListener("play",function(){m||(m=!0),k=!1,l=!1,e(["play","playing","progress"]),t=setInterval(function(){j.getCurrentTime(),e(["timeupdate"])},250)}),j.addEventListener("pause",function(){k=!0,l=!1,j.getEnded()||e(["pause"])}),j.addEventListener("ended",function(){k=!0,l=!0,e(["ended"]),clearInterval(t),m=!1,t=null})};var y=a.originalNode.height,z=a.originalNode.width,A=document.createElement("div"),B=d.getTwitchType(i),C={id:f.id,width:z,height:y,playsinline:!1,autoplay:a.originalNode.autoplay};return C[B]=i,A.id=f.id,A.style.width="100%",A.style.height="100%",a.originalNode.parentNode.insertBefore(A,a.originalNode),a.originalNode.style.display="none",a.originalNode.autoplay=!1,d.enqueueIframe(C),f.setSize=function(a,b){null===d||isNaN(a)||isNaN(b)||(A.setAttribute("width",a),A.setAttribute("height",b))},f.hide=function(){f.pause(),A.style.display="none"},f.show=function(){A.style.display=""},f.destroy=function(){},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.twitch.tv")||a.includes("//player.twitch.tv")?"video/x-twitch":null}),mejs.Renderers.add(e)},{}]},{},[1]);
\ No newline at end of file
+!function e(t,n,r){function i(s,u){if(!n[s]){if(!t[s]){var o="function"==typeof require&&require;if(!u&&o)return o(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return i(n||e)},d,d.exports,e,t,n,r)}return n[s].exports}for(var a="function"==typeof require&&require,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof Twitch?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://player.twitch.tv/js/embed/v1.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=new Twitch.Player(e.id,e);window["__ready__"+e.id](t)},getTwitchId:function(e){var t="";return e.indexOf("?")>0?""===(t=r.getTwitchIdFromParam(e))&&(t=r.getTwitchIdFromUrl(e)):t=r.getTwitchIdFromUrl(e),t},getTwitchIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",r=0,i=t.length;r<i;r++){var a=t[r].split("=");if(~a[0].indexOf("channel=")){n=a[1];break}if(~a[0].indexOf("video=")){n="v"+a[1];break}}return n},getTwitchIdFromUrl:function(e){if(void 0===e||null===e||!e.trim().length)return null;var t=(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1);return null!==/^\d+$/i.test(t)?"v"+t:t},getTwitchType:function(e){return null!==/^v\d+/i.test(e)?"video":"channel"}},i={name:"twitch_iframe",options:{prefix:"twitch_iframe"},canPlayType:function(e){return~["video/twitch","video/x-twitch"].indexOf(e.toLowerCase())},create:function(e,t,n){function i(t){for(var n=0,r=t.length;n<r;n++){var i=mejs.Utils.createEvent(t[n],a);e.dispatchEvent(i)}}var a={},s=[],u=r.getTwitchId(n[0].src),o=null,l=!0,d=!1,c=!1,h=1,p=1/0,f=0;a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var v=mejs.html5media.properties,m=0,g=v.length;m<g;m++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==o){switch(t){case"currentTime":return f=o.getCurrentTime();case"duration":return p=o.getDuration();case"volume":return h=o.getVolume();case"paused":return l=o.isPaused();case"ended":return d=o.getEnded();case"muted":return o.getMuted();case"buffered":return{start:function(){return 0},end:function(){return 0},length:1};case"src":return"channel"===r.getTwitchType(u)?o.getChannel():o.getVideo();case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==o)switch(t){case"src":var i="string"==typeof n?n:n[0].src,l=r.getTwitchId(i);"channel"===r.getTwitchType(u)?o.setChannel(l):o.setVideo(l);break;case"currentTime":o.seek(n),setTimeout(function(){var t=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(t)},50);break;case"muted":o.setMuted(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"volume":h=n,o.setVolume(n),setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50);break;case"readyState":var d=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(d)}else s.push({type:"set",propName:t,value:n})}}(v[m]);for(var y=mejs.html5media.methods,w=0,T=y.length;w<T;w++)!function(e){a[e]=function(){if(null!==o)switch(e){case"play":return l=!1,o.play();case"pause":return l=!0,o.pause();case"load":return null}else s.push({type:"call",methodName:e})}}(y[w]);window["__ready__"+a.id]=function(t){if(e.twitchPlayer=o=t,s.length)for(var n=0,r=s.length;n<r;n++){var u=s[n];if("set"===u.type){var h=u.propName,p=""+h.substring(0,1).toUpperCase()+h.substring(1);a["set"+p](u.value)}else"call"===u.type&&a[u.methodName]()}var f=document.getElementById(a.id).firstChild;f.style.width="100%",f.style.height="100%";for(var v=["mouseover","mouseout"],m=function(t){var n=createEvent(t.type,a);e.dispatchEvent(n)},g=0,y=v.length;g<y;g++)f.addEventListener(v[g],m,!1);var w=void 0;o.addEventListener("ready",function(){l=!1,d=!1,i(["rendererready","loadedmetadata","loadeddata","canplay"])}),o.addEventListener("play",function(){c||(c=!0),l=!1,d=!1,i(["play","playing","progress"]),w=setInterval(function(){o.getCurrentTime(),i(["timeupdate"])},250)}),o.addEventListener("pause",function(){l=!0,d=!1,o.getEnded()||i(["pause"])}),o.addEventListener("ended",function(){l=!0,d=!0,i(["ended"]),clearInterval(w),c=!1,w=null})};var E=e.originalNode.height,N=e.originalNode.width,_=document.createElement("div"),b=r.getTwitchType(u),U={id:a.id,width:N,height:E,playsinline:!1,autoplay:e.originalNode.autoplay};return U[b]=u,_.id=a.id,_.style.width="100%",_.style.height="100%",e.originalNode.parentNode.insertBefore(_,e.originalNode),e.originalNode.style.display="none",e.originalNode.autoplay=!1,r.load(U),a.setSize=function(e,t){null===r||isNaN(e)||isNaN(t)||(_.setAttribute("width",e),_.setAttribute("height",t))},a.hide=function(){a.pause(),_.style.display="none"},a.show=function(){_.style.display=""},a.destroy=function(){},a}};mejs.Utils.typeChecks.push(function(e){return/\/\/(www|player).twitch.tv/i.test(e)?"video/x-twitch":null}),mejs.Renderers.add(i)},{}]},{},[1]);
\ No newline at end of file
diff --git a/lib/mejs/renderers/vimeo.js b/lib/mejs/renderers/vimeo.js
index 14ab889dc10087e1d778523d98a5bb496df4da00..4a07de895343f128753b269a0a5e75255a2c1c4d 100644
--- a/lib/mejs/renderers/vimeo.js
+++ b/lib/mejs/renderers/vimeo.js
@@ -11,119 +11,34 @@
  */(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})({1:[function(_dereq_,module,exports){
 'use strict';
 
-/**
- * Vimeo renderer
- *
- * Uses <iframe> approach and uses Vimeo API to manipulate it.
- * All Vimeo calls return a Promise so this renderer accounts for that
- * to update all the necessary values to interact with MediaElement player.
- * Note: IE8 implements ECMAScript 3 that does not allow bare keywords in dot notation;
- * that's why instead of using .catch ['catch'] is being used.
- * @see https://github.com/vimeo/player.js
- *
- */
-
-var vimeoApi = {
-
-	/**
-  * @type {Boolean}
-  */
-	isIframeStarted: false,
-	/**
-  * @type {Boolean}
-  */
-	isIframeLoaded: false,
-	/**
-  * @type {Array}
-  */
-	iframeQueue: [],
-
-	/**
-  * Create a queue to prepare the creation of <iframe>
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	enqueueIframe: function enqueueIframe(settings) {
-
-		if (vimeoApi.isLoaded) {
-			vimeoApi.createIframe(settings);
-		} else {
-			vimeoApi.loadIframeApi();
-			vimeoApi.iframeQueue.push(settings);
-		}
-	},
-
-	/**
-  * Load Vimeo API script on the header of the document
-  *
-  */
-	loadIframeApi: function loadIframeApi() {
-
-		if (!vimeoApi.isIframeStarted) {
-
-			var script = document.createElement('script'),
-			    firstScriptTag = document.getElementsByTagName('script')[0];
-
-			var done = false;
-
-			script.src = '//player.vimeo.com/api/player.js';
+var VimeoApi = {
 
-			// Attach handlers for all browsers
-			script.onload = script.onreadystatechange = function () {
-				if (!done && (!undefined.readyState || undefined.readyState === undefined || undefined.readyState === 'loaded' || undefined.readyState === 'complete')) {
-					done = true;
-					vimeoApi.iFrameReady();
-					script.onload = script.onreadystatechange = null;
-				}
-			};
-			firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
-			vimeoApi.isIframeStarted = true;
-		}
-	},
-
-	/**
-  * Process queue of Vimeo <iframe> element creation
-  *
-  */
-	iFrameReady: function iFrameReady() {
+	promise: null,
 
-		vimeoApi.isLoaded = true;
-		vimeoApi.isIframeLoaded = true;
+	load: function load(settings) {
 
-		while (vimeoApi.iframeQueue.length > 0) {
-			var settings = vimeoApi.iframeQueue.pop();
-			vimeoApi.createIframe(settings);
+		if (typeof Vimeo !== 'undefined') {
+			VimeoApi._createPlayer(settings);
+		} else {
+			VimeoApi.promise = VimeoApi.promise || mejs.Utils.loadScript('https://player.vimeo.com/api/player.js');
+			VimeoApi.promise.then(function () {
+				VimeoApi._createPlayer(settings);
+			});
 		}
 	},
 
-	/**
-  * Create a new instance of Vimeo API player and trigger a custom event to initialize it
-  *
-  * @param {Object} settings - an object with settings needed to create <iframe>
-  */
-	createIframe: function createIframe(settings) {
+	_createPlayer: function _createPlayer(settings) {
 		var player = new Vimeo.Player(settings.iframe);
 		window['__ready__' + settings.id](player);
 	},
 
-	/**
-  * Extract numeric value from Vimeo to be loaded through API
-  * Valid URL format(s):
-  *  - https://player.vimeo.com/video/59777392
-  *  - https://vimeo.com/59777392
-  *
-  * @param {String} url - Vimeo full URL to grab the number Id of the source
-  * @return {int}
-  */
 	getVimeoId: function getVimeoId(url) {
 		if (url === undefined || url === null) {
 			return null;
 		}
 
 		var parts = url.split('?');
-
 		url = parts[0];
-
 		return parseInt(url.substring(url.lastIndexOf('/') + 1));
 	}
 };
@@ -131,31 +46,15 @@ var vimeoApi = {
 var vimeoIframeRenderer = {
 
 	name: 'vimeo_iframe',
-
 	options: {
 		prefix: 'vimeo_iframe'
 	},
-	/**
-  * Determine if a specific element type can be played with this render
-  *
-  * @param {String} type
-  * @return {Boolean}
-  */
+
 	canPlayType: function canPlayType(type) {
-		return ['video/vimeo', 'video/x-vimeo'].includes(type);
+		return ~['video/vimeo', 'video/x-vimeo'].indexOf(type.toLowerCase());
 	},
 
-	/**
-  * Create the player instance and add all native events/methods/properties as possible
-  *
-  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
-  * @param {Object} options All the player configuration options passed through constructor
-  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
-  * @return {Object}
-  */
 	create: function create(mediaElement, options, mediaFiles) {
-
-		// exposed object
 		var apiStack = [],
 		    vimeo = {},
 		    readyState = 4;
@@ -174,20 +73,12 @@ var vimeoIframeRenderer = {
 		vimeo.id = mediaElement.id + '_' + options.prefix;
 		vimeo.mediaElement = mediaElement;
 
-		/**
-   * Generate custom errors for Vimeo based on the API specifications
-   *
-   * @see https://github.com/vimeo/player.js#error
-   * @param {Object} error
-   * @param {Object} target
-   */
 		var errorHandler = function errorHandler(error, target) {
 			var event = mejs.Utils.createEvent('error', target);
 			event.message = error.name + ': ' + error.message;
 			mediaElement.dispatchEvent(event);
 		};
 
-		// wrappers for get/set
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
@@ -232,7 +123,6 @@ var vimeoIframeRenderer = {
 						case 'readyState':
 							return readyState;
 					}
-
 					return value;
 				} else {
 					return null;
@@ -240,25 +130,20 @@ var vimeoIframeRenderer = {
 			};
 
 			vimeo['set' + capName] = function (value) {
-
 				if (vimeoPlayer !== null) {
-
-					// do something
 					switch (propName) {
-
 						case 'src':
 							var _url2 = typeof value === 'string' ? value : value[0].src,
-							    videoId = vimeoApi.getVimeoId(_url2);
+							    videoId = VimeoApi.getVimeoId(_url2);
 
 							vimeoPlayer.loadVideo(videoId).then(function () {
 								if (mediaElement.originalNode.autoplay) {
 									vimeoPlayer.play();
 								}
-							})['catch'](function (error) {
+							}).catch(function (error) {
 								errorHandler(error, vimeo);
 							});
 							break;
-
 						case 'currentTime':
 							vimeoPlayer.setCurrentTime(value).then(function () {
 								currentTime = value;
@@ -266,11 +151,10 @@ var vimeoIframeRenderer = {
 									var event = mejs.Utils.createEvent('timeupdate', vimeo);
 									mediaElement.dispatchEvent(event);
 								}, 50);
-							})['catch'](function (error) {
+							}).catch(function (error) {
 								errorHandler(error, vimeo);
 							});
 							break;
-
 						case 'volume':
 							vimeoPlayer.setVolume(value).then(function () {
 								volume = value;
@@ -279,13 +163,12 @@ var vimeoIframeRenderer = {
 									var event = mejs.Utils.createEvent('volumechange', vimeo);
 									mediaElement.dispatchEvent(event);
 								}, 50);
-							})['catch'](function (error) {
+							}).catch(function (error) {
 								errorHandler(error, vimeo);
 							});
 							break;
-
 						case 'loop':
-							vimeoPlayer.setLoop(value)['catch'](function (error) {
+							vimeoPlayer.setLoop(value).catch(function (error) {
 								errorHandler(error, vimeo);
 							});
 							break;
@@ -297,7 +180,7 @@ var vimeoIframeRenderer = {
 										var event = mejs.Utils.createEvent('volumechange', vimeo);
 										mediaElement.dispatchEvent(event);
 									}, 50);
-								})['catch'](function (error) {
+								}).catch(function (error) {
 									errorHandler(error, vimeo);
 								});
 							} else {
@@ -307,7 +190,7 @@ var vimeoIframeRenderer = {
 										var event = mejs.Utils.createEvent('volumechange', vimeo);
 										mediaElement.dispatchEvent(event);
 									}, 50);
-								})['catch'](function (error) {
+								}).catch(function (error) {
 									errorHandler(error, vimeo);
 								});
 							}
@@ -321,7 +204,6 @@ var vimeoIframeRenderer = {
 							break;
 					}
 				} else {
-					// store for after "READY" event fires
 					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
 			};
@@ -331,14 +213,10 @@ var vimeoIframeRenderer = {
 			assignGettersSetters(props[i]);
 		}
 
-		// add wrappers for native methods
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
 			vimeo[methodName] = function () {
-
 				if (vimeoPlayer !== null) {
-
-					// DO method
 					switch (methodName) {
 						case 'play':
 							paused = false;
@@ -348,7 +226,6 @@ var vimeoIframeRenderer = {
 							return vimeoPlayer.pause();
 						case 'load':
 							return null;
-
 					}
 				} else {
 					apiStack.push({ type: 'call', methodName: methodName });
@@ -360,15 +237,12 @@ var vimeoIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		// Initial method to register all Vimeo events when initializing <iframe>
 		window['__ready__' + vimeo.id] = function (_vimeoPlayer) {
 
 			mediaElement.vimeoPlayer = vimeoPlayer = _vimeoPlayer;
 
-			// do call stack
 			if (apiStack.length) {
 				for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
-
 					var stackItem = apiStack[_i2];
 
 					if (stackItem.type === 'set') {
@@ -385,7 +259,6 @@ var vimeoIframeRenderer = {
 			var vimeoIframe = document.getElementById(vimeo.id);
 			var events = void 0;
 
-			// a few more events
 			events = ['mouseover', 'mouseout'];
 
 			var assignEvents = function assignEvents(e) {
@@ -397,11 +270,8 @@ var vimeoIframeRenderer = {
 				vimeoIframe.addEventListener(events[_i3], assignEvents, false);
 			}
 
-			// Vimeo events
 			vimeoPlayer.on('loaded', function () {
-
 				vimeoPlayer.getDuration().then(function (loadProgress) {
-
 					duration = loadProgress;
 
 					if (duration > 0) {
@@ -410,14 +280,12 @@ var vimeoIframeRenderer = {
 
 					var event = mejs.Utils.createEvent('loadedmetadata', vimeo);
 					mediaElement.dispatchEvent(event);
-				})['catch'](function (error) {
+				}).catch(function (error) {
 					errorHandler(error, vimeo);
 				});
 			});
-
 			vimeoPlayer.on('progress', function () {
 				vimeoPlayer.getDuration().then(function (loadProgress) {
-
 					duration = loadProgress;
 
 					if (duration > 0) {
@@ -426,7 +294,7 @@ var vimeoIframeRenderer = {
 
 					var event = mejs.Utils.createEvent('progress', vimeo);
 					mediaElement.dispatchEvent(event);
-				})['catch'](function (error) {
+				}).catch(function (error) {
 					errorHandler(error, vimeo);
 				});
 			});
@@ -436,7 +304,7 @@ var vimeoIframeRenderer = {
 
 					var event = mejs.Utils.createEvent('timeupdate', vimeo);
 					mediaElement.dispatchEvent(event);
-				})['catch'](function (error) {
+				}).catch(function (error) {
 					errorHandler(error, vimeo);
 				});
 			});
@@ -461,7 +329,6 @@ var vimeoIframeRenderer = {
 				mediaElement.dispatchEvent(event);
 			});
 
-			// give initial events
 			events = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
 
 			for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) {
@@ -473,10 +340,9 @@ var vimeoIframeRenderer = {
 		var height = mediaElement.originalNode.height,
 		    width = mediaElement.originalNode.width,
 		    vimeoContainer = document.createElement('iframe'),
-		    standardUrl = '//player.vimeo.com/video/' + vimeoApi.getVimeoId(mediaFiles[0].src),
-		    queryArgs = mediaFiles[0].src.includes('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : '';
+		    standardUrl = '//player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src),
+		    queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : '';
 
-		// Create Vimeo <iframe> markup
 		vimeoContainer.setAttribute('id', vimeo.id);
 		vimeoContainer.setAttribute('width', width);
 		vimeoContainer.setAttribute('height', height);
@@ -489,7 +355,7 @@ var vimeoIframeRenderer = {
 		mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode);
 		mediaElement.originalNode.style.display = 'none';
 
-		vimeoApi.enqueueIframe({
+		VimeoApi.load({
 			iframe: vimeoContainer,
 			id: vimeo.id
 		});
@@ -512,16 +378,11 @@ var vimeoIframeRenderer = {
 
 		return vimeo;
 	}
-
 };
 
-/**
- * Register Vimeo type based on URL structure
- *
- */
 mejs.Utils.typeChecks.push(function (url) {
-	url = url.toLowerCase();
-	return url.includes('//player.vimeo') || url.includes('vimeo.com') ? 'video/x-vimeo' : null;
+	return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url) ? 'video/x-vimeo' : null
+	);
 });
 
 mejs.Renderers.add(vimeoIframeRenderer);
diff --git a/lib/mejs/renderers/vimeo.min.js b/lib/mejs/renderers/vimeo.min.js
index c8f11b5e44fc376a73629e9110be7334e5acb7bf..0ea08aaec7bd46771394e30a4b43f936c3981cae 100644
--- a/lib/mejs/renderers/vimeo.min.js
+++ b/lib/mejs/renderers/vimeo.min.js
@@ -1,14 +1,4 @@
 /*!
- * MediaElement.js
- * http://www.mediaelementjs.com/
- *
- * Wrapper that mimics native HTML5 MediaElement (audio and video)
- * using a variety of technologies (pure JavaScript, Flash, iframe)
- *
- * Copyright 2010-2017, John Dyer (http://j.hn/)
- * License: MIT
- *
- *//*!
  * MediaElement.js
  * http://www.mediaelementjs.com/
  *
@@ -19,4 +9,4 @@
  * License: MIT
  *
  */
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){d.isLoaded?d.createIframe(a):(d.loadIframeApi(),d.iframeQueue.push(a))},loadIframeApi:function(){if(!d.isIframeStarted){var a=document.createElement("script"),b=document.getElementsByTagName("script")[0],c=!1;a.src="//player.vimeo.com/api/player.js",a.onload=a.onreadystatechange=function(){c||(void 0).readyState&&void 0!==(void 0).readyState&&"loaded"!==(void 0).readyState&&"complete"!==(void 0).readyState||(c=!0,d.iFrameReady(),a.onload=a.onreadystatechange=null)},b.parentNode.insertBefore(a,b),d.isIframeStarted=!0}},iFrameReady:function(){for(d.isLoaded=!0,d.isIframeLoaded=!0;d.iframeQueue.length>0;){var a=d.iframeQueue.pop();d.createIframe(a)}},createIframe:function(a){var b=new Vimeo.Player(a.iframe);window["__ready__"+a.id](b)},getVimeoId:function(a){if(void 0===a||null===a)return null;var b=a.split("?");return a=b[0],parseInt(a.substring(a.lastIndexOf("/")+1))}},e={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(a){return["video/vimeo","video/x-vimeo"].includes(a)},create:function(a,b,c){var e=[],f={},g=4,h=!0,i=1,j=i,k=0,l=0,m=!1,n=0,o=null,p="";f.options=b,f.id=a.id+"_"+b.prefix,f.mediaElement=a;for(var q=function(b,c){var d=mejs.Utils.createEvent("error",c);d.message=b.name+": "+b.message,a.dispatchEvent(d)},r=mejs.html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);f["get"+c]=function(){if(null!==o){var a=null;switch(b){case"currentTime":return k;case"duration":return n;case"volume":return i;case"muted":return 0===i;case"paused":return h;case"ended":return m;case"src":return o.getVideoUrl().then(function(a){p=a}),p;case"buffered":return{start:function(){return 0},end:function(){return l*n},length:1};case"readyState":return g}return a}return null},f["set"+c]=function(c){if(null!==o)switch(b){case"src":var g="string"==typeof c?c:c[0].src,h=d.getVimeoId(g);o.loadVideo(h).then(function(){a.originalNode.autoplay&&o.play()})["catch"](function(a){q(a,f)});break;case"currentTime":o.setCurrentTime(c).then(function(){k=c,setTimeout(function(){var b=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"volume":o.setVolume(c).then(function(){i=c,j=i,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"loop":o.setLoop(c)["catch"](function(a){q(a,f)});break;case"muted":c?o.setVolume(0).then(function(){i=0,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)}):o.setVolume(j).then(function(){i=j,setTimeout(function(){var b=mejs.Utils.createEvent("volumechange",f);a.dispatchEvent(b)},50)})["catch"](function(a){q(a,f)});break;case"readyState":var l=mejs.Utils.createEvent("canplay",f);a.dispatchEvent(l)}else e.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=mejs.html5media.methods,w=function(a){f[a]=function(){if(null!==o)switch(a){case"play":return h=!1,o.play();case"pause":return h=!0,o.pause();case"load":return null}else e.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);window["__ready__"+f.id]=function(b){if(a.vimeoPlayer=o=b,e.length)for(var c=0,d=e.length;d>c;c++){var g=e[c];if("set"===g.type){var i=g.propName,j=""+i.substring(0,1).toUpperCase()+i.substring(1);f["set"+j](g.value)}else"call"===g.type&&f[g.methodName]()}var p=document.getElementById(f.id),r=void 0;r=["mouseover","mouseout"];for(var s=function(b){var c=mejs.Utils.createEvent(b.type,f);a.dispatchEvent(c)},t=0,u=r.length;u>t;t++)p.addEventListener(r[t],s,!1);o.on("loaded",function(){o.getDuration().then(function(b){n=b,n>0&&(l=n*b);var c=mejs.Utils.createEvent("loadedmetadata",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("progress",function(){o.getDuration().then(function(b){n=b,n>0&&(l=n*b);var c=mejs.Utils.createEvent("progress",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("timeupdate",function(){o.getCurrentTime().then(function(b){k=b;var c=mejs.Utils.createEvent("timeupdate",f);a.dispatchEvent(c)})["catch"](function(a){q(a,f)})}),o.on("play",function(){h=!1,m=!1;var b=mejs.Utils.createEvent("play",f);a.dispatchEvent(b)}),o.on("pause",function(){h=!0,m=!1;var b=mejs.Utils.createEvent("pause",f);a.dispatchEvent(b)}),o.on("ended",function(){h=!1,m=!0;var b=mejs.Utils.createEvent("ended",f);a.dispatchEvent(b)}),r=["rendererready","loadeddata","loadedmetadata","canplay"];for(var v=0,w=r.length;w>v;v++){var x=mejs.Utils.createEvent(r[v],f);a.dispatchEvent(x)}};var z=a.originalNode.height,A=a.originalNode.width,B=document.createElement("iframe"),C="//player.vimeo.com/video/"+d.getVimeoId(c[0].src),D=c[0].src.includes("?")?"?"+c[0].src.slice(c[0].src.indexOf("?")+1):"";return B.setAttribute("id",f.id),B.setAttribute("width",A),B.setAttribute("height",z),B.setAttribute("frameBorder","0"),B.setAttribute("src",""+C+D),B.setAttribute("webkitallowfullscreen",""),B.setAttribute("mozallowfullscreen",""),B.setAttribute("allowfullscreen",""),a.originalNode.parentNode.insertBefore(B,a.originalNode),a.originalNode.style.display="none",d.enqueueIframe({iframe:B,id:f.id}),f.hide=function(){f.pause(),o&&(B.style.display="none")},f.setSize=function(a,b){B.setAttribute("width",a),B.setAttribute("height",b)},f.show=function(){o&&(B.style.display="")},f}};mejs.Utils.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//player.vimeo")||a.includes("vimeo.com")?"video/x-vimeo":null}),mejs.Renderers.add(e)},{}]},{},[1]);
\ No newline at end of file
+!function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(a)return a(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return i(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof Vimeo?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://player.vimeo.com/api/player.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=new Vimeo.Player(e.iframe);window["__ready__"+e.id](t)},getVimeoId:function(e){return void 0===e||null===e?null:(e=e.split("?")[0],parseInt(e.substring(e.lastIndexOf("/")+1)))}},i={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(e){return~["video/vimeo","video/x-vimeo"].indexOf(e.toLowerCase())},create:function(e,t,n){var i=[],a={},o=!0,s=1,c=s,u=0,l=0,d=!1,m=0,f=null,v="";a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var p=function(t,n){var r=mejs.Utils.createEvent("error",n);r.message=t.name+": "+t.message,e.dispatchEvent(r)},h=mejs.html5media.properties,y=0,g=h.length;y<g;y++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==f){switch(t){case"currentTime":return u;case"duration":return m;case"volume":return s;case"muted":return 0===s;case"paused":return o;case"ended":return d;case"src":return f.getVideoUrl().then(function(e){v=e}),v;case"buffered":return{start:function(){return 0},end:function(){return l*m},length:1};case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==f)switch(t){case"src":var o="string"==typeof n?n:n[0].src,l=r.getVimeoId(o);f.loadVideo(l).then(function(){e.originalNode.autoplay&&f.play()}).catch(function(e){p(e,a)});break;case"currentTime":f.setCurrentTime(n).then(function(){u=n,setTimeout(function(){var t=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"volume":f.setVolume(n).then(function(){c=s=n,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"loop":f.setLoop(n).catch(function(e){p(e,a)});break;case"muted":n?f.setVolume(0).then(function(){s=0,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)}):f.setVolume(c).then(function(){s=c,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){p(e,a)});break;case"readyState":var d=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(d)}else i.push({type:"set",propName:t,value:n})}}(h[y]);for(var E=mejs.html5media.methods,b=0,U=E.length;b<U;b++)!function(e){a[e]=function(){if(null!==f)switch(e){case"play":return o=!1,f.play();case"pause":return o=!0,f.pause();case"load":return null}else i.push({type:"call",methodName:e})}}(E[b]);window["__ready__"+a.id]=function(t){if(e.vimeoPlayer=f=t,i.length)for(var n=0,r=i.length;n<r;n++){var s=i[n];if("set"===s.type){var c=s.propName,v=""+c.substring(0,1).toUpperCase()+c.substring(1);a["set"+v](s.value)}else"call"===s.type&&a[s.methodName]()}for(var h=document.getElementById(a.id),y=void 0,g=function(t){var n=mejs.Utils.createEvent(t.type,a);e.dispatchEvent(n)},E=0,b=(y=["mouseover","mouseout"]).length;E<b;E++)h.addEventListener(y[E],g,!1);f.on("loaded",function(){f.getDuration().then(function(t){(m=t)>0&&(l=m*t);var n=mejs.Utils.createEvent("loadedmetadata",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("progress",function(){f.getDuration().then(function(t){(m=t)>0&&(l=m*t);var n=mejs.Utils.createEvent("progress",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("timeupdate",function(){f.getCurrentTime().then(function(t){u=t;var n=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(n)}).catch(function(e){p(e,a)})}),f.on("play",function(){o=!1,d=!1;var t=mejs.Utils.createEvent("play",a);e.dispatchEvent(t)}),f.on("pause",function(){o=!0,d=!1;var t=mejs.Utils.createEvent("pause",a);e.dispatchEvent(t)}),f.on("ended",function(){o=!1,d=!0;var t=mejs.Utils.createEvent("ended",a);e.dispatchEvent(t)});for(var U=0,j=(y=["rendererready","loadeddata","loadedmetadata","canplay"]).length;U<j;U++){var w=mejs.Utils.createEvent(y[U],a);e.dispatchEvent(w)}};var j=e.originalNode.height,w=e.originalNode.width,_=document.createElement("iframe"),N="//player.vimeo.com/video/"+r.getVimeoId(n[0].src),x=~n[0].src.indexOf("?")?"?"+n[0].src.slice(n[0].src.indexOf("?")+1):"";return _.setAttribute("id",a.id),_.setAttribute("width",w),_.setAttribute("height",j),_.setAttribute("frameBorder","0"),_.setAttribute("src",""+N+x),_.setAttribute("webkitallowfullscreen",""),_.setAttribute("mozallowfullscreen",""),_.setAttribute("allowfullscreen",""),e.originalNode.parentNode.insertBefore(_,e.originalNode),e.originalNode.style.display="none",r.load({iframe:_,id:a.id}),a.hide=function(){a.pause(),f&&(_.style.display="none")},a.setSize=function(e,t){_.setAttribute("width",e),_.setAttribute("height",t)},a.show=function(){f&&(_.style.display="")},a}};mejs.Utils.typeChecks.push(function(e){return/(\/\/player\.vimeo|vimeo\.com)/i.test(e)?"video/x-vimeo":null}),mejs.Renderers.add(i)},{}]},{},[1]);
\ No newline at end of file
diff --git a/paquet.xml b/paquet.xml
index 47681695b68b78f0f91c37beead15a045980d0c0..844ab76147067e492000cc9e8f57db9188edc62d 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="medias"
 	categorie="multimedia"
-	version="2.20.3"
+	version="2.20.4"
 	etat="stable"
 	compatibilite="[3.2.0-dev;3.2.*]"
 	logo="prive/themes/spip/images/portfolio-32.png"