[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/mediaelement/js/ -> mediaelement-and-player.js (source)

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


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer