diff --git a/bower.json b/bower.json
index 55ef4e70f..75e3d3439 100644
--- a/bower.json
+++ b/bower.json
@@ -16,7 +16,7 @@
"dependencies": {
"clappr-zepto": "0.0.4",
"compass-mixins": "^0.12.7",
- "hls.js": "github:dailymotion/hls.js#v0.4.7",
+ "hls.js": "github:dailymotion/hls.js#v0.4.8",
"lodash.find": "^3.2.1",
"lodash.once": "^3.0.1",
"lodash.result": "^3.1.2",
diff --git a/dist/clappr.js b/dist/clappr.js
index db27ceedb..0a00fe2e6 100644
--- a/dist/clappr.js
+++ b/dist/clappr.js
@@ -82,19 +82,19 @@ return /******/ (function(modules) { // webpackBootstrap
var _basePlayback2 = _interopRequireDefault(_basePlayback);
- var _baseContainer_plugin = __webpack_require__(128);
+ var _baseContainer_plugin = __webpack_require__(130);
var _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);
- var _baseCore_plugin = __webpack_require__(149);
+ var _baseCore_plugin = __webpack_require__(151);
var _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);
- var _baseUi_core_plugin = __webpack_require__(143);
+ var _baseUi_core_plugin = __webpack_require__(145);
var _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);
- var _baseUi_container_plugin = __webpack_require__(123);
+ var _baseUi_container_plugin = __webpack_require__(125);
var _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);
@@ -158,15 +158,15 @@ return /******/ (function(modules) { // webpackBootstrap
var _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);
- var _playbacksHtml_img = __webpack_require__(114);
+ var _playbacksHtml_img = __webpack_require__(116);
var _playbacksHtml_img2 = _interopRequireDefault(_playbacksHtml_img);
- var _playbacksNo_op = __webpack_require__(117);
+ var _playbacksNo_op = __webpack_require__(119);
var _playbacksNo_op2 = _interopRequireDefault(_playbacksNo_op);
- var _pluginsPoster = __webpack_require__(133);
+ var _pluginsPoster = __webpack_require__(135);
var _pluginsPoster2 = _interopRequireDefault(_pluginsPoster);
@@ -186,7 +186,7 @@ return /******/ (function(modules) { // webpackBootstrap
var _clapprZepto2 = _interopRequireDefault(_clapprZepto);
- var version = ("0.2.33");
+ var version = ("0.2.34");
exports['default'] = {
Player: _componentsPlayer2['default'],
@@ -4002,136 +4002,126 @@ return /******/ (function(modules) { // webpackBootstrap
/***/ },
/* 17 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Simple JavaScript Templating
+ // Simple JavaScript Templating
// Paul Miller (http://paulmillr.com)
// http://underscorejs.org
- "use strict";
+ // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- (function (globals) {
- // By default, Underscore uses ERB-style template delimiters, change the
- // following template settings to use alternative delimiters.
- var settings = {
- evaluate: /<%([\s\S]+?)%>/g,
- interpolate: /<%=([\s\S]+?)%>/g,
- escape: /<%-([\s\S]+?)%>/g
- };
+ // By default, Underscore uses ERB-style template delimiters, change the
+ // following template settings to use alternative delimiters.
+ "use strict";
- // When customizing `templateSettings`, if you don't want to define an
- // interpolation, evaluation or escaping regex, we need one that is
- // guaranteed not to match.
- var noMatch = /(.)^/;
-
- // Certain characters need to be escaped so that they can be put into a
- // string literal.
- var escapes = {
- "'": "'",
- '\\': '\\',
- '\r': 'r',
- '\n': 'n',
- '\t': 't',
- "\u2028": 'u2028',
- "\u2029": 'u2029'
- };
+ var settings = {
+ evaluate: /<%([\s\S]+?)%>/g,
+ interpolate: /<%=([\s\S]+?)%>/g,
+ escape: /<%-([\s\S]+?)%>/g
+ };
- var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+ // When customizing `templateSettings`, if you don't want to define an
+ // interpolation, evaluation or escaping regex, we need one that is
+ // guaranteed not to match.
+ var noMatch = /(.)^/;
+
+ // Certain characters need to be escaped so that they can be put into a
+ // string literal.
+ var escapes = {
+ "'": "'",
+ '\\': '\\',
+ '\r': 'r',
+ '\n': 'n',
+ '\t': 't',
+ "\u2028": 'u2028',
+ "\u2029": 'u2029'
+ };
- // List of HTML entities for escaping.
- var htmlEntities = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- "'": '''
- };
+ var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
- var entityRe = new RegExp('[&<>"\']', 'g');
+ // List of HTML entities for escaping.
+ var htmlEntities = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+ };
- var escapeExpr = function escapeExpr(string) {
- if (string === null) {
- return '';
- }
- return ('' + string).replace(entityRe, function (match) {
- return htmlEntities[match];
- });
- };
+ var entityRe = new RegExp('[&<>"\']', 'g');
- var counter = 0;
+ var escapeExpr = function escapeExpr(string) {
+ if (string === null) {
+ return '';
+ }
+ return ('' + string).replace(entityRe, function (match) {
+ return htmlEntities[match];
+ });
+ };
- // JavaScript micro-templating, similar to John Resig's implementation.
- // Underscore templating handles arbitrary delimiters, preserves whitespace,
- // and correctly escapes quotes within interpolated code.
- var tmpl = function tmpl(text, data) {
- var render;
+ var counter = 0;
- // Combine delimiters into one regular expression via alternation.
- var matcher = new RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g');
+ // JavaScript micro-templating, similar to John Resig's implementation.
+ // Underscore templating handles arbitrary delimiters, preserves whitespace,
+ // and correctly escapes quotes within interpolated code.
+ var tmpl = function tmpl(text, data) {
+ var render;
- // Compile the template source, escaping string literals appropriately.
- var index = 0;
- var source = "__p+='";
- text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
- source += text.slice(index, offset).replace(escaper, function (match) {
- return '\\' + escapes[match];
- });
+ // Combine delimiters into one regular expression via alternation.
+ var matcher = new RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g');
- if (escape) {
- source += "'+\n((__t=(" + escape + "))==null?'':escapeExpr(__t))+\n'";
- }
- if (interpolate) {
- source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
- }
- if (evaluate) {
- source += "';\n" + evaluate + "\n__p+='";
- }
- index = offset + match.length;
- return match;
+ // Compile the template source, escaping string literals appropriately.
+ var index = 0;
+ var source = "__p+='";
+ text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
+ source += text.slice(index, offset).replace(escaper, function (match) {
+ return '\\' + escapes[match];
});
- source += "';\n";
- // If a variable is not specified, place data values in local scope.
- if (!settings.variable) {
- source = 'with(obj||{}){\n' + source + '}\n';
+ if (escape) {
+ source += "'+\n((__t=(" + escape + "))==null?'':escapeExpr(__t))+\n'";
}
-
- source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n//# sourceURL=/microtemplates/source[" + counter++ + "]";
-
- try {
- /*jshint -W054 */
- // TODO: find a way to avoid eval
- render = new Function(settings.variable || 'obj', 'escapeExpr', source);
- } catch (e) {
- e.source = source;
- throw e;
+ if (interpolate) {
+ source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
}
-
- if (data) {
- return render(data, escapeExpr);
+ if (evaluate) {
+ source += "';\n" + evaluate + "\n__p+='";
}
- var template = function template(data) {
- return render.call(this, data, escapeExpr);
- };
+ index = offset + match.length;
+ return match;
+ });
+ source += "';\n";
+
+ // If a variable is not specified, place data values in local scope.
+ if (!settings.variable) {
+ source = 'with(obj||{}){\n' + source + '}\n';
+ }
+
+ source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n//# sourceURL=/microtemplates/source[" + counter++ + "]";
- // Provide the compiled function source as a convenience for precompilation.
- template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+ try {
+ /*jshint -W054 */
+ // TODO: find a way to avoid eval
+ render = new Function(settings.variable || 'obj', 'escapeExpr', source);
+ } catch (e) {
+ e.source = source;
+ throw e;
+ }
- return template;
+ if (data) {
+ return render(data, escapeExpr);
+ }
+ var template = function template(data) {
+ return render.call(this, data, escapeExpr);
};
- tmpl.settings = settings;
-
- /*global define */ // define is for RequireJS
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
- return tmpl;
- }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // RequireJS
- } else if (typeof module !== 'undefined' && module.exports) {
- module.exports = tmpl; // CommonJS
- } else {
- globals.microtemplate = tmpl; // \n\t * \n\t * ```\n\t * Now, create the player:\n\t * ```html\n\t *
\n\t *
\n\t * \n\t * \n\t * ```\n\t */\n\t\n\tvar Player = (function (_BaseObject) {\n\t _inherits(Player, _BaseObject);\n\t\n\t _createClass(Player, [{\n\t key: 'loader',\n\t set: function set(loader) {\n\t this._loader = loader;\n\t },\n\t get: function get() {\n\t return this._loader = this._loader || new _componentsLoader2['default'](this.options.plugins || {}, this.options.playerId);\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.core.mediaControl.container.ended;\n\t }\n\t\n\t /**\n\t * Determine if the playback is having to buffer in order for\n\t * playback to be smooth.\n\t * (i.e if a live stream is playing smoothly, this will be false)\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return this.core.mediaControl.container.buffering;\n\t }\n\t\n\t /*\n\t * determine if the player is ready.\n\t * @property isReady\n\t * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n\t */\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return !!this.ready;\n\t }\n\t\n\t /**\n\t * ## Player's constructor\n\t *\n\t * You might pass the options object to build the player.\n\t * ```javascript\n\t * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n\t * var player = new Clappr.Player(options);\n\t * ```\n\t *\n\t * @method constructor\n\t * @param {Object} options Data\n\t * options to build a player instance\n\t * @param {Number} [options.width]\n\t * player's width **default**: `640`\n\t * @param {Number} [options.height]\n\t * player's height **default**: `360`\n\t * @param {String} [options.parentId]\n\t * the id of the element on the page that the player should be inserted into\n\t * @param {Object} [options.parent]\n\t * a reference to a dom element that the player should be inserted into\n\t * @param {String} [options.source]\n\t * The media source URL, or {source: <>, mimeType: <>}\n\t * @param {Object} [options.sources]\n\t * An array of media source URL's, or an array of {source: <>, mimeType: <>}\n\t * @param {Boolean} [options.autoPlay]\n\t * automatically play after page load **default**: `false`\n\t * @param {Boolean} [options.loop]\n\t * automatically replay after it ends **default**: `false`\n\t * @param {Boolean} [options.chromeless]\n\t * player acts in chromeless mode **default**: `false`\n\t * @param {Boolean} [options.muted]\n\t * start the video muted **default**: `false`\n\t * @param {String} [options.mimeType]\n\t * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n\t * @param {String} [options.actualLiveTime]\n\t * show duration and seek time relative to actual time.\n\t * @param {String} [options.actualLiveServerTime]\n\t * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n\t * @param {Boolean} [options.persistConfig]\n\t * persist player's settings (volume) through the same domain **default**: `true`\n\t * @param {String} [options.preload]\n\t * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n\t * @param {Number} [options.maxBufferLength]\n\t * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD. This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks. To change this behavior use `maxBufferLength` where **value is in seconds**.\n\t * @param {String} [options.gaAccount]\n\t * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n\t * @param {String} [options.gaTrackerName]\n\t * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n\t * @param {Object} [options.mediacontrol]\n\t * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n\t * @param {Boolean} [options.hideMediaControl]\n\t * control media control auto hide **default**: `true`\n\t * @param {Boolean} [options.hideVolumeBar]\n\t * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n\t * @param {String} [options.watermark]\n\t * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video. You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n\t * @param {String} [options.watermarkLink]\n\t * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable. \n\t * @param {Boolean} [options.disableVideoTagContextMenu]\n\t * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n\t * @param {Boolean} [options.autoSeekFromUrl]\n\t * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n\t * @param {String} [options.poster]\n\t * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n\t * @param {String} [options.playbackNotSupportedMessage]\n\t * define a custom message to be displayed when a playback is not supported.\n\t * @param {Object} [options.events]\n\t * Specify listeners which will be registered with their corresponding player events.\n\t * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n\t */\n\t }]);\n\t\n\t function Player(options) {\n\t _classCallCheck(this, Player);\n\t\n\t _get(Object.getPrototypeOf(Player.prototype), 'constructor', this).call(this, options);\n\t var defaultOptions = { playerId: (0, _baseUtils.uniqueId)(\"\"), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl };\n\t this.options = _clapprZepto2['default'].extend(defaultOptions, options);\n\t this.options.sources = this.normalizeSources(options);\n\t this.registerOptionEventListeners();\n\t this.coreFactory = new _componentsCore_factory2['default'](this);\n\t this.playerInfo = _componentsPlayer_info2['default'].getInstance(this.options.playerId);\n\t this.playerInfo.currentSize = { width: options.width, height: options.height };\n\t this.playerInfo.options = this.options;\n\t if (this.options.parentId) {\n\t this.setParentId(this.options.parentId);\n\t } else if (this.options.parent) {\n\t this.attachTo(this.options.parent);\n\t }\n\t }\n\t\n\t /**\n\t * Specify a `parentId` to the player.\n\t * @method setParentId\n\t * @param {String} parentId the element parent id.\n\t */\n\t\n\t _createClass(Player, [{\n\t key: 'setParentId',\n\t value: function setParentId(parentId) {\n\t var el = document.querySelector(parentId);\n\t if (el) {\n\t this.attachTo(el);\n\t }\n\t }\n\t\n\t /**\n\t * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n\t * @method attachTo\n\t * @param {Object} element a given element.\n\t */\n\t }, {\n\t key: 'attachTo',\n\t value: function attachTo(element) {\n\t this.options.parentElement = element;\n\t this.core = this.coreFactory.create();\n\t this.addEventListeners();\n\t }\n\t }, {\n\t key: 'addEventListeners',\n\t value: function addEventListeners() {\n\t if (!this.core.isReady) {\n\t this.listenToOnce(this.core, _baseEvents2['default'].CORE_READY, this.onReady);\n\t } else {\n\t this.onReady();\n\t }\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t }\n\t }, {\n\t key: 'addContainerEventListeners',\n\t value: function addContainerEventListeners() {\n\t var container = this.core.mediaControl.container;\n\t if (!!container) {\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_PAUSE, this.onPause);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_SEEK, this.onSeek);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ERROR, this.onError);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.onTimeUpdate);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_VOLUME, this.onVolumeUpdate);\n\t }\n\t }\n\t }, {\n\t key: 'registerOptionEventListeners',\n\t value: function registerOptionEventListeners() {\n\t var _this = this;\n\t\n\t var eventsMapping = {\n\t \"onReady\": _baseEvents2['default'].PLAYER_READY,\n\t \"onResize\": _baseEvents2['default'].PLAYER_RESIZE,\n\t \"onPlay\": _baseEvents2['default'].PLAYER_PLAY,\n\t \"onPause\": _baseEvents2['default'].PLAYER_PAUSE,\n\t \"onStop\": _baseEvents2['default'].PLAYER_STOP,\n\t \"onEnded\": _baseEvents2['default'].PLAYER_ENDED,\n\t \"onSeek\": _baseEvents2['default'].PLAYER_SEEK,\n\t \"onError\": _baseEvents2['default'].PLAYER_ERROR,\n\t \"onTimeUpdate\": _baseEvents2['default'].PLAYER_TIMEUPDATE,\n\t \"onVolumeUpdate\": _baseEvents2['default'].PLAYER_VOLUMEUPDATE\n\t };\n\t var userEvents = this.options.events || {};\n\t\n\t Object.keys(userEvents).forEach(function (userEvent) {\n\t var eventType = eventsMapping[userEvent];\n\t if (eventType) {\n\t var eventFunction = userEvents[userEvent];\n\t eventFunction = typeof eventFunction === \"function\" && eventFunction;\n\t eventFunction && _this.listenTo(_this, eventType, eventFunction);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.addEventListeners();\n\t }\n\t }, {\n\t key: 'onReady',\n\t value: function onReady() {\n\t this.ready = true;\n\t this.addContainerEventListeners();\n\t this.trigger(_baseEvents2['default'].PLAYER_READY);\n\t }\n\t }, {\n\t key: 'onVolumeUpdate',\n\t value: function onVolumeUpdate(volume) {\n\t this.trigger(_baseEvents2['default'].PLAYER_VOLUMEUPDATE, volume);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.trigger(_baseEvents2['default'].PLAYER_PLAY);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.trigger(_baseEvents2['default'].PLAYER_PAUSE);\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.trigger(_baseEvents2['default'].PLAYER_STOP, this.getCurrentTime());\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.trigger(_baseEvents2['default'].PLAYER_ENDED);\n\t }\n\t }, {\n\t key: 'onSeek',\n\t value: function onSeek(time) {\n\t this.trigger(_baseEvents2['default'].PLAYER_SEEK, time);\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate(timeProgress) {\n\t this.trigger(_baseEvents2['default'].PLAYER_TIMEUPDATE, timeProgress);\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError(error) {\n\t this.trigger(_baseEvents2['default'].PLAYER_ERROR, error);\n\t }\n\t }, {\n\t key: 'is',\n\t value: function is(value, type) {\n\t return value.constructor === type;\n\t }\n\t }, {\n\t key: 'normalizeSources',\n\t value: function normalizeSources(options) {\n\t var sources = options.sources || (options.source !== undefined ? [options.source] : []);\n\t return sources.length === 0 ? [{ source: \"\", mimeType: \"\" }] : sources;\n\t }\n\t\n\t /**\n\t * resizes the current player canvas.\n\t * @method resize\n\t * @param {Object} size should be a literal object with `height` and `width`.\n\t * @example\n\t * ```javascript\n\t * player.resize({height: 360, width: 640})\n\t * ```\n\t */\n\t }, {\n\t key: 'resize',\n\t value: function resize(size) {\n\t this.core.resize(size);\n\t }\n\t\n\t /**\n\t * loads a new source.\n\t * @method load\n\t * @param {Object} sources source or sources of video.\n\t * sources can be a string or {source: <>, mimeType: <>}\n\t * @param {Object} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n\t *\n\t */\n\t }, {\n\t key: 'load',\n\t value: function load(sources, mimeType) {\n\t this.core.load(sources, mimeType);\n\t }\n\t\n\t /**\n\t * destroys the current player and removes it from the DOM.\n\t * @method destroy\n\t */\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.core.destroy();\n\t }\n\t\n\t /**\n\t * plays the current video (`source`).\n\t * @method play\n\t */\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t this.core.mediaControl.container.play();\n\t }\n\t\n\t /**\n\t * pauses the current video (`source`).\n\t * @method pause\n\t */\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.core.mediaControl.container.pause();\n\t }\n\t\n\t /**\n\t * stops the current video (`source`).\n\t * @method stop\n\t */\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.core.mediaControl.container.stop();\n\t }\n\t\n\t /**\n\t * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n\t * @method seek\n\t * @param {Number} time should be a number between 0 and the video duration.\n\t */\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t this.core.mediaControl.container.seek(time);\n\t }\n\t\n\t /**\n\t * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n\t * @method seekPercentage\n\t * @param {Number} time should be a number between 0 and 100.\n\t */\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t this.core.mediaControl.container.seekPercentage(percentage);\n\t }\n\t\n\t /**\n\t * Set the volume for the current video (`source`).\n\t * @method setVolume\n\t * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n\t */\n\t }, {\n\t key: 'setVolume',\n\t value: function setVolume(volume) {\n\t this.core.mediaControl.container.setVolume(volume);\n\t }\n\t\n\t /**\n\t * Get the volume for the current video\n\t * @method getVolume\n\t * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n\t */\n\t }, {\n\t key: 'getVolume',\n\t value: function getVolume() {\n\t return this.core.mediaControl.container.volume;\n\t }\n\t\n\t /**\n\t * mutes the current video (`source`).\n\t * @method mute\n\t */\n\t }, {\n\t key: 'mute',\n\t value: function mute() {\n\t this.core.mediaControl.container.setVolume(0);\n\t }\n\t\n\t /**\n\t * unmutes the current video (`source`).\n\t * @method unmute\n\t */\n\t }, {\n\t key: 'unmute',\n\t value: function unmute() {\n\t this.core.mediaControl.container.setVolume(100);\n\t }\n\t\n\t /**\n\t * checks if the player is playing.\n\t * @method isPlaying\n\t * @return {Boolean} `true` if the current source is playing, otherwise `false`\n\t */\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return this.core.mediaControl.container.isPlaying();\n\t }\n\t\n\t /**\n\t * enables to configure a player after its creation\n\t * @method configure\n\t * @param {Object} options all the options to change in form of a javascript object\n\t */\n\t }, {\n\t key: 'configure',\n\t value: function configure(options) {\n\t this.core.configure(options);\n\t }\n\t\n\t /**\n\t * get a plugin by its name.\n\t * @method getPlugin\n\t * @param {String} name of the plugin.\n\t * @return {Object} the plugin instance\n\t * @example\n\t * ```javascript\n\t * var poster = player.getPlugin('poster');\n\t * poster.hidePlayButton();\n\t * ```\n\t */\n\t }, {\n\t key: 'getPlugin',\n\t value: function getPlugin(name) {\n\t var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins);\n\t return (0, _lodashFind2['default'])(plugins, function (plugin) {\n\t return plugin.name === name;\n\t });\n\t }\n\t\n\t /**\n\t * the current time in seconds.\n\t * @method getCurrentTime\n\t * @return {Number} current time (in seconds) of the current source\n\t */\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.core.mediaControl.container.getCurrentTime();\n\t }\n\t\n\t /**\n\t * the duration time in seconds.\n\t * @method getDuration\n\t * @return {Number} duration time (in seconds) of the current source\n\t */\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.core.mediaControl.container.getDuration();\n\t }\n\t }]);\n\t\n\t return Player;\n\t})(_baseBase_object2['default']);\n\t\n\texports['default'] = Player;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 103 */\n/*!******************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/base_flash_playback.js ***!\n \\******************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2015 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar _publicFlashHtml = __webpack_require__(/*! ./public/flash.html */ 145);\n\t\n\tvar _publicFlashHtml2 = _interopRequireDefault(_publicFlashHtml);\n\t\n\tvar _publicFlashScss = __webpack_require__(/*! ./public/flash.scss */ 135);\n\t\n\tvar _publicFlashScss2 = _interopRequireDefault(_publicFlashScss);\n\t\n\tvar IE_CLASSID = \"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\";\n\t\n\tvar objectIE = '\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" data-hls=\"\" width=\"100%\" height=\"100%\"> \"> &callback=<%= callbackName %>\" /> ';\n\t\n\tvar BaseFlashPlayback = (function (_Playback) {\n\t _inherits(BaseFlashPlayback, _Playback);\n\t\n\t function BaseFlashPlayback() {\n\t _classCallCheck(this, BaseFlashPlayback);\n\t\n\t _get(Object.getPrototypeOf(BaseFlashPlayback.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(BaseFlashPlayback, [{\n\t key: 'setElement',\n\t value: function setElement(element) {\n\t this.$el = element;\n\t this.el = element[0];\n\t }\n\t }, {\n\t key: 'setupFirefox',\n\t value: function setupFirefox() {\n\t var $el = this.$('embed');\n\t $el.attr('data-flash-playback', this.name);\n\t $el.addClass(this.attributes['class']);\n\t this.setElement($el);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.html(this.template({\n\t cid: this.cid,\n\t swfPath: this.swfPath,\n\t baseUrl: this.baseUrl,\n\t playbackId: this.uniqueId,\n\t wmode: this.wmode,\n\t callbackName: 'window.Clappr.flashlsCallbacks.' + this.cid }));\n\t if (_componentsBrowser2['default'].isIE) {\n\t this.$('embed').remove();\n\t if (_componentsBrowser2['default'].isLegacyIE) {\n\t this.$el.attr('classid', IE_CLASSID);\n\t }\n\t } else if (_componentsBrowser2['default'].isFirefox) {\n\t this.setupFirefox();\n\t }\n\t this.el.id = this.cid;\n\t var style = _baseStyler2['default'].getStyleFor(_publicFlashScss2['default']);\n\t this.$el.append(style);\n\t return this;\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'object';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return '';\n\t }\n\t }, {\n\t key: 'wmode',\n\t get: function get() {\n\t return 'transparent';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicFlashHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'clappr-flash-playback',\n\t type: 'application/x-shockwave-flash',\n\t width: '100%',\n\t height: '100%',\n\t 'data-flash-playback': this.name\n\t };\n\t }\n\t }]);\n\t\n\t return BaseFlashPlayback;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = BaseFlashPlayback;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 104 */\n/*!**************************************!*\\\n !*** ./src/playbacks/flash/flash.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _playbacksBase_flash_playback = __webpack_require__(/*! playbacks/base_flash_playback */ 27);\n\t\n\tvar _playbacksBase_flash_playback2 = _interopRequireDefault(_playbacksBase_flash_playback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 14);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _publicPlayerSwf = __webpack_require__(/*! ./public/Player.swf */ 153);\n\t\n\tvar _publicPlayerSwf2 = _interopRequireDefault(_publicPlayerSwf);\n\t\n\tvar MAX_ATTEMPTS = 60;\n\t\n\tvar Flash = (function (_BaseFlashPlayback) {\n\t _inherits(Flash, _BaseFlashPlayback);\n\t\n\t _createClass(Flash, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'flash';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicPlayerSwf2['default'])({ baseUrl: this.baseUrl });\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.currentState === \"ENDED\";\n\t }\n\t\n\t /**\n\t * Determine if the playback is buffering.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return !!this.bufferingState && this.currentState !== \"ENDED\";\n\t }\n\t }]);\n\t\n\t function Flash(options) {\n\t _classCallCheck(this, Flash);\n\t\n\t _get(Object.getPrototypeOf(Flash.prototype), 'constructor', this).call(this, options);\n\t this.src = options.src;\n\t this.baseUrl = options.baseUrl;\n\t this.autoPlay = options.autoPlay;\n\t this.settings = { 'default': ['seekbar'] };\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.right = [\"fullscreen\", \"volume\"];\n\t this.settings.seekEnabled = true;\n\t this.isReadyState = false;\n\t this.addListeners();\n\t }\n\t\n\t _createClass(Flash, [{\n\t key: 'bootstrap',\n\t value: function bootstrap() {\n\t var _this = this;\n\t\n\t if (this.el.playerPlay) {\n\t this.el.width = \"100%\";\n\t this.el.height = \"100%\";\n\t if (this.currentState === 'PLAYING') {\n\t this.firstPlay();\n\t } else {\n\t this.currentState = \"IDLE\";\n\t this.autoPlay && this.play();\n\t }\n\t (0, _clapprZepto2['default'])('
').insertAfter(this.$el);\n\t if (this.getDuration() > 0) {\n\t this.metadataLoaded();\n\t } else {\n\t _componentsMediator2['default'].once(this.uniqueId + ':timeupdate', this.metadataLoaded, this);\n\t }\n\t } else {\n\t this._attempts = this._attempts || 0;\n\t if (++this._attempts <= MAX_ATTEMPTS) {\n\t setTimeout(function () {\n\t return _this.bootstrap();\n\t }, 50);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { message: \"Max number of attempts reached\" }, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'metadataLoaded',\n\t value: function metadataLoaded() {\n\t this.isReadyState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE, this.name);\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].VOD;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return false;\n\t }\n\t }, {\n\t key: 'updateTime',\n\t value: function updateTime() {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.el.getPosition(), total: this.el.getDuration() }, this.name);\n\t }\n\t }, {\n\t key: 'addListeners',\n\t value: function addListeners() {\n\t _componentsMediator2['default'].on(this.uniqueId + ':progress', this.progress, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':timeupdate', this.updateTime, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':statechanged', this.checkState, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':flashready', this.bootstrap, this);\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(Flash.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.uniqueId + ':progress');\n\t _componentsMediator2['default'].off(this.uniqueId + ':timeupdate');\n\t _componentsMediator2['default'].off(this.uniqueId + ':statechanged');\n\t _componentsMediator2['default'].off(this.uniqueId + ':flashready');\n\t }\n\t }, {\n\t key: 'checkState',\n\t value: function checkState() {\n\t if (this.isIdle || this.currentState === \"PAUSED\") {\n\t return;\n\t } else if (this.currentState !== \"PLAYING_BUFFERING\" && this.el.getState() === \"PLAYING_BUFFERING\") {\n\t this.bufferingState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t this.currentState = \"PLAYING_BUFFERING\";\n\t } else if (this.el.getState() === \"PLAYING\") {\n\t this.bufferingState = false;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t this.currentState = \"PLAYING\";\n\t } else if (this.el.getState() === \"IDLE\") {\n\t this.currentState = \"IDLE\";\n\t } else if (this.el.getState() === \"ENDED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: this.el.getDuration() }, this.name);\n\t this.currentState = \"ENDED\";\n\t this.isIdle = true;\n\t }\n\t }\n\t }, {\n\t key: 'progress',\n\t value: function progress() {\n\t if (this.currentState !== \"IDLE\" && this.currentState !== \"ENDED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: 0,\n\t current: this.el.getBytesLoaded(),\n\t total: this.el.getBytesTotal()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'firstPlay',\n\t value: function firstPlay() {\n\t var _this2 = this;\n\t\n\t if (this.el.playerPlay) {\n\t this.isIdle = false;\n\t this.el.playerPlay(this.src);\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this2.checkInitialSeek();\n\t });\n\t this.currentState = \"PLAYING\";\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_READY, this.firstPlay);\n\t }\n\t }\n\t }, {\n\t key: 'checkInitialSeek',\n\t value: function checkInitialSeek() {\n\t var seekTime = (0, _baseUtils.seekStringToSeconds)(window.location.href);\n\t if (seekTime !== 0) {\n\t this.seekSeconds(seekTime);\n\t }\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (this.currentState === 'PAUSED' || this.currentState === 'PLAYING_BUFFERING') {\n\t this.currentState = \"PLAYING\";\n\t this.el.playerResume();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t } else if (this.currentState !== 'PLAYING') {\n\t this.firstPlay();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t var _this3 = this;\n\t\n\t if (this.isReady) {\n\t this.el.playerVolume(value);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this3.volume(value);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.currentState = \"PAUSED\";\n\t this.el.playerPause();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE, this.name);\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.el.playerStop();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return !!(this.isReady && this.currentState.indexOf(\"PLAYING\") > -1);\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.el.getDuration();\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var _this4 = this;\n\t\n\t if (this.el.getDuration() > 0) {\n\t var seekSeconds = this.el.getDuration() * (percentage / 100);\n\t this.seek(seekSeconds);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this4.seekPercentage(percentage);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t var _this5 = this;\n\t\n\t if (this.isReady && this.el.playerSeek) {\n\t this.el.playerSeek(time);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: this.el.getDuration() }, this.name);\n\t if (this.currentState === \"PAUSED\") {\n\t this.el.playerPause();\n\t }\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this5.seek(time);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t clearInterval(this.bootstrapId);\n\t _get(Object.getPrototypeOf(Flash.prototype), 'stopListening', this).call(this);\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return Flash;\n\t})(_playbacksBase_flash_playback2['default']);\n\t\n\texports['default'] = Flash;\n\t\n\tFlash.canPlay = function (resource) {\n\t if (!_componentsBrowser2['default'].hasFlash || !resource || resource.constructor !== String) {\n\t return false;\n\t } else {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t return resourceParts.length > 1 && !_componentsBrowser2['default'].isMobile && resourceParts[1].match(/^(mp4|mov|f4v|3gpp|3gp)$/);\n\t }\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 105 */\n/*!******************************************!*\\\n !*** ./src/playbacks/flashls/flashls.js ***!\n \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _playbacksBase_flash_playback = __webpack_require__(/*! playbacks/base_flash_playback */ 27);\n\t\n\tvar _playbacksBase_flash_playback2 = _interopRequireDefault(_playbacksBase_flash_playback);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 14);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _flashls_events = __webpack_require__(/*! ./flashls_events */ 106);\n\t\n\tvar _flashls_events2 = _interopRequireDefault(_flashls_events);\n\t\n\tvar _publicHLSPlayerSwf = __webpack_require__(/*! ./public/HLSPlayer.swf */ 154);\n\t\n\tvar _publicHLSPlayerSwf2 = _interopRequireDefault(_publicHLSPlayerSwf);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar MAX_ATTEMPTS = 60;\n\tvar AUTO = -1;\n\t\n\tvar FlasHLS = (function (_BaseFlashPlayback) {\n\t _inherits(FlasHLS, _BaseFlashPlayback);\n\t\n\t _createClass(FlasHLS, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'flashls';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicHLSPlayerSwf2['default'])({ baseUrl: this.baseUrl });\n\t }\n\t }, {\n\t key: 'levels',\n\t get: function get() {\n\t return this._levels || [];\n\t }\n\t }, {\n\t key: 'currentLevel',\n\t get: function get() {\n\t return this._currentLevel || AUTO;\n\t },\n\t set: function set(id) {\n\t this._currentLevel = id;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_START);\n\t this.el.playerSetCurrentLevel(id);\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.hasEnded;\n\t }\n\t\n\t /**\n\t * Determine if the playback is buffering.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return !!this.bufferingState && !this.hasEnded;\n\t }\n\t }]);\n\t\n\t function FlasHLS(options) {\n\t _classCallCheck(this, FlasHLS);\n\t\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'constructor', this).call(this, options);\n\t this.src = options.src;\n\t this.baseUrl = options.baseUrl;\n\t this.initHlsParameters(options);\n\t this.highDefinition = false;\n\t this.autoPlay = options.autoPlay;\n\t this.loop = options.loop;\n\t this.defaultSettings = {\n\t left: [\"playstop\"],\n\t 'default': ['seekbar'],\n\t right: [\"fullscreen\", \"volume\", \"hd-indicator\"],\n\t seekEnabled: false\n\t };\n\t this.settings = _clapprZepto2['default'].extend({}, this.defaultSettings);\n\t this.playbackType = _basePlayback2['default'].LIVE;\n\t this.hasEnded = false;\n\t this.addListeners();\n\t }\n\t\n\t _createClass(FlasHLS, [{\n\t key: 'initHlsParameters',\n\t value: function initHlsParameters(options) {\n\t this.autoStartLoad = options.autoStartLoad === undefined ? true : options.autoStartLoad;\n\t this.capLevelToStage = options.capLevelToStage === undefined ? false : options.capLevelToStage;\n\t this.maxLevelCappingMode = options.maxLevelCappingMode === undefined ? \"downscale\" : options.maxLevelCappingMode;\n\t this.minBufferLength = options.minBufferLength === undefined ? -1 : options.minBufferLength;\n\t this.minBufferLengthCapping = options.minBufferLengthCapping === undefined ? -1 : options.minBufferLengthCapping;\n\t this.maxBufferLength = options.maxBufferLength === undefined ? 120 : options.maxBufferLength;\n\t this.maxBackBufferLength = options.maxBackBufferLength === undefined ? 30 : options.maxBackBufferLength;\n\t this.lowBufferLength = options.lowBufferLength === undefined ? 3 : options.lowBufferLength;\n\t this.mediaTimePeriod = options.mediaTimePeriod === undefined ? 100 : options.mediaTimePeriod;\n\t this.fpsDroppedMonitoringPeriod = options.fpsDroppedMonitoringPeriod === undefined ? 5000 : options.fpsDroppedMonitoringPeriod;\n\t this.fpsDroppedMonitoringThreshold = options.fpsDroppedMonitoringThreshold === undefined ? 0.2 : options.fpsDroppedMonitoringThreshold;\n\t this.capLevelonFPSDrop = options.capLevelonFPSDrop === undefined ? false : options.capLevelonFPSDrop;\n\t this.smoothAutoSwitchonFPSDrop = options.smoothAutoSwitchonFPSDrop === undefined ? this.capLevelonFPSDrop : options.smoothAutoSwitchonFPSDrop;\n\t this.switchDownOnLevelError = options.switchDownOnLevelError === undefined ? true : options.switchDownOnLevelError;\n\t this.seekMode = options.seekMode === undefined ? \"ACCURATE\" : options.seekMode;\n\t this.keyLoadMaxRetry = options.keyLoadMaxRetry === undefined ? 3 : options.keyLoadMaxRetry;\n\t this.keyLoadMaxRetryTimeout = options.keyLoadMaxRetryTimeout === undefined ? 64000 : options.keyLoadMaxRetryTimeout;\n\t this.fragmentLoadMaxRetry = options.fragmentLoadMaxRetry === undefined ? 3 : options.fragmentLoadMaxRetry;\n\t this.fragmentLoadMaxRetryTimeout = options.fragmentLoadMaxRetryTimeout === undefined ? 4000 : options.fragmentLoadMaxRetryTimeout;\n\t this.fragmentLoadSkipAfterMaxRetry = options.fragmentLoadSkipAfterMaxRetry === undefined ? true : options.fragmentLoadSkipAfterMaxRetry;\n\t this.maxSkippedFragments = options.maxSkippedFragments === undefined ? 5 : options.maxSkippedFragments;\n\t this.flushLiveURLCache = options.flushLiveURLCache === undefined ? false : options.flushLiveURLCache;\n\t this.initialLiveManifestSize = options.initialLiveManifestSize === undefined ? 1 : options.initialLiveManifestSize;\n\t this.manifestLoadMaxRetry = options.manifestLoadMaxRetry === undefined ? 3 : options.manifestLoadMaxRetry;\n\t this.manifestLoadMaxRetryTimeout = options.manifestLoadMaxRetryTimeout === undefined ? 64000 : options.manifestLoadMaxRetryTimeout;\n\t this.manifestRedundantLoadmaxRetry = options.manifestRedundantLoadmaxRetry === undefined ? 3 : options.manifestRedundantLoadmaxRetry;\n\t this.startFromBitrate = options.startFromBitrate === undefined ? -1 : options.startFromBitrate;\n\t this.startFromLevel = options.startFromLevel === undefined ? -1 : options.startFromLevel;\n\t this.autoStartMaxDuration = options.autoStartMaxDuration === undefined ? -1 : options.autoStartMaxDuration;\n\t this.seekFromLevel = options.seekFromLevel === undefined ? -1 : options.seekFromLevel;\n\t this.useHardwareVideoDecoder = options.useHardwareVideoDecoder === undefined ? false : options.useHardwareVideoDecoder;\n\t this.hlsLogEnabled = options.hlsLogEnabled === undefined ? true : options.hlsLogEnabled;\n\t this.logDebug = options.logDebug === undefined ? false : options.logDebug;\n\t this.logDebug2 = options.logDebug2 === undefined ? false : options.logDebug2;\n\t this.logWarn = options.logWarn === undefined ? true : options.logWarn;\n\t this.logError = options.logError === undefined ? true : options.logError;\n\t this.hlsMinimumDvrSize = options.hlsMinimumDvrSize === undefined ? 60 : options.hlsMinimumDvrSize;\n\t }\n\t }, {\n\t key: 'addListeners',\n\t value: function addListeners() {\n\t var _this = this;\n\t\n\t _componentsMediator2['default'].on(this.cid + ':flashready', function () {\n\t return _this.bootstrap();\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':timeupdate', function (timeMetrics) {\n\t return _this.updateTime(timeMetrics);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':playbackstate', function (state) {\n\t return _this.setPlaybackState(state);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':levelchanged', function (level) {\n\t return _this.levelChanged(level);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':error', function (code, url, message) {\n\t return _this.flashPlaybackError(code, url, message);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':fragmentloaded', function (loadmetrics) {\n\t return _this.onFragmentLoaded(loadmetrics);\n\t });\n\t _componentsMediator2['default'].once(this.cid + ':manifestloaded', function (duration, loadmetrics) {\n\t return _this.manifestLoaded(duration, loadmetrics);\n\t });\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.cid + ':flashready');\n\t _componentsMediator2['default'].off(this.cid + ':timeupdate');\n\t _componentsMediator2['default'].off(this.cid + ':playbackstate');\n\t _componentsMediator2['default'].off(this.cid + ':levelchanged');\n\t _componentsMediator2['default'].off(this.cid + ':playbackerror');\n\t _componentsMediator2['default'].off(this.cid + ':fragmentloaded');\n\t _componentsMediator2['default'].off(this.cid + ':manifestloaded');\n\t }\n\t }, {\n\t key: 'bootstrap',\n\t value: function bootstrap() {\n\t var _this2 = this;\n\t\n\t if (this.el.playerLoad) {\n\t this.el.width = \"100%\";\n\t this.el.height = \"100%\";\n\t this.isReadyState = true;\n\t this.srcLoaded = false;\n\t this.currentState = \"IDLE\";\n\t this.setFlashSettings();\n\t this.updatePlaybackType();\n\t if (this.autoPlay || this._shouldPlayOnBootstrap) {\n\t this.play();\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t } else {\n\t this._bootstrapAttempts = this._bootstrapAttempts || 0;\n\t if (++this._bootstrapAttempts <= MAX_ATTEMPTS) {\n\t setTimeout(function () {\n\t return _this2.bootstrap();\n\t }, 50);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { message: \"Max number of attempts reached\" }, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'setFlashSettings',\n\t value: function setFlashSettings() {\n\t this.el.playerSetAutoStartLoad(this.autoStartLoad);\n\t this.el.playerSetCapLevelToStage(this.capLevelToStage);\n\t this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode);\n\t this.el.playerSetMinBufferLength(this.minBufferLength);\n\t this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping);\n\t this.el.playerSetMaxBufferLength(this.maxBufferLength);\n\t this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength);\n\t this.el.playerSetLowBufferLength(this.lowBufferLength);\n\t this.el.playerSetMediaTimePeriod(this.mediaTimePeriod);\n\t this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod);\n\t this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold);\n\t this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop);\n\t this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop);\n\t this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError);\n\t this.el.playerSetSeekMode(this.seekMode);\n\t this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry);\n\t this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout);\n\t this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry);\n\t this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout);\n\t this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry);\n\t this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments);\n\t this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache);\n\t this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize);\n\t this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry);\n\t this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout);\n\t this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry);\n\t this.el.playerSetStartFromBitrate(this.startFromBitrate);\n\t this.el.playerSetStartFromLevel(this.startFromLevel);\n\t this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration);\n\t this.el.playerSetSeekFromLevel(this.seekFromLevel);\n\t this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder);\n\t this.el.playerSetLogInfo(this.hlsLogEnabled);\n\t this.el.playerSetLogDebug(this.logDebug);\n\t this.el.playerSetLogDebug2(this.logDebug2);\n\t this.el.playerSetLogWarn(this.logWarn);\n\t this.el.playerSetLogError(this.logError);\n\t }\n\t }, {\n\t key: 'setAutoStartLoad',\n\t value: function setAutoStartLoad(autoStartLoad) {\n\t this.autoStartLoad = autoStartLoad;\n\t this.el.playerSetAutoStartLoad(this.autoStartLoad);\n\t }\n\t }, {\n\t key: 'setCapLevelToStage',\n\t value: function setCapLevelToStage(capLevelToStage) {\n\t this.capLevelToStage = capLevelToStage;\n\t this.el.playerSetCapLevelToStage(this.capLevelToStage);\n\t }\n\t }, {\n\t key: 'setMaxLevelCappingMode',\n\t value: function setMaxLevelCappingMode(maxLevelCappingMode) {\n\t this.maxLevelCappingMode = maxLevelCappingMode;\n\t this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode);\n\t }\n\t }, {\n\t key: 'setSetMinBufferLength',\n\t value: function setSetMinBufferLength(minBufferLength) {\n\t this.minBufferLength = minBufferLength;\n\t this.el.playerSetMinBufferLength(this.minBufferLength);\n\t }\n\t }, {\n\t key: 'setMinBufferLengthCapping',\n\t value: function setMinBufferLengthCapping(minBufferLengthCapping) {\n\t this.minBufferLengthCapping = minBufferLengthCapping;\n\t this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping);\n\t }\n\t }, {\n\t key: 'setMaxBufferLength',\n\t value: function setMaxBufferLength(maxBufferLength) {\n\t this.maxBufferLength = maxBufferLength;\n\t this.el.playerSetMaxBufferLength(this.maxBufferLength);\n\t }\n\t }, {\n\t key: 'setMaxBackBufferLength',\n\t value: function setMaxBackBufferLength(maxBackBufferLength) {\n\t this.maxBackBufferLength = maxBackBufferLength;\n\t this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength);\n\t }\n\t }, {\n\t key: 'setLowBufferLength',\n\t value: function setLowBufferLength(lowBufferLength) {\n\t this.lowBufferLength = lowBufferLength;\n\t this.el.playerSetLowBufferLength(this.lowBufferLength);\n\t }\n\t }, {\n\t key: 'setMediaTimePeriod',\n\t value: function setMediaTimePeriod(mediaTimePeriod) {\n\t this.mediaTimePeriod = mediaTimePeriod;\n\t this.el.playerSetMediaTimePeriod(this.mediaTimePeriod);\n\t }\n\t }, {\n\t key: 'setFpsDroppedMonitoringPeriod',\n\t value: function setFpsDroppedMonitoringPeriod(fpsDroppedMonitoringPeriod) {\n\t this.fpsDroppedMonitoringPeriod = fpsDroppedMonitoringPeriod;\n\t this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod);\n\t }\n\t }, {\n\t key: 'setFpsDroppedMonitoringThreshold',\n\t value: function setFpsDroppedMonitoringThreshold(fpsDroppedMonitoringThreshold) {\n\t this.fpsDroppedMonitoringThreshold = fpsDroppedMonitoringThreshold;\n\t this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold);\n\t }\n\t }, {\n\t key: 'setCapLevelonFPSDrop',\n\t value: function setCapLevelonFPSDrop(capLevelonFPSDrop) {\n\t this.capLevelonFPSDrop = capLevelonFPSDrop;\n\t this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop);\n\t }\n\t }, {\n\t key: 'setSmoothAutoSwitchonFPSDrop',\n\t value: function setSmoothAutoSwitchonFPSDrop(smoothAutoSwitchonFPSDrop) {\n\t this.smoothAutoSwitchonFPSDrop = smoothAutoSwitchonFPSDrop;\n\t this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop);\n\t }\n\t }, {\n\t key: 'setSwitchDownOnLevelError',\n\t value: function setSwitchDownOnLevelError(switchDownOnLevelError) {\n\t this.switchDownOnLevelError = switchDownOnLevelError;\n\t this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError);\n\t }\n\t }, {\n\t key: 'setSeekMode',\n\t value: function setSeekMode(seekMode) {\n\t this.seekMode = seekMode;\n\t this.el.playerSetSeekMode(this.seekMode);\n\t }\n\t }, {\n\t key: 'setKeyLoadMaxRetry',\n\t value: function setKeyLoadMaxRetry(keyLoadMaxRetry) {\n\t this.keyLoadMaxRetry = keyLoadMaxRetry;\n\t this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setKeyLoadMaxRetryTimeout',\n\t value: function setKeyLoadMaxRetryTimeout(keyLoadMaxRetryTimeout) {\n\t this.keyLoadMaxRetryTimeout = keyLoadMaxRetryTimeout;\n\t this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setFragmentLoadMaxRetry',\n\t value: function setFragmentLoadMaxRetry(fragmentLoadMaxRetry) {\n\t this.fragmentLoadMaxRetry = fragmentLoadMaxRetry;\n\t this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setFragmentLoadMaxRetryTimeout',\n\t value: function setFragmentLoadMaxRetryTimeout(fragmentLoadMaxRetryTimeout) {\n\t this.fragmentLoadMaxRetryTimeout = fragmentLoadMaxRetryTimeout;\n\t this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setFragmentLoadSkipAfterMaxRetry',\n\t value: function setFragmentLoadSkipAfterMaxRetry(fragmentLoadSkipAfterMaxRetry) {\n\t this.fragmentLoadSkipAfterMaxRetry = fragmentLoadSkipAfterMaxRetry;\n\t this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry);\n\t }\n\t }, {\n\t key: 'setMaxSkippedFragments',\n\t value: function setMaxSkippedFragments(maxSkippedFragments) {\n\t this.maxSkippedFragments = maxSkippedFragments;\n\t this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments);\n\t }\n\t }, {\n\t key: 'setFlushLiveURLCache',\n\t value: function setFlushLiveURLCache(flushLiveURLCache) {\n\t this.flushLiveURLCache = flushLiveURLCache;\n\t this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache);\n\t }\n\t }, {\n\t key: 'setInitialLiveManifestSize',\n\t value: function setInitialLiveManifestSize(initialLiveManifestSize) {\n\t this.initialLiveManifestSize = initialLiveManifestSize;\n\t this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize);\n\t }\n\t }, {\n\t key: 'setManifestLoadMaxRetry',\n\t value: function setManifestLoadMaxRetry(manifestLoadMaxRetry) {\n\t this.manifestLoadMaxRetry = manifestLoadMaxRetry;\n\t this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setManifestLoadMaxRetryTimeout',\n\t value: function setManifestLoadMaxRetryTimeout(manifestLoadMaxRetryTimeout) {\n\t this.manifestLoadMaxRetryTimeout = manifestLoadMaxRetryTimeout;\n\t this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setManifestRedundantLoadmaxRetry',\n\t value: function setManifestRedundantLoadmaxRetry(manifestRedundantLoadmaxRetry) {\n\t this.manifestRedundantLoadmaxRetry = manifestRedundantLoadmaxRetry;\n\t this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry);\n\t }\n\t }, {\n\t key: 'setStartFromBitrate',\n\t value: function setStartFromBitrate(startFromBitrate) {\n\t this.startFromBitrate = startFromBitrate;\n\t this.el.playerSetStartFromBitrate(this.startFromBitrate);\n\t }\n\t }, {\n\t key: 'setStartFromLevel',\n\t value: function setStartFromLevel(startFromLevel) {\n\t this.startFromLevel = startFromLevel;\n\t this.el.playerSetStartFromLevel(this.startFromLevel);\n\t }\n\t }, {\n\t key: 'setAutoStartMaxDuration',\n\t value: function setAutoStartMaxDuration(autoStartMaxDuration) {\n\t this.autoStartMaxDuration = autoStartMaxDuration;\n\t this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration);\n\t }\n\t }, {\n\t key: 'setSeekFromLevel',\n\t value: function setSeekFromLevel(seekFromLevel) {\n\t this.seekFromLevel = seekFromLevel;\n\t this.el.playerSetSeekFromLevel(this.seekFromLevel);\n\t }\n\t }, {\n\t key: 'setUseHardwareVideoDecoder',\n\t value: function setUseHardwareVideoDecoder(useHardwareVideoDecoder) {\n\t this.useHardwareVideoDecoder = useHardwareVideoDecoder;\n\t this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder);\n\t }\n\t }, {\n\t key: 'setSetLogInfo',\n\t value: function setSetLogInfo(hlsLogEnabled) {\n\t this.hlsLogEnabled = hlsLogEnabled;\n\t this.el.playerSetLogInfo(this.hlsLogEnabled);\n\t }\n\t }, {\n\t key: 'setLogDebug',\n\t value: function setLogDebug(logDebug) {\n\t this.logDebug = logDebug;\n\t this.el.playerSetLogDebug(this.logDebug);\n\t }\n\t }, {\n\t key: 'setLogDebug2',\n\t value: function setLogDebug2(logDebug2) {\n\t this.logDebug2 = logDebug2;\n\t this.el.playerSetLogDebug2(this.logDebug2);\n\t }\n\t }, {\n\t key: 'setLogWarn',\n\t value: function setLogWarn(logWarn) {\n\t this.logWarn = logWarn;\n\t this.el.playerSetLogWarn(this.logWarn);\n\t }\n\t }, {\n\t key: 'setLogError',\n\t value: function setLogError(logError) {\n\t this.logError = logError;\n\t this.el.playerSetLogError(this.logError);\n\t }\n\t }, {\n\t key: 'levelChanged',\n\t value: function levelChanged(level) {\n\t var currentLevel = this.el.getLevels()[level];\n\t if (currentLevel) {\n\t this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BITRATE, {\n\t height: currentLevel.height,\n\t width: currentLevel.width,\n\t bandwidth: currentLevel.bandwidth,\n\t bitrate: currentLevel.bitrate,\n\t level: level\n\t });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_END);\n\t }\n\t }\n\t }, {\n\t key: 'updateTime',\n\t value: function updateTime(timeMetrics) {\n\t if (this.currentState === 'IDLE') {\n\t return;\n\t }\n\t\n\t var duration = this.normalizeDuration(timeMetrics.duration);\n\t var position = Math.min(Math.max(timeMetrics.position, 0), duration);\n\t var previousDVRStatus = this.dvrEnabled;\n\t var livePlayback = this.playbackType === _basePlayback2['default'].LIVE;\n\t this.dvrEnabled = livePlayback && duration > this.hlsMinimumDvrSize;\n\t\n\t if (duration === 100 || livePlayback === undefined) {\n\t return;\n\t }\n\t\n\t if (this.dvrEnabled !== previousDVRStatus) {\n\t this.updateSettings();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE, this.name);\n\t }\n\t\n\t if (livePlayback && (!this.dvrEnabled || !this.dvrInUse)) {\n\t position = duration;\n\t }\n\t\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: position, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (this.currentState === 'PAUSED') {\n\t this.el.playerResume();\n\t } else if (!this.srcLoaded && this.currentState !== \"PLAYING\") {\n\t this.firstPlay();\n\t } else {\n\t this.el.playerPlay();\n\t }\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return this.playbackType ? this.playbackType : null;\n\t }\n\t }, {\n\t key: 'getCurrentLevelIndex',\n\t value: function getCurrentLevelIndex() {\n\t return this.currentLevel;\n\t }\n\t }, {\n\t key: 'getCurrentLevel',\n\t value: function getCurrentLevel() {\n\t return this.levels[this.currentLevel];\n\t }\n\t }, {\n\t key: 'getCurrentBitrate',\n\t value: function getCurrentBitrate() {\n\t return this.levels[this.currentLevel].bitrate;\n\t }\n\t }, {\n\t key: 'setCurrentLevel',\n\t value: function setCurrentLevel(level) {\n\t this.currentLevel = level;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return this.highDefinition;\n\t }\n\t }, {\n\t key: 'getLevels',\n\t value: function getLevels() {\n\t return this.levels;\n\t }\n\t }, {\n\t key: 'setPlaybackState',\n\t value: function setPlaybackState(state) {\n\t if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\"].indexOf(state) >= 0) {\n\t this.bufferingState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t this.updateCurrentState(state);\n\t } else if ([\"PLAYING\", \"PAUSED\"].indexOf(state) >= 0) {\n\t if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\", \"IDLE\"].indexOf(this.currentState) >= 0) {\n\t this.bufferingState = false;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t }\n\t this.updateCurrentState(state);\n\t } else if (state === \"IDLE\") {\n\t this.srcLoaded = false;\n\t if (this.loop && [\"PLAYING_BUFFERING\", \"PLAYING\"].indexOf(this.currentState) >= 0) {\n\t this.play();\n\t this.seek(0);\n\t } else {\n\t this.updateCurrentState(state);\n\t this.hasEnded = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: this.el.getDuration() }, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'updateCurrentState',\n\t value: function updateCurrentState(state) {\n\t this.currentState = state;\n\t if (state !== \"IDLE\") {\n\t this.hasEnded = false;\n\t }\n\t this.updatePlaybackType();\n\t if (state === \"PLAYING\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t } else if (state === \"PAUSED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'updatePlaybackType',\n\t value: function updatePlaybackType() {\n\t this.playbackType = this.el.getType();\n\t if (this.playbackType) {\n\t this.playbackType = this.playbackType.toLowerCase();\n\t if (this.playbackType === _basePlayback2['default'].VOD) {\n\t this.startReportingProgress();\n\t } else {\n\t this.stopReportingProgress();\n\t }\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAYBACKSTATE, { type: this.playbackType });\n\t }\n\t }, {\n\t key: 'startReportingProgress',\n\t value: function startReportingProgress() {\n\t if (!this.reportingProgress) {\n\t this.reportingProgress = true;\n\t }\n\t }\n\t }, {\n\t key: 'stopReportingProgress',\n\t value: function stopReportingProgress() {\n\t this.reportingProgress = false;\n\t }\n\t }, {\n\t key: 'onFragmentLoaded',\n\t value: function onFragmentLoaded(loadmetrics) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_FRAGMENT_LOADED, loadmetrics);\n\t if (this.reportingProgress && this.el.getPosition) {\n\t var buffered = this.el.getPosition() + this.el.getbufferLength();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: this.el.getPosition(),\n\t current: buffered,\n\t total: this.el.getDuration()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'firstPlay',\n\t value: function firstPlay() {\n\t var _this3 = this;\n\t\n\t if (this.el.playerLoad) {\n\t this.setFlashSettings(); //ensure flushLiveURLCache will work (#327)\n\t this.el.playerLoad(this.src);\n\t _componentsMediator2['default'].once(this.cid + ':manifestloaded', function () {\n\t return _this3.el.playerPlay();\n\t });\n\t this.srcLoaded = true;\n\t } else {\n\t this._shouldPlayOnBootstrap = true;\n\t }\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t var _this4 = this;\n\t\n\t if (this.isReady) {\n\t this.el.playerVolume(value);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this4.volume(value);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t if (this.playbackType !== _basePlayback2['default'].LIVE || this.dvrEnabled) {\n\t this.el.playerPause();\n\t if (this.playbackType === _basePlayback2['default'].LIVE && this.dvrEnabled) {\n\t this.updateDvr(true);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.srcLoaded = false;\n\t this.el.playerStop();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t if (this.currentState) {\n\t return !!this.currentState.match(/playing/i);\n\t }\n\t return false;\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.normalizeDuration(this.el.getDuration());\n\t }\n\t }, {\n\t key: 'normalizeDuration',\n\t value: function normalizeDuration(duration) {\n\t if (this.playbackType === _basePlayback2['default'].LIVE) {\n\t // estimate 10 seconds of buffer time for live streams for seek positions\n\t duration = duration - 10;\n\t }\n\t return duration;\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var duration = this.el.getDuration();\n\t var time = 0;\n\t if (percentage > 0) {\n\t time = duration * percentage / 100;\n\t }\n\t this.seek(time);\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t var duration = this.el.getDuration();\n\t if (this.playbackType === _basePlayback2['default'].LIVE) {\n\t // seek operations to a time within 5 seconds from live stream will position playhead back to live\n\t var dvrInUse = time >= 0 && duration - time > 5;\n\t if (!dvrInUse) {\n\t time = -1;\n\t }\n\t this.updateDvr(dvrInUse);\n\t }\n\t this.el.playerSeek(time);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'updateDvr',\n\t value: function updateDvr(dvrInUse) {\n\t var previousDvrInUse = !!this.dvrInUse;\n\t this.dvrInUse = dvrInUse;\n\t if (this.dvrInUse !== previousDvrInUse) {\n\t this.updateSettings();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_DVR, this.dvrInUse);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STATS_ADD, { 'dvr': this.dvrInUse });\n\t }\n\t }\n\t }, {\n\t key: 'flashPlaybackError',\n\t value: function flashPlaybackError(code, url, message) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { code: code, url: url, message: message });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t }\n\t }, {\n\t key: 'manifestLoaded',\n\t value: function manifestLoaded(duration, loadmetrics) {\n\t var levels = this.el.getLevels();\n\t var levelsLength = levels.length;\n\t this._levels = [];\n\t\n\t for (var index = 0; index < levelsLength; index++) {\n\t this._levels.push({ id: index, label: levels[index].height + 'p' });\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVELS_AVAILABLE, this._levels);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LOADEDMETADATA, { duration: duration, data: loadmetrics });\n\t }\n\t }, {\n\t key: 'timeUpdate',\n\t value: function timeUpdate(time, duration) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.stopListening();\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t this.settings = _clapprZepto2['default'].extend({}, this.defaultSettings);\n\t if (this.playbackType === _basePlayback2['default'].VOD || this.dvrInUse) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.seekEnabled = true;\n\t } else if (this.dvrEnabled) {\n\t this.settings.left = [\"playpause\"];\n\t this.settings.seekEnabled = true;\n\t } else {\n\t this.settings.seekEnabled = false;\n\t }\n\t }\n\t }, {\n\t key: 'createCallbacks',\n\t value: function createCallbacks() {\n\t var _this5 = this;\n\t\n\t if (!window.Clappr) {\n\t window.Clappr = {};\n\t }\n\t if (!window.Clappr.flashlsCallbacks) {\n\t window.Clappr.flashlsCallbacks = {};\n\t }\n\t this.flashlsEvents = new _flashls_events2['default'](this.cid);\n\t window.Clappr.flashlsCallbacks[this.cid] = function (eventName, args) {\n\t _this5.flashlsEvents[eventName].apply(_this5.flashlsEvents, args);\n\t };\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'render', this).call(this);\n\t this.createCallbacks();\n\t return this;\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return FlasHLS;\n\t})(_playbacksBase_flash_playback2['default']);\n\t\n\texports['default'] = FlasHLS;\n\t\n\tFlasHLS.canPlay = function (resource, mimeType) {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t return _componentsBrowser2['default'].hasFlash && (resourceParts.length > 1 && resourceParts[1] === \"m3u8\" || mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl');\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 106 */\n/*!*************************************************!*\\\n !*** ./src/playbacks/flashls/flashls_events.js ***!\n \\*************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _componentsMediator = __webpack_require__(/*! ../../components/mediator */ 14);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar HLSEvents = (function () {\n\t function HLSEvents(instanceId) {\n\t _classCallCheck(this, HLSEvents);\n\t\n\t this.instanceId = instanceId;\n\t }\n\t\n\t _createClass(HLSEvents, [{\n\t key: 'ready',\n\t value: function ready() {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':flashready');\n\t }\n\t }, {\n\t key: 'videoSize',\n\t value: function videoSize(width, height) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':videosizechanged', width, height);\n\t }\n\t }, {\n\t key: 'complete',\n\t value: function complete() {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':complete');\n\t }\n\t }, {\n\t key: 'error',\n\t value: function error(code, url, message) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':error', code, url, message);\n\t }\n\t }, {\n\t key: 'manifest',\n\t value: function manifest(duration, loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':manifestloaded', duration, loadmetrics);\n\t }\n\t }, {\n\t key: 'audioLevelLoaded',\n\t value: function audioLevelLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiolevelloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'levelLoaded',\n\t value: function levelLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':levelloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'fragmentLoaded',\n\t value: function fragmentLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':fragmentloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'fragmentPlaying',\n\t value: function fragmentPlaying(playmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':fragmentplaying', playmetrics);\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(timemetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':timeupdate', timemetrics);\n\t }\n\t }, {\n\t key: 'state',\n\t value: function state(newState) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':playbackstate', newState);\n\t }\n\t }, {\n\t key: 'seekState',\n\t value: function seekState(newState) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':seekstate', newState);\n\t }\n\t }, {\n\t key: 'switch',\n\t value: function _switch(newLevel) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':levelchanged', newLevel);\n\t }\n\t }, {\n\t key: 'audioTracksListChange',\n\t value: function audioTracksListChange(trackList) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiotracklistchanged', trackList);\n\t }\n\t }, {\n\t key: 'audioTrackChange',\n\t value: function audioTrackChange(trackId) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiotrackchanged', trackId);\n\t }\n\t }]);\n\t\n\t return HLSEvents;\n\t})();\n\t\n\texports['default'] = HLSEvents;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 107 */\n/*!**********************************!*\\\n !*** ./src/playbacks/hls/hls.js ***!\n \\**********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _playbacksHtml5_video = __webpack_require__(/*! playbacks/html5_video */ 22);\n\t\n\tvar _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);\n\t\n\tvar _hlsJs = __webpack_require__(/*! hls.js */ 63);\n\t\n\tvar _hlsJs2 = _interopRequireDefault(_hlsJs);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar AUTO = -1;\n\t\n\tvar HLS = (function (_HTML5VideoPlayback) {\n\t _inherits(HLS, _HTML5VideoPlayback);\n\t\n\t _createClass(HLS, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'hls';\n\t }\n\t }, {\n\t key: 'levels',\n\t get: function get() {\n\t return this._levels || [];\n\t }\n\t }, {\n\t key: 'currentLevel',\n\t get: function get() {\n\t return this._currentLevel || AUTO;\n\t },\n\t set: function set(id) {\n\t this._currentLevel = id;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_START);\n\t this.hls.currentLevel = this._currentLevel;\n\t }\n\t }]);\n\t\n\t function HLS(options) {\n\t _classCallCheck(this, HLS);\n\t\n\t _get(Object.getPrototypeOf(HLS.prototype), 'constructor', this).call(this, options);\n\t this.minDvrSize = options.hlsMinimumDvrSize ? options.hlsMinimumDvrSize : 60;\n\t this.playbackType = _basePlayback2['default'].VOD;\n\t // for hls streams which have dvr with a sliding window,\n\t // the content at the start of the playlist is removed as new\n\t // content is appended at the end.\n\t // this means the actual playable start time will increase as the\n\t // start content is deleted\n\t // For streams with dvr where the entire recording is kept from the\n\t // beginning this should stay as 0\n\t this.playableRegionStartTime = 0;\n\t // if content is removed from the beginning then this empty area should\n\t // be ignored. \"playableRegionDuration\" does not consider this\n\t this.playableRegionDuration = 0;\n\t options.autoPlay && this.setupHls();\n\t }\n\t\n\t _createClass(HLS, [{\n\t key: 'setupHls',\n\t value: function setupHls() {\n\t var _this = this;\n\t\n\t this.hls = new _hlsJs2['default'](this.options.hlsjsConfig || {});\n\t this.hls.on(_hlsJs2['default'].Events.MEDIA_ATTACHED, function () {\n\t return _this.hls.loadSource(_this.options.src);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_LOADED, function (evt, data) {\n\t return _this.updatePlaybackType(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_UPDATED, function (evt, data) {\n\t return _this.updateDuration(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_SWITCH, function (evt, data) {\n\t return _this.onLevelSwitch(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.FRAG_LOADED, function (evt, data) {\n\t return _this.onFragmentLoaded(evt, data);\n\t });\n\t this.hls.attachMedia(this.el);\n\t }\n\t\n\t // override\n\t }, {\n\t key: 'setupSrc',\n\t value: function setupSrc(srcUrl) {}\n\t // this playback manages the src on the video element itself\n\t\n\t // the duration on the video element itself should not be used\n\t // as this does not necesarily represent the duration of the stream\n\t // https://github.com/clappr/clappr/issues/668#issuecomment-157036678\n\t\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.playableRegionDuration;\n\t }\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.el.currentTime - this.playableRegionStartTime;\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t var onDvr = this.dvrEnabled && time > 0 && time <= this.playableRegionDuration;\n\t time += this.playableRegionStartTime;\n\t _get(Object.getPrototypeOf(HLS.prototype), 'seek', this).call(this, time);\n\t this.updateDvr(onDvr);\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var seekTo = this.playableRegionDuration;\n\t if (percentage > 0) {\n\t seekTo = this.playableRegionDuration * (percentage / 100);\n\t }\n\t this.seek(seekTo);\n\t }\n\t }, {\n\t key: 'updateDvr',\n\t value: function updateDvr(status) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_DVR, status);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STATS_ADD, { 'dvr': status });\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t if (this.playbackType === _basePlayback2['default'].VOD) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t } else if (this.dvrEnabled) {\n\t this.settings.left = [\"playpause\"];\n\t } else {\n\t this.settings.left = [\"playstop\"];\n\t }\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate() {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.getCurrentTime(), total: this.getDuration() }, this.name);\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (!this.hls) {\n\t this.setupHls();\n\t }\n\t _get(Object.getPrototypeOf(HLS.prototype), 'play', this).call(this);\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t _get(Object.getPrototypeOf(HLS.prototype), 'pause', this).call(this);\n\t if (this.dvrEnabled) {\n\t this.updateDvr(true);\n\t }\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t _get(Object.getPrototypeOf(HLS.prototype), 'stop', this).call(this);\n\t if (this.hls) {\n\t this.hls.destroy();\n\t delete this.hls;\n\t }\n\t }\n\t }, {\n\t key: 'updatePlaybackType',\n\t value: function updatePlaybackType(evt, data) {\n\t this.playbackType = data.details.live ? _basePlayback2['default'].LIVE : _basePlayback2['default'].VOD;\n\t this.fillLevels();\n\t }\n\t }, {\n\t key: 'fillLevels',\n\t value: function fillLevels() {\n\t this._levels = this.hls.levels.map(function (level, index) {\n\t return { id: index, label: level.height + 'p' };\n\t });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVELS_AVAILABLE, this._levels);\n\t }\n\t }, {\n\t key: 'updateDuration',\n\t value: function updateDuration(evt, data) {\n\t var fragments = data.details.fragments;\n\t if (fragments.length > 0) {\n\t this.playableRegionStartTime = fragments[0].start;\n\t }\n\t this.playableRegionDuration = data.details.totalduration;\n\t this.onDurationChange();\n\t }\n\t }, {\n\t key: 'onFragmentLoaded',\n\t value: function onFragmentLoaded(evt, data) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_FRAGMENT_LOADED, data);\n\t }\n\t }, {\n\t key: 'onLevelSwitch',\n\t value: function onLevelSwitch(evt, data) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_END);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH, data);\n\t var currentLevel = this.hls.levels[data.level];\n\t if (currentLevel) {\n\t this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BITRATE, {\n\t height: currentLevel.height,\n\t width: currentLevel.width,\n\t bandwidth: currentLevel.bandwidth,\n\t bitrate: currentLevel.bitrate,\n\t level: data.level\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return this.playbackType;\n\t }\n\t }, {\n\t key: 'isSeekEnabled',\n\t value: function isSeekEnabled() {\n\t return this.playbackType === _basePlayback2['default'].VOD || this.dvrEnabled;\n\t }\n\t }, {\n\t key: 'dvrEnabled',\n\t get: function get() {\n\t return this.playableRegionDuration >= this.minDvrSize && this.getPlaybackType() === _basePlayback2['default'].LIVE;\n\t }\n\t }]);\n\t\n\t return HLS;\n\t})(_playbacksHtml5_video2['default']);\n\t\n\texports['default'] = HLS;\n\t\n\tHLS.canPlay = function (resource, mimeType) {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\" || mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl';\n\t\n\t return !!(_hlsJs2['default'].isSupported() && isHls && !_componentsBrowser2['default'].isSafari);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 108 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_audio/html5_audio.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _playbacksHtml5_video = __webpack_require__(/*! playbacks/html5_video */ 22);\n\t\n\tvar _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);\n\t\n\tvar _lodashFind = __webpack_require__(/*! lodash.find */ 16);\n\t\n\tvar _lodashFind2 = _interopRequireDefault(_lodashFind);\n\t\n\tvar HTML5Audio = (function (_HTML5Video) {\n\t _inherits(HTML5Audio, _HTML5Video);\n\t\n\t function HTML5Audio() {\n\t _classCallCheck(this, HTML5Audio);\n\t\n\t _get(Object.getPrototypeOf(HTML5Audio.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(HTML5Audio, [{\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].AOD;\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'html5_audio';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'audio';\n\t }\n\t }]);\n\t\n\t return HTML5Audio;\n\t})(_playbacksHtml5_video2['default']);\n\t\n\texports['default'] = HTML5Audio;\n\t\n\tHTML5Audio.canPlay = function (resourceUrl, mimeType) {\n\t var mimetypes = {\n\t 'wav': ['audio/wav'],\n\t 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n\t 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n\t 'oga': ['audio/ogg']\n\t };\n\t return _playbacksHtml5_video2['default']._canPlay('audio', mimetypes, resourceUrl, mimeType);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 109 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_video/html5_video.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 136);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar _publicIndexHtml = __webpack_require__(/*! ./public/index.html */ 146);\n\t\n\tvar _publicIndexHtml2 = _interopRequireDefault(_publicIndexHtml);\n\t\n\tvar _lodashFind = __webpack_require__(/*! lodash.find */ 16);\n\t\n\tvar _lodashFind2 = _interopRequireDefault(_lodashFind);\n\t\n\tvar MIMETYPES = {\n\t 'mp4': [\"avc1.42E01E\", \"avc1.58A01E\", \"avc1.4D401E\", \"avc1.64001E\", \"mp4v.20.8\", \"mp4v.20.240\", \"mp4a.40.2\"].map(function (codec) {\n\t return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"';\n\t }),\n\t 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n\t '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n\t 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n\t 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n\t 'm3u8': ['application/x-mpegurl']\n\t};\n\tMIMETYPES['ogv'] = MIMETYPES['ogg'];\n\tMIMETYPES['3gp'] = MIMETYPES['3gpp'];\n\t\n\tvar HTML5Video = (function (_Playback) {\n\t _inherits(HTML5Video, _Playback);\n\t\n\t _createClass(HTML5Video, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'html5_video';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'video';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicIndexHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-html5-video': ''\n\t };\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'canplay': 'handleBufferingEvents',\n\t 'canplaythrough': 'handleBufferingEvents',\n\t 'durationchange': 'onDurationChange',\n\t 'ended': 'onEnded',\n\t 'error': 'onError',\n\t 'loadedmetadata': 'onLoadedMetadata',\n\t 'loadstart': 'onLoadStart',\n\t 'pause': 'onPause',\n\t 'playing': 'onPlaying',\n\t 'progress': 'onProgress',\n\t 'seeked': 'handleBufferingEvents',\n\t 'seeking': 'handleBufferingEvents',\n\t 'stalled': 'handleBufferingEvents',\n\t 'timeupdate': 'onTimeUpdate',\n\t 'waiting': 'handleBufferingEvents'\n\t };\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.el.ended;\n\t }\n\t\n\t /**\n\t * Determine if the playback is having to buffer in order for\n\t * playback to be smooth.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return this.bufferingState;\n\t }\n\t }]);\n\t\n\t function HTML5Video(options) {\n\t _classCallCheck(this, HTML5Video);\n\t\n\t _get(Object.getPrototypeOf(HTML5Video.prototype), 'constructor', this).call(this, options);\n\t this.loadStarted = false;\n\t this.playheadMoving = false;\n\t this.playheadMovingTimer = null;\n\t this.options = options;\n\t this.setupSrc(options.src);\n\t this.el.loop = options.loop;\n\t if (options.poster) {\n\t this.$el.attr(\"poster\", options.poster);\n\t }\n\t this.el.autoplay = options.autoPlay;\n\t if (_componentsBrowser2['default'].isSafari) {\n\t this.setupSafari();\n\t } else {\n\t this.el.preload = options.preload ? options.preload : 'metadata';\n\t this.settings.seekEnabled = true;\n\t }\n\t this.settings = { 'default': ['seekbar'] };\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.right = [\"fullscreen\", \"volume\", \"hd-indicator\"];\n\t }\n\t\n\t /**\n\t * Sets the source url on the element, and also the 'src' property.\n\t * @method setupSrc\n\t * @param {String} srcUrl The source URL.\n\t */\n\t\n\t _createClass(HTML5Video, [{\n\t key: 'setupSrc',\n\t value: function setupSrc(srcUrl) {\n\t this.src = srcUrl;\n\t this.el.src = srcUrl;\n\t }\n\t }, {\n\t key: 'setupSafari',\n\t value: function setupSafari() {\n\t this.el.preload = 'auto';\n\t }\n\t }, {\n\t key: 'onLoadedMetadata',\n\t value: function onLoadedMetadata(e) {\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LOADEDMETADATA, { duration: e.target.duration, data: e });\n\t this.updateSettings();\n\t var autoSeekFromUrl = typeof this.options.autoSeekFromUrl === \"undefined\" || this.options.autoSeekFromUrl;\n\t if (this.getPlaybackType() !== _basePlayback2['default'].LIVE && autoSeekFromUrl) {\n\t this.checkInitialSeek();\n\t }\n\t }\n\t }, {\n\t key: 'onDurationChange',\n\t value: function onDurationChange() {\n\t this.updateSettings();\n\t this.onTimeUpdate();\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n\t // that's why we check it again and update media control accordingly.\n\t if (this.getPlaybackType() === _basePlayback2['default'].VOD) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t } else {\n\t this.settings.left = [\"playstop\"];\n\t }\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'isSeekEnabled',\n\t value: function isSeekEnabled() {\n\t return isFinite(this.getDuration());\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? _basePlayback2['default'].LIVE : _basePlayback2['default'].VOD;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return false;\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (!this.loadStarted && this.el.preload === 'none') {\n\t this.loadStarted = true;\n\t this.handleBufferingEvents();\n\t }\n\t this.el.play();\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.el.pause();\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.pause();\n\t this.el.currentTime = 0;\n\t this.stopPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t this.el.volume = value / 100;\n\t }\n\t }, {\n\t key: 'mute',\n\t value: function mute() {\n\t this.el.volume = 0;\n\t }\n\t }, {\n\t key: 'unmute',\n\t value: function unmute() {\n\t this.el.volume = 1;\n\t }\n\t }, {\n\t key: 'isMuted',\n\t value: function isMuted() {\n\t return !!this.el.volume;\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return !this.el.paused && !this.el.ended;\n\t }\n\t }, {\n\t key: 'startPlayheadMovingChecks',\n\t value: function startPlayheadMovingChecks() {\n\t if (this.playheadMovingTimer !== null) {\n\t return;\n\t }\n\t this.playheadMovingTimeOnCheck = null;\n\t this.determineIfPlayheadMoving();\n\t this.playheadMovingTimer = setInterval(this.determineIfPlayheadMoving.bind(this), 500);\n\t }\n\t }, {\n\t key: 'stopPlayheadMovingChecks',\n\t value: function stopPlayheadMovingChecks() {\n\t if (this.playheadMovingTimer === null) {\n\t return;\n\t }\n\t clearInterval(this.playheadMovingTimer);\n\t this.playheadMovingTimer = null;\n\t this.playheadMoving = false;\n\t }\n\t }, {\n\t key: 'determineIfPlayheadMoving',\n\t value: function determineIfPlayheadMoving() {\n\t var before = this.playheadMovingTimeOnCheck;\n\t var now = this.el.currentTime;\n\t this.playheadMoving = before !== now;\n\t this.playheadMovingTimeOnCheck = now;\n\t this.handleBufferingEvents();\n\t }\n\t }, {\n\t key: 'onLoadStart',\n\t value: function onLoadStart() {\n\t if (this.el.preload !== 'none') {\n\t // when preload is none the onLoadStart event is still fired\n\t // immediately. Pretend that load starts in play()\n\t this.loadStarted = true;\n\t this.handleBufferingEvents();\n\t }\n\t }\n\t }, {\n\t key: 'onPlaying',\n\t value: function onPlaying() {\n\t this.startPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.stopPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE);\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t }\n\t\n\t // The playback should be classed as buffering if the following are true:\n\t // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n\t // - the media hasn't \"ended\"\n\t // - loading has started\n\t }, {\n\t key: 'handleBufferingEvents',\n\t value: function handleBufferingEvents() {\n\t var playheadShouldBeMoving = !this.el.ended && !this.el.paused;\n\t var buffering = this.loadStarted && !this.el.ended && (playheadShouldBeMoving && !this.playheadMoving || this.el.readyState < this.el.HAVE_FUTURE_DATA);\n\t if (this.bufferingState !== buffering) {\n\t this.bufferingState = buffering;\n\t if (buffering) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError(event) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, this.el.error, this.name);\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.stop();\n\t this.el.src = '';\n\t this.src = null;\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t this.el.currentTime = time;\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var time = this.el.duration * (percentage / 100);\n\t this.seek(time);\n\t }\n\t }, {\n\t key: 'checkInitialSeek',\n\t value: function checkInitialSeek() {\n\t var seekTime = (0, _baseUtils.seekStringToSeconds)(window.location.href);\n\t if (seekTime !== 0) {\n\t this.seek(seekTime);\n\t }\n\t }\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.el.currentTime;\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.el.duration;\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate() {\n\t this.handleBufferingEvents();\n\t if (this.getPlaybackType() === _basePlayback2['default'].LIVE) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 1, total: 1 }, this.name);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.el.currentTime, total: this.el.duration }, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'onProgress',\n\t value: function onProgress() {\n\t if (!this.el.buffered.length) {\n\t return;\n\t }\n\t var bufferedPos = 0;\n\t for (var i = 0; i < this.el.buffered.length; i++) {\n\t if (this.el.currentTime >= this.el.buffered.start(i) && this.el.currentTime <= this.el.buffered.end(i)) {\n\t bufferedPos = i;\n\t break;\n\t }\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: this.el.buffered.start(bufferedPos),\n\t current: this.el.buffered.end(bufferedPos),\n\t total: this.el.duration\n\t });\n\t }\n\t }, {\n\t key: 'typeFor',\n\t value: function typeFor(src) {\n\t var resourceParts = src.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\";\n\t return isHls ? 'application/vnd.apple.mpegurl' : 'video/mp4';\n\t }\n\t }, {\n\t key: 'ready',\n\t value: function ready() {\n\t if (this.isReadyState) {\n\t return;\n\t }\n\t this.isReadyState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t\n\t this.src && this.$el.html(this.template({ src: this.src, type: this.typeFor(this.src) }));\n\t\n\t if (this.options.useVideoTagDefaultControls) {\n\t this.$el.attr('controls', 'controls');\n\t }\n\t\n\t if (this.options.disableVideoTagContextMenu) {\n\t this.$el.on(\"contextmenu\", function () {\n\t return false;\n\t });\n\t }\n\t\n\t this.$el.append(style);\n\t this.ready();\n\t return this;\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return HTML5Video;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = HTML5Video;\n\t\n\tHTML5Video._canPlay = function (type, mimeTypesByExtension, resourceUrl, mimeType) {\n\t var extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1];\n\t var mimeTypes = mimeType || mimeTypesByExtension[extension] || [];\n\t mimeTypes = mimeTypes.constructor === Array ? mimeTypes : [mimeTypes];\n\t\n\t var media = document.createElement(type);\n\t return !!(0, _lodashFind2['default'])(mimeTypes, function (mediaType) {\n\t return !!media.canPlayType(mediaType).replace(/no/, '');\n\t });\n\t};\n\t\n\tHTML5Video.canPlay = function (resourceUrl, mimeType) {\n\t return HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType);\n\t};\n\t\n\tmodule.exports = HTML5Video;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 110 */\n/*!********************************************!*\\\n !*** ./src/playbacks/html_img/html_img.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 137);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar HTMLImg = (function (_Playback) {\n\t _inherits(HTMLImg, _Playback);\n\t\n\t _createClass(HTMLImg, [{\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].NO_OP;\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'html_img';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'img';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-html-img': ''\n\t };\n\t }\n\t }]);\n\t\n\t function HTMLImg(params) {\n\t _classCallCheck(this, HTMLImg);\n\t\n\t _get(Object.getPrototypeOf(HTMLImg.prototype), 'constructor', this).call(this, params);\n\t this.el.src = params.src;\n\t }\n\t\n\t _createClass(HTMLImg, [{\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t this.$el.append(style);\n\t return this;\n\t }\n\t }]);\n\t\n\t return HTMLImg;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = HTMLImg;\n\t\n\tHTMLImg.canPlay = function (resource) {\n\t return !!resource.match(/(.*).(png|jpg|jpeg|gif|bmp)/);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 111 */\n/*!**************************************!*\\\n !*** ./src/playbacks/no_op/no_op.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 138);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar _publicErrorHtml = __webpack_require__(/*! ./public/error.html */ 147);\n\t\n\tvar _publicErrorHtml2 = _interopRequireDefault(_publicErrorHtml);\n\t\n\tvar NoOp = (function (_Playback) {\n\t _inherits(NoOp, _Playback);\n\t\n\t _createClass(NoOp, [{\n\t key: 'getNoOpMessage',\n\t value: function getNoOpMessage() {\n\t var messages = {\n\t 'en': 'Your browser does not support the playback of this video. Please try using a different browser.',\n\t 'es': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.',\n\t 'pt': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.'\n\t };\n\t messages['en-us'] = messages['en'];\n\t messages['es-419'] = messages['es'];\n\t messages['pt-br'] = messages['pt'];\n\t return messages[(0, _baseUtils.getBrowserLanguage)()] || messages['en'];\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'no_op';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicErrorHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return { 'data-no-op': '' };\n\t }\n\t }]);\n\t\n\t function NoOp(options) {\n\t _classCallCheck(this, NoOp);\n\t\n\t _get(Object.getPrototypeOf(NoOp.prototype), 'constructor', this).call(this, options);\n\t this.options = options;\n\t }\n\t\n\t _createClass(NoOp, [{\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t this.$el.html(this.template({ message: this.options.playbackNotSupportedMessage || this.getNoOpMessage() }));\n\t this.$el.append(style);\n\t this.animate();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t return this;\n\t }\n\t }, {\n\t key: 'noise',\n\t value: function noise() {\n\t var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height);\n\t\n\t try {\n\t var buffer32 = new Uint32Array(idata.data.buffer);\n\t } catch (err) {\n\t var buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4);\n\t var data = idata.data;\n\t for (var i = 0; i < data.length; i++) {\n\t buffer32[i] = data[i];\n\t }\n\t }\n\t\n\t var len = buffer32.length;\n\t var run = 0;\n\t var color = 0;\n\t var m = Math.random() * 6 + 4;\n\t\n\t for (var i = 0; i < len;) {\n\t if (run < 0) {\n\t run = m * Math.random();\n\t var p = Math.pow(Math.random(), 0.4);\n\t color = 255 * p << 24;\n\t }\n\t run -= 1;\n\t buffer32[i++] = color;\n\t }\n\t this.context.putImageData(idata, 0, 0);\n\t }\n\t }, {\n\t key: 'loop',\n\t value: function loop() {\n\t var _this = this;\n\t\n\t if (this.stop === true) {\n\t return;\n\t }\n\t this.noise();\n\t this.animationHandle = (0, _baseUtils.requestAnimationFrame)(function () {\n\t return _this.loop();\n\t });\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t if (this.animationHandle) {\n\t (0, _baseUtils.cancelAnimationFrame)(this.animationHandle);\n\t this.stop = true;\n\t }\n\t }\n\t }, {\n\t key: 'animate',\n\t value: function animate() {\n\t this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0];\n\t this.context = this.canvas.getContext('2d');\n\t this.loop();\n\t }\n\t }]);\n\t\n\t return NoOp;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = NoOp;\n\t\n\tNoOp.canPlay = function (source) {\n\t return true;\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 112 */\n/*!******************************************************!*\\\n !*** ./src/plugins/click_to_pause/click_to_pause.js ***!\n \\******************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t//Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar ClickToPausePlugin = (function (_ContainerPlugin) {\n\t _inherits(ClickToPausePlugin, _ContainerPlugin);\n\t\n\t _createClass(ClickToPausePlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'click_to_pause';\n\t }\n\t }]);\n\t\n\t function ClickToPausePlugin(container) {\n\t _classCallCheck(this, ClickToPausePlugin);\n\t\n\t _get(Object.getPrototypeOf(ClickToPausePlugin.prototype), 'constructor', this).call(this, container);\n\t }\n\t\n\t _createClass(ClickToPausePlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t if (!this.options.chromeless && !_componentsBrowser2['default'].isMobile) {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_CLICK, this.click);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_SETTINGSUPDATE, this.settingsUpdate);\n\t }\n\t }\n\t }, {\n\t key: 'click',\n\t value: function click() {\n\t if (this.container.getPlaybackType() !== _basePlayback2['default'].LIVE || this.container.isDvrEnabled()) {\n\t if (this.container.isPlaying()) {\n\t this.container.pause();\n\t } else {\n\t this.container.play();\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'settingsUpdate',\n\t value: function settingsUpdate() {\n\t this.container.$el.removeClass('pointer-enabled');\n\t if (this.container.getPlaybackType() !== _basePlayback2['default'].LIVE || this.container.isDvrEnabled()) {\n\t this.container.$el.addClass('pointer-enabled');\n\t }\n\t }\n\t }]);\n\t\n\t return ClickToPausePlugin;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = ClickToPausePlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 113 */\n/*!*********************************************!*\\\n !*** ./src/plugins/click_to_pause/index.js ***!\n \\*********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./click_to_pause */ 112);\n\n/***/ },\n/* 114 */\n/*!**************************************************!*\\\n !*** ./src/plugins/dvr_controls/dvr_controls.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_core_plugin = __webpack_require__(/*! base/ui_core_plugin */ 26);\n\t\n\tvar _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicDvr_controlsScss = __webpack_require__(/*! ./public/dvr_controls.scss */ 139);\n\t\n\tvar _publicDvr_controlsScss2 = _interopRequireDefault(_publicDvr_controlsScss);\n\t\n\tvar _publicIndexHtml = __webpack_require__(/*! ./public/index.html */ 148);\n\t\n\tvar _publicIndexHtml2 = _interopRequireDefault(_publicIndexHtml);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar DVRControls = (function (_UICorePlugin) {\n\t _inherits(DVRControls, _UICorePlugin);\n\t\n\t _createClass(DVRControls, [{\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicIndexHtml2['default']);\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'dvr_controls';\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'click .live-button': 'click'\n\t };\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'dvr-controls',\n\t 'data-dvr-controls': ''\n\t };\n\t }\n\t }]);\n\t\n\t function DVRControls(core) {\n\t _classCallCheck(this, DVRControls);\n\t\n\t _get(Object.getPrototypeOf(DVRControls.prototype), 'constructor', this).call(this, core);\n\t this.core = core;\n\t this.settingsUpdate();\n\t }\n\t\n\t _createClass(DVRControls, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_RENDERED, this.settingsUpdate);\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.render);\n\t if (this.core.getCurrentContainer()) {\n\t this.listenToOnce(this.core.getCurrentContainer(), _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.render);\n\t this.listenTo(this.core.getCurrentContainer(), _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'dvrChanged',\n\t value: function dvrChanged(dvrEnabled) {\n\t this.settingsUpdate();\n\t this.core.mediaControl.$el.addClass('live');\n\t if (dvrEnabled) {\n\t this.core.mediaControl.$el.addClass('dvr');\n\t this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide();\n\t } else {\n\t this.core.mediaControl.$el.removeClass('dvr');\n\t }\n\t }\n\t }, {\n\t key: 'click',\n\t value: function click() {\n\t if (!this.core.mediaControl.container.isPlaying()) {\n\t this.core.mediaControl.container.play();\n\t }\n\t if (this.core.mediaControl.$el.hasClass('dvr')) {\n\t this.core.mediaControl.container.seek(-1);\n\t }\n\t }\n\t }, {\n\t key: 'settingsUpdate',\n\t value: function settingsUpdate() {\n\t var _this = this;\n\t\n\t this.stopListening();\n\t if (this.shouldRender()) {\n\t this.render();\n\t this.$el.click(function () {\n\t return _this.click();\n\t });\n\t }\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'shouldRender',\n\t value: function shouldRender() {\n\t var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls;\n\t return useDvrControls && this.core.getPlaybackType() === _basePlayback2['default'].LIVE;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.style = this.style || _baseStyler2['default'].getStyleFor(_publicDvr_controlsScss2['default'], { baseUrl: this.core.options.baseUrl });\n\t this.$el.html(this.template());\n\t this.$el.append(this.style);\n\t if (this.shouldRender()) {\n\t this.core.mediaControl.$el.addClass('live');\n\t this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el);\n\t }\n\t return this;\n\t }\n\t }]);\n\t\n\t return DVRControls;\n\t})(_baseUi_core_plugin2['default']);\n\t\n\texports['default'] = DVRControls;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 115 */\n/*!*******************************************!*\\\n !*** ./src/plugins/dvr_controls/index.js ***!\n \\*******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./dvr_controls */ 114);\n\n/***/ },\n/* 116 */\n/*!**********************************!*\\\n !*** ./src/plugins/end_video.js ***!\n \\**********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar EndVideo = (function (_CorePlugin) {\n\t _inherits(EndVideo, _CorePlugin);\n\t\n\t function EndVideo() {\n\t _classCallCheck(this, EndVideo);\n\t\n\t _get(Object.getPrototypeOf(EndVideo.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(EndVideo, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t var container = this.core.getCurrentContainer();\n\t if (container) {\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ENDED, this.ended);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_STOP, this.ended);\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'ended',\n\t value: function ended() {\n\t if (_baseUtils.Fullscreen.isFullscreen()) {\n\t this.core.toggleFullscreen();\n\t }\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'end_video';\n\t }\n\t }]);\n\t\n\t return EndVideo;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = EndVideo;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 117 */\n/*!****************************************!*\\\n !*** ./src/plugins/favicon/favicon.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar Favicon = (function (_CorePlugin) {\n\t _inherits(Favicon, _CorePlugin);\n\t\n\t _createClass(Favicon, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'favicon';\n\t }\n\t }]);\n\t\n\t function Favicon(core) {\n\t _classCallCheck(this, Favicon);\n\t\n\t _get(Object.getPrototypeOf(Favicon.prototype), 'constructor', this).call(this, core);\n\t this.oldIcon = (0, _clapprZepto2['default'])('link[rel=\"shortcut icon\"]');\n\t this.configure();\n\t }\n\t\n\t _createClass(Favicon, [{\n\t key: 'configure',\n\t value: function configure() {\n\t if (!this.core.options.changeFavicon) {\n\t this.disable();\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.configure);\n\t } else {\n\t this.stopListening(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE);\n\t this.enable();\n\t }\n\t }\n\t }, {\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.configure);\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t if (this.core.mediaControl.container) {\n\t this.containerChanged();\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_PLAY, this.setPlayIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_PAUSE, this.setPauseIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_STOP, this.resetIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_ENDED, this.resetIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_ERROR, this.resetIcon);\n\t }\n\t }, {\n\t key: 'disable',\n\t value: function disable() {\n\t _get(Object.getPrototypeOf(Favicon.prototype), 'disable', this).call(this);\n\t this.resetIcon();\n\t }\n\t }, {\n\t key: 'createIcon',\n\t value: function createIcon(charCode) {\n\t var canvas = (0, _clapprZepto2['default'])(' ');\n\t canvas[0].width = 32;\n\t canvas[0].height = 32;\n\t var ctx = canvas[0].getContext('2d');\n\t ctx.fillStyle = '#000';\n\t ctx.font = '25px Player';\n\t ctx.fillText(String.fromCharCode(charCode), 5, 26);\n\t var icon = (0, _clapprZepto2['default'])(' ');\n\t icon.attr('href', canvas[0].toDataURL('image/png'));\n\t return icon;\n\t }\n\t }, {\n\t key: 'setPlayIcon',\n\t value: function setPlayIcon() {\n\t if (!this.playIcon) {\n\t this.playIcon = this.createIcon(0xe001);\n\t }\n\t this.changeIcon(this.playIcon);\n\t }\n\t }, {\n\t key: 'setPauseIcon',\n\t value: function setPauseIcon() {\n\t if (!this.pauseIcon) {\n\t this.pauseIcon = this.createIcon(0xe002);\n\t }\n\t this.changeIcon(this.pauseIcon);\n\t }\n\t }, {\n\t key: 'resetIcon',\n\t value: function resetIcon() {\n\t if (this.currentIcon) {\n\t this.currentIcon.remove();\n\t }\n\t (0, _clapprZepto2['default'])('head').append(this.oldIcon);\n\t }\n\t }, {\n\t key: 'changeIcon',\n\t value: function changeIcon(icon) {\n\t if (icon) {\n\t this.oldIcon.remove();\n\t if (this.currentIcon) {\n\t this.currentIcon.remove();\n\t }\n\t this.currentIcon = icon;\n\t (0, _clapprZepto2['default'])('head').append(icon);\n\t }\n\t }\n\t }]);\n\t\n\t return Favicon;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = Favicon;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 118 */\n/*!**************************************!*\\\n !*** ./src/plugins/favicon/index.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./favicon.js */ 117);\n\n/***/ },\n/* 119 */\n/*!**********************************************************!*\\\n !*** ./src/plugins/google_analytics/google_analytics.js ***!\n \\**********************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar GoogleAnalytics = (function (_ContainerPlugin) {\n\t _inherits(GoogleAnalytics, _ContainerPlugin);\n\t\n\t _createClass(GoogleAnalytics, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'google_analytics';\n\t }\n\t }]);\n\t\n\t function GoogleAnalytics(container) {\n\t _classCallCheck(this, GoogleAnalytics);\n\t\n\t _get(Object.getPrototypeOf(GoogleAnalytics.prototype), 'constructor', this).call(this, container);\n\t if (this.container.options.gaAccount) {\n\t this.account = this.container.options.gaAccount;\n\t this.trackerName = this.container.options.gaTrackerName ? this.container.options.gaTrackerName + \".\" : 'Clappr.';\n\t this.domainName = this.container.options.gaDomainName;\n\t this.currentHDState = undefined;\n\t this.embedScript();\n\t }\n\t }\n\t\n\t _createClass(GoogleAnalytics, [{\n\t key: 'embedScript',\n\t value: function embedScript() {\n\t var _this = this;\n\t\n\t if (!window._gat) {\n\t var script = document.createElement('script');\n\t script.setAttribute(\"type\", \"text/javascript\");\n\t script.setAttribute(\"async\", \"async\");\n\t script.setAttribute(\"src\", \"//www.google-analytics.com/ga.js\");\n\t script.onload = function () {\n\t return _this.addEventListeners();\n\t };\n\t document.body.appendChild(script);\n\t } else {\n\t this.addEventListeners();\n\t }\n\t }\n\t }, {\n\t key: 'addEventListeners',\n\t value: function addEventListeners() {\n\t var _this2 = this;\n\t\n\t if (this.container) {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_READY, this.onReady);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PAUSE, this.onPause);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ERROR, this.onError);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_VOLUME, function (event) {\n\t return _this2.onVolumeChanged(event);\n\t });\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_SEEK, function (event) {\n\t return _this2.onSeek(event);\n\t });\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_FULL_SCREEN, this.onFullscreen);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_HIGHDEFINITIONUPDATE, this.onHD);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR);\n\t }\n\t _gaq.push([this.trackerName + '_setAccount', this.account]);\n\t if (!!this.domainName) _gaq.push([this.trackerName + '_setDomainName', this.domainName]);\n\t }\n\t }, {\n\t key: 'onReady',\n\t value: function onReady() {\n\t this.push([\"Video\", \"Playback\", this.container.playback.name]);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.push([\"Video\", \"Play\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.push([\"Video\", \"Stop\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.push([\"Video\", \"Ended\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t this.push([\"Video\", \"Buffering\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t this.push([\"Video\", \"Bufferfull\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError() {\n\t this.push([\"Video\", \"Error\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onHD',\n\t value: function onHD(isHD) {\n\t var status = isHD ? \"ON\" : \"OFF\";\n\t if (status !== this.currentHDState) {\n\t this.currentHDState = status;\n\t this.push([\"Video\", \"HD - \" + status, this.container.playback.src]);\n\t }\n\t }\n\t }, {\n\t key: 'onPlaybackChanged',\n\t value: function onPlaybackChanged(playbackState) {\n\t if (playbackState.type !== null) {\n\t this.push([\"Video\", \"Playback Type - \" + playbackState.type, this.container.playback.src]);\n\t }\n\t }\n\t }, {\n\t key: 'onDVR',\n\t value: function onDVR(dvrInUse) {\n\t var status = dvrInUse ? \"ON\" : \"OFF\";\n\t this.push([\"Interaction\", \"DVR - \" + status, this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.push([\"Video\", \"Pause\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onSeek',\n\t value: function onSeek() {\n\t this.push([\"Video\", \"Seek\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onVolumeChanged',\n\t value: function onVolumeChanged() {\n\t this.push([\"Interaction\", \"Volume\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onFullscreen',\n\t value: function onFullscreen() {\n\t this.push([\"Interaction\", \"Fullscreen\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'push',\n\t value: function push(array) {\n\t var res = [this.trackerName + \"_trackEvent\"].concat(array);\n\t _gaq.push(res);\n\t }\n\t }]);\n\t\n\t return GoogleAnalytics;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = GoogleAnalytics;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 120 */\n/*!***********************************************!*\\\n !*** ./src/plugins/google_analytics/index.js ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./google_analytics */ 119);\n\n/***/ },\n/* 121 */\n/*!********************************!*\\\n !*** ./src/plugins/log/log.js ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _baseKibo = __webpack_require__(/*! base/kibo */ 34);\n\t\n\tvar _baseKibo2 = _interopRequireDefault(_baseKibo);\n\t\n\tvar BOLD = 'font-weight: bold; font-size: 13px;';\n\tvar INFO = 'color: #006600;' + BOLD;\n\tvar DEBUG = 'color: #0000ff;' + BOLD;\n\tvar WARN = 'color: #ff8000;' + BOLD;\n\tvar ERROR = 'color: #ff0000;' + BOLD;\n\t\n\tvar LEVEL_DEBUG = 0;\n\tvar LEVEL_INFO = 1;\n\tvar LEVEL_WARN = 2;\n\tvar LEVEL_ERROR = 3;\n\tvar LEVEL_DISABLED = 4;\n\t\n\tvar COLORS = [DEBUG, INFO, WARN, ERROR, ERROR];\n\tvar DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled'];\n\t\n\tvar Log = (function () {\n\t function Log() {\n\t var _this = this;\n\t\n\t var level = arguments.length <= 0 || arguments[0] === undefined ? LEVEL_INFO : arguments[0];\n\t var offLevel = arguments.length <= 1 || arguments[1] === undefined ? LEVEL_DISABLED : arguments[1];\n\t\n\t _classCallCheck(this, Log);\n\t\n\t this.kibo = new _baseKibo2['default']();\n\t this.kibo.down(['ctrl shift d'], function () {\n\t return _this.onOff();\n\t });\n\t this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress'];\n\t this.level = level;\n\t this.offLevel = offLevel;\n\t }\n\t\n\t _createClass(Log, [{\n\t key: 'debug',\n\t value: function debug(klass) {\n\t this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'info',\n\t value: function info(klass) {\n\t this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'warn',\n\t value: function warn(klass) {\n\t this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'error',\n\t value: function error(klass) {\n\t this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'onOff',\n\t value: function onOff() {\n\t if (this.level === this.offLevel) {\n\t this.level = this.previousLevel;\n\t } else {\n\t this.previousLevel = this.level;\n\t this.level = this.offLevel;\n\t }\n\t // handle instances where console.log is unavailable\n\t if (window.console && window.console.log) {\n\t console.log(\"%c[Clappr.Log] set log level to \" + DESCRIPTIONS[this.level], WARN);\n\t }\n\t }\n\t }, {\n\t key: 'level',\n\t value: function level(newLevel) {\n\t this.level = newLevel;\n\t }\n\t }, {\n\t key: 'log',\n\t value: function log(klass, level, message) {\n\t if (this.BLACKLIST.indexOf(message[0]) >= 0) return;\n\t if (level < this.level) return;\n\t\n\t if (!message) {\n\t message = klass;\n\t klass = null;\n\t }\n\t var klassDescription = \"\";\n\t var color = COLORS[level];\n\t if (klass) {\n\t klassDescription = \"[\" + klass + \"]\";\n\t }\n\t if (window.console && window.console.log) {\n\t console.log.apply(console, [\"%c[\" + DESCRIPTIONS[level] + \"]\" + klassDescription, color].concat(message));\n\t }\n\t }\n\t }]);\n\t\n\t return Log;\n\t})();\n\t\n\texports['default'] = Log;\n\t\n\tLog.LEVEL_DEBUG = LEVEL_DEBUG;\n\tLog.LEVEL_INFO = LEVEL_INFO;\n\tLog.LEVEL_WARN = LEVEL_WARN;\n\tLog.LEVEL_ERROR = LEVEL_ERROR;\n\t\n\tLog.getInstance = function () {\n\t if (this._instance === undefined) {\n\t this._instance = new this();\n\t this._instance.previousLevel = this._instance.level;\n\t this._instance.level = this._instance.offLevel;\n\t }\n\t return this._instance;\n\t};\n\t\n\tLog.setLevel = function (level) {\n\t this.getInstance().level = level;\n\t};\n\t\n\tLog.debug = function (klass) {\n\t this.getInstance().debug.apply(this.getInstance(), arguments);\n\t};\n\tLog.info = function (klass) {\n\t this.getInstance().info.apply(this.getInstance(), arguments);\n\t};\n\tLog.warn = function (klass) {\n\t this.getInstance().warn.apply(this.getInstance(), arguments);\n\t};\n\tLog.error = function (klass) {\n\t this.getInstance().error.apply(this.getInstance(), arguments);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 122 */\n/*!**************************************!*\\\n !*** ./src/plugins/poster/poster.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {//Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 14);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _publicPosterScss = __webpack_require__(/*! ./public/poster.scss */ 140);\n\t\n\tvar _publicPosterScss2 = _interopRequireDefault(_publicPosterScss);\n\t\n\tvar _publicPosterHtml = __webpack_require__(/*! ./public/poster.html */ 149);\n\t\n\tvar _publicPosterHtml2 = _interopRequireDefault(_publicPosterHtml);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar PosterPlugin = (function (_UIContainerPlugin) {\n\t _inherits(PosterPlugin, _UIContainerPlugin);\n\t\n\t _createClass(PosterPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'poster';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicPosterHtml2['default']);\n\t }\n\t }, {\n\t key: 'shouldRender',\n\t get: function get() {\n\t return this.container.playback.name !== 'html_img';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'player-poster',\n\t 'data-poster': ''\n\t };\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'click': 'clicked'\n\t };\n\t }\n\t }]);\n\t\n\t function PosterPlugin(container) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, PosterPlugin);\n\t\n\t _get(Object.getPrototypeOf(PosterPlugin.prototype), 'constructor', this).call(this, container);\n\t this.hasStartedPlaying = false;\n\t this.playRequested = false;\n\t this.render();\n\t process.nextTick(function () {\n\t return _this.update();\n\t });\n\t }\n\t\n\t _createClass(PosterPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t var _this2 = this;\n\t\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onStop);\n\t if (this.container.buffering) {\n\t process.nextTick(function () {\n\t return _this2.onBuffering();\n\t });\n\t } else {\n\t this.listenToOnce(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t }\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_OPTIONS_CHANGE, this.render);\n\t _componentsMediator2['default'].on(this.options.playerId + ':' + _baseEvents2['default'].PLAYER_RESIZE, this.updateSize, this);\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(PosterPlugin.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.options.playerId + ':' + _baseEvents2['default'].PLAYER_RESIZE, this.updateSize, this);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.hasStartedPlaying = true;\n\t this.update();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.hasStartedPlaying = false;\n\t this.playRequested = false;\n\t this.update();\n\t }\n\t }, {\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t // on some mobile devices (e.g. iOS), autoplay doesn't work\n\t // this makes sure the play button only disappears when autoplay\n\t // is enabled if autoplay is actually working\n\t if (this.options.autoPlay) {\n\t this.playRequested = true;\n\t this.update();\n\t }\n\t }\n\t }, {\n\t key: 'showPlayButton',\n\t value: function showPlayButton(show) {\n\t if (!this.options.chromeless) {\n\t if (show) {\n\t this.$playButton.show();\n\t this.$el.addClass(\"clickable\");\n\t this.updateSize();\n\t } else {\n\t this.$playButton.hide();\n\t this.$el.removeClass(\"clickable\");\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'clicked',\n\t value: function clicked() {\n\t if (!this.options.chromeless) {\n\t this.playRequested = true;\n\t this.update();\n\t this.container.play();\n\t }\n\t return false;\n\t }\n\t }, {\n\t key: 'updateSize',\n\t value: function updateSize() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t var height = this.$el.height();\n\t this.$el.css({ fontSize: height });\n\t if (!this.playRequested && !this.hasStartedPlaying) {\n\t this.$playWrapper.css({ marginTop: -(this.$playWrapper.height() / 2) });\n\t }\n\t }\n\t }, {\n\t key: 'shouldHideOnPlay',\n\t value: function shouldHideOnPlay() {\n\t // Audio broadcasts should keep the poster up; video should hide poster while playing.\n\t return !(this.container.playback.name == 'html5_audio' || this.options.audioOnly);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t if (!this.hasStartedPlaying) {\n\t this.container.disableMediaControl();\n\t this.$el.show();\n\t this.showPlayButton(!this.playRequested);\n\t } else {\n\t this.container.enableMediaControl();\n\t if (this.shouldHideOnPlay()) {\n\t this.$el.hide();\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t var style = _baseStyler2['default'].getStyleFor(_publicPosterScss2['default'], { baseUrl: this.options.baseUrl });\n\t this.$el.html(this.template());\n\t this.$el.append(style);\n\t if (this.options.poster) {\n\t var imgEl = (0, _clapprZepto2['default'])('
');\n\t imgEl.css({ 'background-image': 'url(' + this.options.poster + ')' });\n\t this.$el.prepend(imgEl);\n\t }\n\t this.container.$el.append(this.el);\n\t this.$playButton = this.$el.find('.poster-icon');\n\t this.$playWrapper = this.$el.find('.play-wrapper');\n\t if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n\t var buttonsColor = this.options.mediacontrol.buttons;\n\t this.$playButton.css('color', buttonsColor);\n\t }\n\t this.update();\n\t return this;\n\t }\n\t }]);\n\t\n\t return PosterPlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = PosterPlugin;\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./~/process/browser.js */ 25)))\n\n/***/ },\n/* 123 */\n/*!****************************************!*\\\n !*** ./src/plugins/seek_time/index.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./seek_time */ 124);\n\n/***/ },\n/* 124 */\n/*!********************************************!*\\\n !*** ./src/plugins/seek_time/seek_time.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _baseUi_core_plugin = __webpack_require__(/*! base/ui_core_plugin */ 26);\n\t\n\tvar _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 5);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _publicSeek_timeScss = __webpack_require__(/*! ./public/seek_time.scss */ 141);\n\t\n\tvar _publicSeek_timeScss2 = _interopRequireDefault(_publicSeek_timeScss);\n\t\n\tvar _publicSeek_timeHtml = __webpack_require__(/*! ./public/seek_time.html */ 150);\n\t\n\tvar _publicSeek_timeHtml2 = _interopRequireDefault(_publicSeek_timeHtml);\n\t\n\tvar SeekTime = (function (_UICorePlugin) {\n\t _inherits(SeekTime, _UICorePlugin);\n\t\n\t _createClass(SeekTime, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'seek_time';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicSeek_timeHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'seek-time',\n\t 'data-seek-time': ''\n\t };\n\t }\n\t }, {\n\t key: 'mediaControl',\n\t get: function get() {\n\t return this.core.mediaControl;\n\t }\n\t }, {\n\t key: 'mediaControlContainer',\n\t get: function get() {\n\t return this.mediaControl.container;\n\t }\n\t }, {\n\t key: 'isLiveStreamWithDvr',\n\t get: function get() {\n\t return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === _basePlayback2['default'].LIVE && this.mediaControlContainer.isDvrEnabled();\n\t }\n\t }, {\n\t key: 'durationShown',\n\t get: function get() {\n\t return this.isLiveStreamWithDvr;\n\t }\n\t }, {\n\t key: 'useActualLiveTime',\n\t get: function get() {\n\t return this.actualLiveTime && this.isLiveStreamWithDvr;\n\t }\n\t }]);\n\t\n\t function SeekTime(core) {\n\t _classCallCheck(this, SeekTime);\n\t\n\t _get(Object.getPrototypeOf(SeekTime.prototype), 'constructor', this).call(this, core);\n\t this.hoveringOverSeekBar = false;\n\t this.hoverPosition = null;\n\t this.duration = null;\n\t this.actualLiveTime = !!this.mediaControl.options.actualLiveTime;\n\t if (this.actualLiveTime) {\n\t if (!!this.mediaControl.options.actualLiveServerTime) {\n\t this.actualLiveServerTimeDiff = new Date().getTime() - new Date(this.mediaControl.options.actualLiveServerTime).getTime();\n\t } else {\n\t this.actualLiveServerTimeDiff = 0;\n\t }\n\t }\n\t }\n\t\n\t _createClass(SeekTime, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_RENDERED, this.render);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged);\n\t if (this.mediaControlContainer) {\n\t this.listenTo(this.mediaControlContainer, _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.update);\n\t this.listenTo(this.mediaControlContainer, _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.updateDuration);\n\t }\n\t }\n\t }, {\n\t key: 'onContainerChanged',\n\t value: function onContainerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'updateDuration',\n\t value: function updateDuration(timeProgress) {\n\t this.duration = timeProgress.total;\n\t this.update();\n\t }\n\t }, {\n\t key: 'showTime',\n\t value: function showTime(event) {\n\t this.hoveringOverSeekBar = true;\n\t this.calculateHoverPosition(event);\n\t this.update();\n\t }\n\t }, {\n\t key: 'hideTime',\n\t value: function hideTime() {\n\t this.hoveringOverSeekBar = false;\n\t this.update();\n\t }\n\t }, {\n\t key: 'calculateHoverPosition',\n\t value: function calculateHoverPosition(event) {\n\t var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left;\n\t // proportion into the seek bar that the mouse is hovered over 0-1\n\t this.hoverPosition = Math.min(1, Math.max(offset / this.mediaControl.$seekBarContainer.width(), 0));\n\t }\n\t }, {\n\t key: 'getSeekTime',\n\t value: function getSeekTime() {\n\t var seekTime = null;\n\t if (this.useActualLiveTime) {\n\t var d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff),\n\t e = new Date(d);\n\t var secondsSinceMidnight = (e - d.setHours(0, 0, 0, 0)) / 1000;\n\t seekTime = secondsSinceMidnight - this.duration + this.hoverPosition * this.duration;\n\t if (seekTime < 0) {\n\t seekTime += 86400;\n\t }\n\t } else {\n\t seekTime = this.hoverPosition * this.duration;\n\t }\n\t return { seekTime: seekTime, secondsSinceMidnight: secondsSinceMidnight };\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t if (!this.rendered) {\n\t // update() is always called after a render\n\t return;\n\t }\n\t if (!this.shouldBeVisible()) {\n\t this.$el.hide();\n\t this.$el.css('left', \"-100%\");\n\t } else {\n\t var seekTime = this.getSeekTime();\n\t var currentSeekTime = (0, _baseUtils.formatTime)(seekTime.seekTime, this.useActualLiveTime);\n\t // only update dom if necessary, ie time actually changed\n\t if (currentSeekTime !== this.displayedSeekTime) {\n\t this.$seekTimeEl.text(currentSeekTime);\n\t this.displayedSeekTime = currentSeekTime;\n\t }\n\t\n\t if (this.durationShown) {\n\t this.$durationEl.show();\n\t var currentDuration = (0, _baseUtils.formatTime)(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime);\n\t if (currentDuration !== this.displayedDuration) {\n\t this.$durationEl.text(currentDuration);\n\t this.displayedDuration = currentDuration;\n\t }\n\t } else {\n\t this.$durationEl.hide();\n\t }\n\t\n\t // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n\t this.$el.show();\n\t var containerWidth = this.mediaControl.$seekBarContainer.width();\n\t var elWidth = this.$el.width();\n\t var elLeftPos = this.hoverPosition * containerWidth;\n\t elLeftPos -= elWidth / 2;\n\t elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth));\n\t this.$el.css('left', elLeftPos);\n\t }\n\t }\n\t }, {\n\t key: 'shouldBeVisible',\n\t value: function shouldBeVisible() {\n\t return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.rendered = true;\n\t this.displayedDuration = null;\n\t this.displayedSeekTime = null;\n\t var style = _baseStyler2['default'].getStyleFor(_publicSeek_timeScss2['default']);\n\t this.$el.html(this.template());\n\t this.$el.append(style);\n\t this.$el.hide();\n\t this.mediaControl.$el.append(this.el);\n\t this.$seekTimeEl = this.$el.find('[data-seek-time]');\n\t this.$durationEl = this.$el.find('[data-duration]');\n\t this.$durationEl.hide();\n\t this.update();\n\t }\n\t }]);\n\t\n\t return SeekTime;\n\t})(_baseUi_core_plugin2['default']);\n\t\n\texports['default'] = SeekTime;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 125 */\n/*!********************************!*\\\n !*** ./src/plugins/sources.js ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar SourcesPlugin = (function (_CorePlugin) {\n\t _inherits(SourcesPlugin, _CorePlugin);\n\t\n\t function SourcesPlugin() {\n\t _classCallCheck(this, SourcesPlugin);\n\t\n\t _get(Object.getPrototypeOf(SourcesPlugin.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(SourcesPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenToOnce(this.core, _baseEvents2['default'].CORE_CONTAINERS_CREATED, this.onContainersCreated);\n\t }\n\t }, {\n\t key: 'onContainersCreated',\n\t value: function onContainersCreated() {\n\t var firstValidSource = this.core.containers.find(function (container) {\n\t return container.playback.name !== 'no_op';\n\t }) || this.core.containers[0];\n\t if (firstValidSource) {\n\t this.core.containers.forEach(function (container) {\n\t if (container !== firstValidSource) {\n\t container.destroy();\n\t }\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'sources';\n\t }\n\t }]);\n\t\n\t return SourcesPlugin;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = SourcesPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 126 */\n/*!***************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/index.js ***!\n \\***************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./spinner_three_bounce */ 127);\n\n/***/ },\n/* 127 */\n/*!******************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/spinner_three_bounce.js ***!\n \\******************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _publicSpinnerHtml = __webpack_require__(/*! ./public/spinner.html */ 151);\n\t\n\tvar _publicSpinnerHtml2 = _interopRequireDefault(_publicSpinnerHtml);\n\t\n\tvar _publicSpinnerScss = __webpack_require__(/*! ./public/spinner.scss */ 142);\n\t\n\tvar _publicSpinnerScss2 = _interopRequireDefault(_publicSpinnerScss);\n\t\n\tvar SpinnerThreeBouncePlugin = (function (_UIContainerPlugin) {\n\t _inherits(SpinnerThreeBouncePlugin, _UIContainerPlugin);\n\t\n\t _createClass(SpinnerThreeBouncePlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'spinner';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-spinner': '',\n\t 'class': 'spinner-three-bounce'\n\t };\n\t }\n\t }]);\n\t\n\t function SpinnerThreeBouncePlugin(container) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, SpinnerThreeBouncePlugin);\n\t\n\t _get(Object.getPrototypeOf(SpinnerThreeBouncePlugin.prototype), 'constructor', this).call(this, container);\n\t this.template = (0, _baseTemplate2['default'])(_publicSpinnerHtml2['default']);\n\t this.showTimeout = null;\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t if (this.container.buffering) {\n\t process.nextTick(function () {\n\t return _this.onBuffering();\n\t });\n\t }\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ERROR, this.onStop);\n\t this.render();\n\t }\n\t\n\t _createClass(SpinnerThreeBouncePlugin, [{\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t this.show();\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t var _this2 = this;\n\t\n\t if (this.showTimeout === null) {\n\t this.showTimeout = setTimeout(function () {\n\t return _this2.$el.show();\n\t }, 300);\n\t }\n\t }\n\t }, {\n\t key: 'hide',\n\t value: function hide() {\n\t if (this.showTimeout !== null) {\n\t clearTimeout(this.showTimeout);\n\t this.showTimeout = null;\n\t }\n\t this.$el.hide();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.html(this.template());\n\t var style = _baseStyler2['default'].getStyleFor(_publicSpinnerScss2['default']);\n\t this.container.$el.append(style);\n\t this.container.$el.append(this.$el);\n\t this.$el.hide();\n\t return this;\n\t }\n\t }]);\n\t\n\t return SpinnerThreeBouncePlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = SpinnerThreeBouncePlugin;\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./~/process/browser.js */ 25)))\n\n/***/ },\n/* 128 */\n/*!************************************!*\\\n !*** ./src/plugins/stats/index.js ***!\n \\************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./stats */ 129);\n\n/***/ },\n/* 129 */\n/*!************************************!*\\\n !*** ./src/plugins/stats/stats.js ***!\n \\************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar StatsPlugin = (function (_ContainerPlugin) {\n\t _inherits(StatsPlugin, _ContainerPlugin);\n\t\n\t _createClass(StatsPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'stats';\n\t }\n\t }]);\n\t\n\t function StatsPlugin(container) {\n\t _classCallCheck(this, StatsPlugin);\n\t\n\t _get(Object.getPrototypeOf(StatsPlugin.prototype), 'constructor', this).call(this, container);\n\t this.setInitialAttrs();\n\t this.reportInterval = this.options.reportInterval || 5000;\n\t this.state = \"IDLE\";\n\t }\n\t\n\t _createClass(StatsPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.container.playback, _baseEvents2['default'].PLAYBACK_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_DESTROYED, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATS_ADD, this.onStatsAdd);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_BITRATE, this.onStatsAdd);\n\t this.listenTo(this.container.playback, _baseEvents2['default'].PLAYBACK_STATS_ADD, this.onStatsAdd);\n\t }\n\t }, {\n\t key: 'setInitialAttrs',\n\t value: function setInitialAttrs() {\n\t this.firstPlay = true;\n\t this.startupTime = 0;\n\t this.rebufferingTime = 0;\n\t this.watchingTime = 0;\n\t this.rebuffers = 0;\n\t this.externalMetrics = {};\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.state = \"PLAYING\";\n\t this.watchingTimeInit = Date.now();\n\t if (!this.intervalId) {\n\t this.intervalId = setInterval(this.report.bind(this), this.reportInterval);\n\t }\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t clearInterval(this.intervalId);\n\t this.intervalId = undefined;\n\t this.state = \"STOPPED\";\n\t }\n\t }, {\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t if (this.firstPlay) {\n\t this.startupTimeInit = Date.now();\n\t } else {\n\t this.rebufferingTimeInit = Date.now();\n\t }\n\t this.state = \"BUFFERING\";\n\t this.rebuffers++;\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t if (this.firstPlay && !!this.startupTimeInit) {\n\t this.firstPlay = false;\n\t this.startupTime = Date.now() - this.startupTimeInit;\n\t this.watchingTimeInit = Date.now();\n\t } else if (!!this.rebufferingTimeInit) {\n\t this.rebufferingTime += this.getRebufferingTime();\n\t }\n\t this.rebufferingTimeInit = undefined;\n\t this.state = \"PLAYING\";\n\t }\n\t }, {\n\t key: 'getRebufferingTime',\n\t value: function getRebufferingTime() {\n\t return Date.now() - this.rebufferingTimeInit;\n\t }\n\t }, {\n\t key: 'getWatchingTime',\n\t value: function getWatchingTime() {\n\t var totalTime = Date.now() - this.watchingTimeInit;\n\t return totalTime - this.rebufferingTime;\n\t }\n\t }, {\n\t key: 'isRebuffering',\n\t value: function isRebuffering() {\n\t return !!this.rebufferingTimeInit;\n\t }\n\t }, {\n\t key: 'onStatsAdd',\n\t value: function onStatsAdd(metric) {\n\t _clapprZepto2['default'].extend(this.externalMetrics, metric);\n\t }\n\t }, {\n\t key: 'getStats',\n\t value: function getStats() {\n\t var metrics = {\n\t startupTime: this.startupTime,\n\t rebuffers: this.rebuffers,\n\t rebufferingTime: this.isRebuffering() ? this.rebufferingTime + this.getRebufferingTime() : this.rebufferingTime,\n\t watchingTime: this.isRebuffering() ? this.getWatchingTime() - this.getRebufferingTime() : this.getWatchingTime()\n\t };\n\t _clapprZepto2['default'].extend(metrics, this.externalMetrics);\n\t return metrics;\n\t }\n\t }, {\n\t key: 'report',\n\t value: function report() {\n\t this.container.statsReport(this.getStats());\n\t }\n\t }]);\n\t\n\t return StatsPlugin;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = StatsPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 130 */\n/*!****************************************!*\\\n !*** ./src/plugins/watermark/index.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./watermark */ 131);\n\n/***/ },\n/* 131 */\n/*!********************************************!*\\\n !*** ./src/plugins/watermark/watermark.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 6);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 7);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _publicWatermarkScss = __webpack_require__(/*! ./public/watermark.scss */ 143);\n\t\n\tvar _publicWatermarkScss2 = _interopRequireDefault(_publicWatermarkScss);\n\t\n\tvar _publicWatermarkHtml = __webpack_require__(/*! ./public/watermark.html */ 152);\n\t\n\tvar _publicWatermarkHtml2 = _interopRequireDefault(_publicWatermarkHtml);\n\t\n\tvar WaterMarkPlugin = (function (_UIContainerPlugin) {\n\t _inherits(WaterMarkPlugin, _UIContainerPlugin);\n\t\n\t _createClass(WaterMarkPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'watermark';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicWatermarkHtml2['default']);\n\t }\n\t }]);\n\t\n\t function WaterMarkPlugin(container) {\n\t _classCallCheck(this, WaterMarkPlugin);\n\t\n\t _get(Object.getPrototypeOf(WaterMarkPlugin.prototype), 'constructor', this).call(this, container);\n\t this.configure();\n\t }\n\t\n\t _createClass(WaterMarkPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_OPTIONS_CHANGE, this.configure);\n\t }\n\t }, {\n\t key: 'configure',\n\t value: function configure() {\n\t this.position = this.options.position || \"bottom-right\";\n\t if (this.options.watermark) {\n\t this.imageUrl = this.options.watermark;\n\t this.imageLink = this.options.watermarkLink;\n\t this.render();\n\t } else {\n\t this.$el.remove();\n\t }\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t if (!this.hidden) this.$el.show();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.$el.hide();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.hide();\n\t var templateOptions = { position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink };\n\t this.$el.html(this.template(templateOptions));\n\t var style = _baseStyler2['default'].getStyleFor(_publicWatermarkScss2['default']);\n\t this.container.$el.append(style);\n\t this.container.$el.append(this.$el);\n\t return this;\n\t }\n\t }]);\n\t\n\t return WaterMarkPlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = WaterMarkPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 132 */\n/*!****************************************************!*\\\n !*** ./src/components/container/public/style.scss ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}[data-player]:not(.nocursor) .container[data-container].pointer-enabled{cursor:pointer}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 133 */\n/*!***********************************************!*\\\n !*** ./src/components/core/public/style.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:lucida grande,tahoma,verdana,arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 134 */\n/*!****************************************************************!*\\\n !*** ./src/components/media_control/public/media-control.scss ***!\n \\****************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Player;src:url(\" + __webpack_require__(/*! ./Player-Regular.eot */ 23) + \");src:url(\" + __webpack_require__(/*! ./Player-Regular.eot */ 23) + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + __webpack_require__(/*! ./Player-Regular.ttf */ 48) + \") format(\\\"truetype\\\"),url(\" + __webpack_require__(/*! ./Player-Regular.svg */ 47) + \"#player) format(\\\"svg\\\")}.media-control-notransition{-webkit-transition:none !important false;transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + __webpack_require__(/*! ./closed-hand.cur */ 49) + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + __webpack_require__(/*! ./closed-hand.cur */ 49) + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:-owg-linear-gradient(transparent,rgba(0,0,0,.9));background:-webkit-linear-gradient(transparent,rgba(0,0,0,.9));-pie-background:-pie-linear-gradient(transparent,rgba(0,0,0,.9));background:linear-gradient(transparent,rgba(0,0,0,.9));-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{font-family:Player;font-weight:400;font-style:normal;font-size:26px;line-height:32px;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;vertical-align:middle;pointer-events:auto;-webkit-transition:bottom .4s ease-out;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]:before{content:\\\"\\\\E006\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen].shrink:before{content:\\\"\\\\E007\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{cursor:default;float:right;background-color:transparent;border:0;height:100%;opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]:before{content:\\\"\\\\E008\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].playing:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].paused:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].playing:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].stopped:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin-left:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin:0 3px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:16px;height:32px;margin-right:6px;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:before{content:\\\"\\\\E004\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted{opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:hover{opacity:.7}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:before{content:\\\"\\\\E005\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;top:6px;width:42px;height:18px;padding:3px 0;overflow:hidden;-webkit-transition:width .2s ease-out;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;-webkit-transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1){padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{height:12px;top:9px;padding:0;width:0}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 135 */\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.scss ***!\n \\*************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".clappr-flash-playback[data-flash-playback]{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 136 */\n/*!*****************************************************!*\\\n !*** ./src/playbacks/html5_video/public/style.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 137 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html_img/public/style.scss ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 138 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/no_op/public/style.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-no-op]{z-index:1000;position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;top:40%;left:0;right:0;color:#fff}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 139 */\n/*!***********************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/dvr_controls.scss ***!\n \\***********************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + __webpack_require__(/*! ./Roboto.ttf */ 155) + \") format(\\\"truetype\\\")}.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;-webkit-transition:all .1s ease;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 140 */\n/*!***********************************************!*\\\n !*** ./src/plugins/poster/public/poster.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Player;src:url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.eot */ 23) + \");src:url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.eot */ 23) + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.ttf */ 48) + \") format(\\\"truetype\\\"),url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.svg */ 47) + \"#player) format(\\\"svg\\\")}.player-poster[data-poster]{position:absolute;height:100%;width:100%;z-index:998;top:0;left:0}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster] .poster-background[data-poster]{width:100%;height:100%;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster] .play-wrapper[data-poster]{position:absolute;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]{font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity text-shadow .1s;-webkit-transition-delay:ease;transition:opacity text-shadow .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster].play[data-poster]:before{content:\\\"\\\\E001\\\"}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]:hover{opacity:1;text-shadow:hsla(0,0%,100%,.8) 0 0 15px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 141 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/seek_time/public/seek_time.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;width:auto;height:20px;line-height:20px;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] span[data-seek-time]{position:relative;color:#fff;font-size:10px;padding-left:7px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]{position:relative;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 142 */\n/*!**************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/public/spinner.scss ***!\n \\**************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;top:47%;left:0;right:0;margin-left:auto;margin-right:auto}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 143 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/watermark/public/watermark.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 8)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 144 */\n/*!****************************************************************!*\\\n !*** ./src/components/media_control/public/media-control.html ***!\n \\****************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n\\n\";\n\n/***/ },\n/* 145 */\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.html ***!\n \\*************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" ?inline=1\\\">\\n \\n \\n \\n \\n \\n \\\">\\n \\n &callback=<%= callbackName %>\\\" />\\n\\\"\\n type=\\\"application/x-shockwave-flash\\\"\\n disabled=\\\"disabled\\\"\\n tabindex=\\\"-1\\\"\\n enablecontextmenu=\\\"false\\\"\\n allowScriptAccess=\\\"always\\\"\\n quality=\\\"autohigh\\\"\\n pluginspage=\\\"http://www.macromedia.com/go/getflashplayer\\\"\\n wmode=\\\"<%= wmode %>\\\"\\n swliveconnect=\\\"true\\\"\\n allowfullscreen=\\\"false\\\"\\n bgcolor=\\\"#000000\\\"\\n FlashVars=\\\"playbackId=<%= playbackId %>&callback=<%= callbackName %>\\\"\\n src=\\\"<%= swfPath %>\\\"\\n width=\\\"100%\\\"\\n height=\\\"100%\\\">\\n \\n\";\n\n/***/ },\n/* 146 */\n/*!*****************************************************!*\\\n !*** ./src/playbacks/html5_video/public/index.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\\" type=\\\"<%=type%>\\\">\\n\";\n\n/***/ },\n/* 147 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/no_op/public/error.html ***!\n \\***********************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \\n<%=message%>
\\n\";\n\n/***/ },\n/* 148 */\n/*!****************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/index.html ***!\n \\****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
LIVE
\\nBACK TO LIVE \\n\";\n\n/***/ },\n/* 149 */\n/*!***********************************************!*\\\n !*** ./src/plugins/poster/public/poster.html ***!\n \\***********************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n \\n
\\n\";\n\n/***/ },\n/* 150 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/seek_time/public/seek_time.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \\n \\n\";\n\n/***/ },\n/* 151 */\n/*!**************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/public/spinner.html ***!\n \\**************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n\";\n\n/***/ },\n/* 152 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/watermark/public/watermark.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n\";\n\n/***/ },\n/* 153 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/flash/public/Player.swf ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"4b76590b32dab62bc95c1b7951efae78.swf\";\n\n/***/ },\n/* 154 */\n/*!****************************************************!*\\\n !*** ./src/playbacks/flashls/public/HLSPlayer.swf ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"836868f5c501cad9daabdcc31886bd7c.swf\";\n\n/***/ },\n/* 155 */\n/*!****************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/Roboto.ttf ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"38861cba61c66739c1452c3a71e39852.ttf\";\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** clappr.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"<%=baseUrl%>/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 4a80104cab4284328f97\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Player from 'components/player'\nimport Utils from 'base/utils'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport ContainerPlugin from 'base/container_plugin'\nimport CorePlugin from 'base/core_plugin'\nimport UICorePlugin from 'base/ui_core_plugin'\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport BaseObject from 'base/base_object'\nimport UIObject from 'base/ui_object'\nimport Browser from 'components/browser'\nimport Container from 'components/container'\nimport Core from 'components/core'\nimport Loader from 'components/loader'\nimport Mediator from 'components/mediator'\nimport MediaControl from 'components/media_control'\nimport PlayerInfo from 'components/player_info'\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Flash from 'playbacks/flash'\nimport FlasHLS from 'playbacks/flashls'\nimport HLS from 'playbacks/hls'\nimport HTML5Audio from 'playbacks/html5_audio'\nimport HTML5Video from 'playbacks/html5_video'\nimport HTMLImg from 'playbacks/html_img'\nimport NoOp from 'playbacks/no_op'\nimport Poster from 'plugins/poster'\nimport Log from 'plugins/log'\nimport Styler from 'base/styler'\nimport template from 'base/template'\n\nimport $ from 'clappr-zepto'\n\nvar version = VERSION\n\nexport default {\n Player,\n Mediator,\n Events,\n Browser,\n PlayerInfo,\n MediaControl,\n ContainerPlugin,\n UIContainerPlugin,\n CorePlugin,\n UICorePlugin,\n Playback,\n Container,\n Core,\n Loader,\n BaseObject,\n UIObject,\n Utils,\n BaseFlashPlayback,\n Flash,\n FlasHLS,\n HLS,\n HTML5Audio,\n HTML5Video,\n HTMLImg,\n NoOp,\n Poster,\n Log,\n Styler,\n version,\n template,\n $\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/main.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Log from 'plugins/log'\nimport {uniqueId} from './utils'\nimport execOnce from 'lodash.once'\n\nvar slice = Array.prototype.slice\n\nvar eventSplitter = /\\s+/\n\nvar eventsApi = function(obj, action, name, rest) {\n if (!name) {return true}\n\n // Handle event maps.\n if (typeof name === 'object') {\n for (var key in name) {\n obj[action].apply(obj, [key, name[key]].concat(rest))\n }\n return false\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter)\n for (var i = 0, l = names.length; i < l; i++) {\n obj[action].apply(obj, [names[i]].concat(rest))\n }\n return false\n }\n\n return true\n}\n\nvar triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]\n switch (args.length) {\n case 0: while (++i < l) { (ev = events[i]).callback.call(ev.ctx) } return\n case 1: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1) } return\n case 2: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2) } return\n case 3: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2, a3) } return\n default: while (++i < l) { (ev = events[i]).callback.apply(ev.ctx, args) } return\n }\n}\n\n/**\n * @class Events\n * @constructor\n * @module base\n */\nexport default class Events {\n /**\n * listen to an event indefinitely, if you want to stop you need to call `off`\n * @method on\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n on(name, callback, context) {\n if (!eventsApi(this, 'on', name, [callback, context]) || !callback) {return this}\n this._events || (this._events = {})\n var events = this._events[name] || (this._events[name] = [])\n events.push({callback: callback, context: context, ctx: context || this})\n return this\n }\n\n /**\n * listen to an event only once\n * @method once\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n once(name, callback, context) {\n if (!eventsApi(this, 'once', name, [callback, context]) || !callback) {return this}\n var self = this\n var once = execOnce(function() {\n self.off(name, once)\n callback.apply(this, arguments)\n })\n once._callback = callback\n return this.on(name, once, context)\n }\n\n /**\n * stop listening to an event\n * @method off\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n off(name, callback, context) {\n var retain, ev, events, names, i, l, j, k\n if (!this._events || !eventsApi(this, 'off', name, [callback, context])) {return this}\n if (!name && !callback && !context) {\n this._events = void 0\n return this\n }\n names = name ? [name] : Object.keys(this._events)\n // jshint maxdepth:5\n for (i = 0, l = names.length; i < l; i++) {\n name = names[i]\n events = this._events[name]\n if (events) {\n this._events[name] = retain = []\n if (callback || context) {\n for (j = 0, k = events.length; j < k; j++) {\n ev = events[j]\n if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||\n (context && context !== ev.context)) {\n retain.push(ev)\n }\n }\n }\n if (!retain.length) {delete this._events[name]}\n }\n }\n return this\n }\n\n /**\n * triggers an event given its `name`\n * @method trigger\n * @param {String} name\n */\n trigger(name) {\n var klass = this.name || this.constructor.name\n try {\n Log.debug.apply(Log, [klass].concat(Array.prototype.slice.call(arguments)))\n if (!this._events) {return this}\n var args = slice.call(arguments, 1)\n if (!eventsApi(this, 'trigger', name, args)) {return this}\n var events = this._events[name]\n var allEvents = this._events.all\n if (events) {triggerEvents(events, args)}\n if (allEvents) {triggerEvents(allEvents, arguments)}\n } catch (exception) {\n Log.error.apply(Log, [klass, 'error on event', name, 'trigger','-', exception])\n }\n return this\n }\n\n /**\n * stop listening an event for a given object\n * @method stopListening\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n */\n stopListening(obj, name, callback) {\n var listeningTo = this._listeningTo\n if (!listeningTo) {return this}\n var remove = !name && !callback\n if (!callback && typeof name === 'object') {callback = this}\n if (obj) {(listeningTo = {})[obj._listenId] = obj}\n for (var id in listeningTo) {\n obj = listeningTo[id]\n obj.off(name, callback, this)\n if (remove || Object.keys(obj._events).length === 0) {delete this._listeningTo[id]}\n }\n return this\n }\n}\n\n\n/**\n * listen to an event indefinitely for a given `obj`\n * @method listenTo\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenTo(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\n/**\n * listen to an event once for a given `obj`\n * @method listenToOnce\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenToOnce(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\nvar listenMethods = {listenTo: 'on', listenToOnce: 'once'}\n\nObject.keys(listenMethods).forEach(function(method) {\n Events.prototype[method] = function(obj, name, callback) {\n var listeningTo = this._listeningTo || (this._listeningTo = {})\n var id = obj._listenId || (obj._listenId = uniqueId('l'))\n listeningTo[id] = obj\n if (!callback && typeof name === 'object') {callback = this}\n obj[listenMethods[method]](name, callback, this)\n return this\n }\n});\n\n// PLAYER EVENTS\n/**\n * Fired when the player is ready on startup\n *\n * @event PLAYER_READY\n */\nEvents.PLAYER_READY = 'ready'\n/**\n * Fired when player resizes\n *\n * @event PLAYER_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.PLAYER_RESIZE = 'resize'\n/**\n * Fired when player starts to play\n *\n * @event PLAYER_PLAY\n */\nEvents.PLAYER_PLAY = 'play'\n/**\n * Fired when player pauses\n *\n * @event PLAYER_PAUSE\n */\nEvents.PLAYER_PAUSE = 'pause'\n/**\n * Fired when player stops\n *\n * @event PLAYER_STOP\n */\nEvents.PLAYER_STOP = 'stop'\n/**\n * Fired when player ends the video\n *\n * @event PLAYER_ENDED\n */\nEvents.PLAYER_ENDED = 'ended'\n/**\n * Fired when player seeks the video\n *\n * @event PLAYER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.PLAYER_SEEK = 'seek'\n/**\n * Fired when player receives an error\n *\n * @event PLAYER_ERROR\n * @param {Object} error the error\n */\nEvents.PLAYER_ERROR = 'error'\n/**\n * Fired when the time is updated on player\n *\n * @event PLAYER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.PLAYER_TIMEUPDATE = 'timeupdate'\n/**\n * Fired when player updates its volume\n *\n * @event PLAYER_VOLUMEUPDATE\n * @param {Number} volume the current volume\n */\nEvents.PLAYER_VOLUMEUPDATE = 'volumeupdate'\n\n// Playback Events\n/**\n * Fired when the playback is downloading the media\n *\n * @event PLAYBACK_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.PLAYBACK_PROGRESS = 'playback:progress'\n/**\n * Fired when the time is updated on playback\n *\n * @event PLAYBACK_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate'\n/**\n * Fired when playback is ready\n *\n * @event PLAYBACK_READY\n */\nEvents.PLAYBACK_READY = 'playback:ready'\n/**\n * Fired when the playback starts having to buffer because\n * playback can currently not be smooth.\n *\n * This corresponds to the playback `buffering` property being\n * `true`.\n *\n * @event PLAYBACK_BUFFERING\n */\nEvents.PLAYBACK_BUFFERING = 'playback:buffering'\n/**\n * Fired when the playback has enough in the buffer to be\n * able to play smoothly, after previously being unable to\n * do this.\n *\n * This corresponds to the playback `buffering` property being\n * `false`.\n *\n * @event PLAYBACK_BUFFERFULL\n */\nEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull'\n/**\n * Fired when playback changes any settings (volume, seek and etc)\n *\n * @event PLAYBACK_SETTINGSUPDATE\n */\nEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate'\n/**\n * Fired when playback loaded its metadata\n *\n * @event PLAYBACK_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata'\n/**\n * Fired when playback updates its video quality\n *\n * @event PLAYBACK_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate'\n/**\n * Fired when playback updates its bitrate\n *\n * @event PLAYBACK_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.PLAYBACK_BITRATE = 'playback:bitrate'\n/**\n * Fired when the playback has its levels\n *\n * @event PLAYBACK_LEVELS_AVAILABLE\n * @param {Array} levels\n * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0\n * @param {Number} initial\n * the initial level otherwise -1 (AUTO)\n */\nEvents.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available'\n/**\n * Fired when the playback starts to switch level\n *\n * @event PLAYBACK_LEVEL_SWITCH_START\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start'\n/**\n * Fired when the playback ends the level switch\n *\n * @event PLAYBACK_LEVEL_SWITCH_END\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end'\n\n/**\n * Fired when playback internal state changes\n *\n * @event PLAYBACK_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate'\n/**\n * Fired when DVR becomes enabled/disabled.\n *\n * @event PLAYBACK_DVR\n * @param {boolean} state true if dvr enabled \n */\nEvents.PLAYBACK_DVR = 'playback:dvr'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable'\n/**\n * Fired when the media for a playback ends.\n *\n * @event PLAYBACK_ENDED\n * @param {String} name the name of the playback\n */\nEvents.PLAYBACK_ENDED = 'playback:ended'\n/**\n * Fired when the media for a playback starts playing.\n * This is not necessarily when the user requests `play()`\n * The media may have to buffer first.\n * I.e. `isPlaying()` might return `true` before this event is fired,\n * because `isPlaying()` represents the intended state.\n *\n * @event PLAYBACK_PLAY\n */\nEvents.PLAYBACK_PLAY = 'playback:play'\n/**\n * Fired when the media for a playback pauses.\n *\n * @event PLAYBACK_PAUSE\n */\nEvents.PLAYBACK_PAUSE = 'playback:pause'\n/**\n * Fired when the media for a playback is stopped.\n *\n * @event PLAYBACK_STOP\n */\nEvents.PLAYBACK_STOP = 'playback:stop'\n/**\n * Fired if an error occurs in the playback.\n *\n * @event PLAYBACK_ERROR\n * @param {Object} error An object containing the error details\n * @param {String} name Playback name\n */\nEvents.PLAYBACK_ERROR = 'playback:error'\n// TODO doc\nEvents.PLAYBACK_STATS_ADD = 'playback:stats:add'\n// TODO doc\nEvents.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded'\n// TODO doc\nEvents.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch'\n\n/**\n * Fired when the options were changed for the core\n *\n * @event CORE_OPTIONS_CHANGE\n */\nEvents.CORE_OPTIONS_CHANGE = 'core:options:change'\n/**\n * Fired after creating containers, when the core is ready\n *\n * @event CORE_READY\n */\nEvents.CORE_READY = 'core:ready'\n\n// Container Events\n/**\n * Fired when the container internal state changes\n *\n * @event CONTAINER_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate'\nEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr'\n/**\n * Fired when the container updates its bitrate\n *\n * @event CONTAINER_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.CONTAINER_BITRATE = 'container:bitrate'\nEvents.CONTAINER_STATS_REPORT = 'container:stats:report'\nEvents.CONTAINER_DESTROYED = 'container:destroyed'\n/**\n * Fired when the container is ready\n *\n * @event CONTAINER_READY\n */\nEvents.CONTAINER_READY = 'container:ready'\nEvents.CONTAINER_ERROR = 'container:error'\n/**\n * Fired when the container loaded its metadata\n *\n * @event CONTAINER_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata'\n/**\n * Fired when the time is updated on container\n *\n * @event CONTAINER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate'\n/**\n * Fired when the container is downloading the media\n *\n * @event CONTAINER_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.CONTAINER_PROGRESS = 'container:progress'\nEvents.CONTAINER_PLAY = 'container:play'\nEvents.CONTAINER_STOP = 'container:stop'\nEvents.CONTAINER_PAUSE = 'container:pause'\nEvents.CONTAINER_ENDED = 'container:ended'\nEvents.CONTAINER_CLICK = 'container:click'\nEvents.CONTAINER_DBLCLICK = 'container:dblclick'\nEvents.CONTAINER_CONTEXTMENU = 'container:contextmenu'\nEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter'\nEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave'\n/**\n * Fired when the container seeks the video\n *\n * @event CONTAINER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEK = 'container:seek'\nEvents.CONTAINER_VOLUME = 'container:volume'\nEvents.CONTAINER_FULLSCREEN = 'container:fullscreen'\n/**\n * Fired when container is buffering\n *\n * @event CONTAINER_STATE_BUFFERING\n */\nEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering'\n/**\n * Fired when the container filled the buffer\n *\n * @event CONTAINER_STATE_BUFFERFULL\n */\nEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull'\n/**\n * Fired when the container changes any settings (volume, seek and etc)\n *\n * @event CONTAINER_SETTINGSUPDATE\n */\nEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate'\n/**\n * Fired when container updates its video quality\n *\n * @event CONTAINER_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate'\n\n/**\n * Fired when the media control shows\n *\n * @event CONTAINER_MEDIACONTROL_SHOW\n */\nEvents.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event CONTAINER_MEDIACONTROL_HIDE\n */\nEvents.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide'\n\nEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable'\nEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable'\nEvents.CONTAINER_STATS_ADD = 'container:stats:add'\n/**\n * Fired when the options were changed for the container\n *\n * @event CONTAINER_OPTIONS_CHANGE\n */\nEvents.CONTAINER_OPTIONS_CHANGE = 'container:options:change'\n\n// MediaControl Events\nEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered'\n/**\n * Fired when the player enters/exit on fullscreen\n *\n * @event MEDIACONTROL_FULLSCREEN\n */\nEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen'\n/**\n * Fired when the media control shows\n *\n * @event MEDIACONTROL_SHOW\n */\nEvents.MEDIACONTROL_SHOW = 'mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event MEDIACONTROL_HIDE\n */\nEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide'\n/**\n * Fired when mouse enters on the seekbar\n *\n * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar'\n/**\n * Fired when mouse leaves the seekbar\n *\n * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar'\n/**\n * Fired when the media is being played\n *\n * @event MEDIACONTROL_PLAYING\n */\nEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing'\n/**\n * Fired when the media is not being played\n *\n * @event MEDIACONTROL_NOTPLAYING\n */\nEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying'\n/**\n * Fired when the container was changed\n *\n * @event MEDIACONTROL_CONTAINERCHANGED\n */\nEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged'\n\n// Core Events\nEvents.CORE_CONTAINERS_CREATED = 'core:containers:created'\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/base/events.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n/*jshint -W079 */\n\nimport Browser from 'components/browser'\nimport $ from 'clappr-zepto'\n\nexport function extend(parent, properties) {\n var pluginName = properties.name||\"\"\n class MergedPlugin extends parent {\n constructor(args) {\n super(args)\n if (properties.initialize) {\n properties.initialize.apply(this, Array.prototype.slice.apply(arguments))\n }\n }\n get name(){\n return pluginName\n }\n }\n delete properties.name\n $.extend(MergedPlugin.prototype, properties)\n return MergedPlugin\n}\n\nexport function formatTime(time, paddedHours) {\n if (!isFinite(time)) {\n return \"--:--\"\n }\n time = time * 1000\n time = parseInt(time/1000)\n var seconds = time % 60\n time = parseInt(time/60)\n var minutes = time % 60\n time = parseInt(time/60)\n var hours = time % 24\n var days = parseInt(time/24)\n var out = \"\"\n if (days && days > 0) {\n out += days + \":\"\n if (hours < 1) {out += \"00:\"}\n }\n if (hours && hours > 0 || paddedHours) {out += (\"0\" + hours).slice(-2) + \":\"}\n out += (\"0\" + minutes).slice(-2) + \":\"\n out += (\"0\" + seconds).slice(-2)\n return out.trim()\n}\n\nexport var Fullscreen = {\n isFullscreen: function() {\n return (\n document.webkitFullscreenElement ||\n document.webkitIsFullScreen ||\n document.mozFullScreen ||\n !!document.msFullscreenElement\n )\n },\n requestFullscreen: function(el) {\n if(el.requestFullscreen) {\n el.requestFullscreen()\n } else if(el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen()\n } else if(el.mozRequestFullScreen) {\n el.mozRequestFullScreen()\n } else if(el.msRequestFullscreen) {\n el.msRequestFullscreen()\n } else if (el.querySelector && el.querySelector(\"video\") && el.querySelector(\"video\").webkitEnterFullScreen) {\n el.querySelector(\"video\").webkitEnterFullScreen()\n }\n },\n cancelFullscreen: function() {\n if(document.exitFullscreen) {\n document.exitFullscreen()\n } else if(document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen()\n } else if(document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n }\n}\n\nexport class Config {\n\n static _defaultConfig() {\n return {\n volume: {\n value: 100,\n parse: parseInt\n }\n }\n }\n\n static _defaultValueFor(key) {\n try {\n return this._defaultConfig()[key].parse(this._defaultConfig()[key].value)\n } catch(e) {\n return undefined\n }\n }\n\n static _createKeyspace(key){\n return `clappr.${document.domain}.${key}`\n }\n\n static restore(key) {\n if (Browser.hasLocalstorage && localStorage[this._createKeyspace(key)]){\n return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)])\n }\n return this._defaultValueFor(key)\n }\n\n static persist(key, value) {\n if (Browser.hasLocalstorage) {\n try {\n localStorage[this._createKeyspace(key)] = value\n return true\n } catch(e) {\n return false\n }\n }\n }\n}\n\nexport function seekStringToSeconds(url) {\n var parts = url.match(/t=([0-9]*)(&|\\/|$)/);\n if (parts && parts.length > 0) {\n return parseInt(parts[1], 10);\n } else {\n var seconds = 0;\n var factor = {'h': 3600, 'm': 60, 's': 1};\n parts = url.match(/[0-9]+[hms]+/g) || [];\n parts.forEach(function(el) {\n if (el) {\n var suffix = el[el.length - 1];\n var time = parseInt(el.slice(0, el.length - 1), 10);\n seconds += time * (factor[suffix]);\n }\n });\n return seconds;\n }\n}\n\nvar idsCounter = {}\n\nexport function uniqueId(prefix) {\n idsCounter[prefix] || (idsCounter[prefix] = 0)\n var id = ++idsCounter[prefix]\n return prefix + id\n}\n\nexport function isNumber(value) {\n return value - parseFloat(value) + 1 >= 0\n}\n\nexport function currentScriptUrl() {\n var scripts = document.getElementsByTagName('script')\n return scripts[scripts.length - 1].src\n}\n\nexport var requestAnimationFrame = (window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n function(fn) { window.setTimeout(fn, 1000/60) }).bind(window)\n\nexport var cancelAnimationFrame = (window.cancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.clearTimeout).bind(window)\n\nexport function getBrowserLanguage() {\n if (window.navigator && window.navigator.language) {\n return window.navigator.language.toLowerCase()\n }\n return null\n}\n\nexport default {\n Config,\n Fullscreen,\n extend,\n formatTime,\n seekStringToSeconds,\n uniqueId,\n currentScriptUrl,\n isNumber,\n requestAnimationFrame,\n cancelAnimationFrame,\n getBrowserLanguage\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/base/utils.js\n **/","/* Zepto v1.1.4-80-ga9184b2 - zepto event ajax callbacks deferred touch selector ie - zeptojs.com/license */\nvar Zepto=function(){function D(t){return null==t?String(t):j[S.call(t)]||\"object\"}function L(t){return\"function\"==D(t)}function k(t){return null!=t&&t==t.window}function Z(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function $(t){return\"object\"==D(t)}function F(t){return $(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function R(t){return\"number\"==typeof t.length}function q(t){return s.call(t,function(t){return null!=t})}function W(t){return t.length>0?n.fn.concat.apply([],t):t}function z(t){return t.replace(/::/g,\"/\").replace(/([A-Z]+)([A-Z][a-z])/g,\"$1_$2\").replace(/([a-z\\d])([A-Z])/g,\"$1_$2\").replace(/_/g,\"-\").toLowerCase()}function H(t){return t in c?c[t]:c[t]=new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|$)\")}function _(t,e){return\"number\"!=typeof e||l[z(t)]?e:e+\"px\"}function I(t){var e,n;return f[t]||(e=u.createElement(t),u.body.appendChild(e),n=getComputedStyle(e,\"\").getPropertyValue(\"display\"),e.parentNode.removeChild(e),\"none\"==n&&(n=\"block\"),f[t]=n),f[t]}function U(t){return\"children\"in t?a.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,i=t?t.length:0;for(n=0;i>n;n++)this[n]=t[n];this.length=i,this.selector=e||\"\"}function B(n,i,r){for(e in i)r&&(F(i[e])||A(i[e]))?(F(i[e])&&!F(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),B(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function V(t,e){return null==e?n(t):n(t).filter(e)}function Y(t,e,n,i){return L(e)?e.call(t,n,i):e}function J(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function G(e,n){var i=e.className||\"\",r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function K(t){try{return t?\"true\"==t||(\"false\"==t?!1:\"null\"==t?null:+t+\"\"==t?+t:/^[\\[\\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function Q(t,e){e(t);for(var n=0,i=t.childNodes.length;i>n;n++)Q(t.childNodes[n],e)}var t,e,n,i,N,P,r=[],o=r.concat,s=r.filter,a=r.slice,u=window.document,f={},c={},l={\"column-count\":1,columns:1,\"font-weight\":1,\"line-height\":1,opacity:1,\"z-index\":1,zoom:1},h=/^\\s*<(\\w+|!)[^>]*>/,p=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,d=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,m=/^(?:body|html)$/i,g=/([A-Z])/g,v=[\"val\",\"css\",\"html\",\"text\",\"data\",\"width\",\"height\",\"offset\"],y=[\"after\",\"prepend\",\"before\",\"append\"],w=u.createElement(\"table\"),x=u.createElement(\"tr\"),b={tr:u.createElement(\"tbody\"),tbody:w,thead:w,tfoot:w,td:x,th:x,\"*\":u.createElement(\"div\")},E=/complete|loaded|interactive/,T=/^[\\w-]*$/,j={},S=j.toString,C={},O=u.createElement(\"div\"),M={tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},A=Array.isArray||function(t){return t instanceof Array};return C.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~C.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},N=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():\"\"})},P=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},C.fragment=function(e,i,r){var o,s,f;return p.test(e)&&(o=n(u.createElement(RegExp.$1))),o||(e.replace&&(e=e.replace(d,\"<$1>$2>\")),i===t&&(i=h.test(e)&&RegExp.$1),i in b||(i=\"*\"),f=b[i],f.innerHTML=\"\"+e,o=n.each(a.call(f.childNodes),function(){f.removeChild(this)})),F(r)&&(s=n(o),n.each(r,function(t,e){v.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},C.Z=function(t,e){return new X(t,e)},C.isZ=function(t){return t instanceof C.Z},C.init=function(e,i){var r;if(!e)return C.Z();if(\"string\"==typeof e)if(e=e.trim(),\"<\"==e[0]&&h.test(e))r=C.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}else{if(L(e))return n(u).ready(e);if(C.isZ(e))return e;if(A(e))r=q(e);else if($(e))r=[e],e=null;else if(h.test(e))r=C.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}}return C.Z(r,e)},n=function(t,e){return C.init(t,e)},n.extend=function(t){var e,n=a.call(arguments,1);return\"boolean\"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){B(t,n,e)}),t},C.qsa=function(t,e){var n,i=\"#\"==e[0],r=!i&&\".\"==e[0],o=i||r?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&i?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:a.call(s&&!i&&t.getElementsByClassName?r?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=u.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=D,n.isFunction=L,n.isWindow=k,n.isArray=A,n.isPlainObject=F,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=N,n.trim=function(t){return null==t?\"\":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.noop=function(){},n.map=function(t,e){var n,r,o,i=[];if(R(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return L(t)?this.not(this.not(t)):n(s.call(this,function(e){return C.matches(e,t)}))},add:function(t,e){return n(P(this.concat(n(t,e))))},is:function(t){return this.length>0&&C.matches(this[0],t)},not:function(e){var i=[];if(L(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r=\"string\"==typeof e?this.filter(e):R(e)&&L(e.item)?a.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return $(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!$(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!$(t)?t:n(t)},find:function(t){var e,i=this;return e=t?\"object\"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(C.qsa(this[0],t)):this.map(function(){return C.qsa(this,t)}):n()},closest:function(t,e){var i=this[0],r=!1;for(\"object\"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:C.matches(i,t));)i=i!==e&&!Z(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!Z(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return V(e,t)},parent:function(t){return V(P(this.pluck(\"parentNode\")),t)},children:function(t){return V(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||a.call(this.childNodes)})},siblings:function(t){return V(this.map(function(t,e){return s.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=\"\"})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){\"none\"==this.style.display&&(this.style.display=\"\"),\"none\"==getComputedStyle(this,\"\").getPropertyValue(\"display\")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=L(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=L(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css(\"display\",\"none\")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?\"none\"==i.css(\"display\"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck(\"previousElementSibling\")).filter(t||\"*\")},next:function(t){return n(this.pluck(\"nextElementSibling\")).filter(t||\"*\")},html:function(t){return 0 in arguments?this.each(function(e){var i=this.innerHTML;n(this).empty().append(Y(this,t,e,i))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?\"\":\"\"+n}):0 in this?this[0].textContent:null},attr:function(n,i){var r;return\"string\"!=typeof n||1 in arguments?this.each(function(t){if(1===this.nodeType)if($(n))for(e in n)J(this,e,n[e]);else J(this,n,Y(this,i,t,this.getAttribute(n)))}):this.length&&1===this[0].nodeType?!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:t},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(\" \").forEach(function(t){J(this,t)},this)})},prop:function(t,e){return t=M[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(e,n){var i=\"data-\"+e.replace(g,\"-$1\").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?K(r):t},val:function(t){return 0 in arguments?this.each(function(e){this.value=Y(this,t,e,this.value)}):this[0]&&(this[0].multiple?n(this[0]).find(\"option\").filter(function(){return this.selected}).pluck(\"value\"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=Y(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};\"static\"==i.css(\"position\")&&(s.position=\"relative\"),i.css(s)});if(!this.length)return null;if(!n.contains(u.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r,o=this[0];if(!o)return;if(r=getComputedStyle(o,\"\"),\"string\"==typeof t)return o.style[N(t)]||r.getPropertyValue(t);if(A(t)){var s={};return n.each(t,function(t,e){s[e]=o.style[N(e)]||r.getPropertyValue(e)}),s}}var a=\"\";if(\"string\"==D(t))i||0===i?a=z(t)+\":\"+_(t,i):this.each(function(){this.style.removeProperty(z(t))});else for(e in t)t[e]||0===t[e]?a+=z(e)+\":\"+_(e,t[e])+\";\":this.each(function(){this.style.removeProperty(z(e))});return this.each(function(){this.style.cssText+=\";\"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(G(t))},H(t)):!1},addClass:function(t){return t?this.each(function(e){if(\"className\"in this){i=[];var r=G(this),o=Y(this,t,e,r);o.split(/\\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&G(this,r+(r?\" \":\"\")+i.join(\" \"))}}):this},removeClass:function(e){return this.each(function(n){if(\"className\"in this){if(e===t)return G(this,\"\");i=G(this),Y(this,e,n,i).split(/\\s+/g).forEach(function(t){i=i.replace(H(t),\" \")}),G(this,i.trim())}})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=Y(this,e,r,G(this));s.split(/\\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n=\"scrollTop\"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n=\"scrollLeft\"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=m.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css(\"margin-top\"))||0,i.left-=parseFloat(n(t).css(\"margin-left\"))||0,r.top+=parseFloat(n(e[0]).css(\"border-top-width\"))||0,r.left+=parseFloat(n(e[0]).css(\"border-left-width\"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||u.body;t&&!m.test(t.nodeName)&&\"static\"==n(t).css(\"position\");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,[\"width\",\"height\"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?k(s)?s[\"inner\"+i]:Z(s)?s.documentElement[\"scroll\"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,Y(this,r,t,s[e]()))})}}),y.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=D(e),\"object\"==t||\"array\"==t||null==e?e:C.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,a){o=i?a:a.parentNode,a=0==e?a.nextSibling:1==e?a.firstChild:2==e?a:null;var f=n.contains(u.documentElement,o);r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();o.insertBefore(t,a),f&&Q(t,function(t){null==t.nodeName||\"SCRIPT\"!==t.nodeName.toUpperCase()||t.type&&\"text/javascript\"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+\"To\":\"insert\"+(e?\"Before\":\"After\")]=function(e){return n(e)[t](this),this}}),C.Z.prototype=X.prototype=n.fn,C.uniq=P,C.deserializeValue=K,n.zepto=C,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(\"\"+t).split(\".\");return{e:e[0],ns:e.slice(1).sort().join(\" \")}}function d(t){return new RegExp(\"(?:^| )\"+t.replace(\" \",\" .* ?\")+\"(?: |$)\")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\\s/).forEach(function(i){if(\"ready\"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=T(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),\"addEventListener\"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||\"\").split(/\\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],\"removeEventListener\"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function T(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=w,r&&r.apply(i,arguments)},e[n]=x}),(i.defaultPrevented!==n?i.defaultPrevented:\"returnValue\"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function j(t){var e,i={originalEvent:t};for(e in t)b.test(e)||t[e]===n||(i[e]=t[e]);return T(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return\"string\"==typeof t},s={},a={},u=\"onfocusin\"in window,f={focus:\"focusin\",blur:\"focusout\"},c={mouseenter:\"mouseover\",mouseleave:\"mouseout\"};a.click=a.mousedown=a.mouseup=a.mousemove=\"MouseEvents\",t.event={add:v,remove:y},t.proxy=function(e,n){var s=2 in arguments&&i.call(arguments,2);if(r(e)){var a=function(){return e.apply(n,s?s.concat(i.call(arguments)):arguments)};return a._zid=l(e),a}if(o(n))return s?(s.unshift(e[n],e),t.proxy.apply(null,s)):t.proxy(e[n],e);throw new TypeError(\"expected function\")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var w=function(){return!0},x=function(){return!1},b=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:\"isDefaultPrevented\",stopImmediatePropagation:\"isImmediatePropagationStopped\",stopPropagation:\"isPropagationStopped\"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(u===n||a===!1)&&(u=a,a=n),u===!1&&(u=x),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(j(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=x),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):T(e),e._args=n,this.each(function(){e.type in f&&\"function\"==typeof this[e.type]?this[e.type]():\"dispatchEvent\"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=j(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},\"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||\"Events\"),i=!0;if(e)for(var r in e)\"bubbles\"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),T(n)}}(Zepto),function(t){function h(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function p(t,e,i,r){return t.global?h(e||n,i,r):void 0}function d(e){e.global&&0===t.active++&&p(e,null,\"ajaxStart\")}function m(e){e.global&&!--t.active&&p(e,null,\"ajaxStop\")}function g(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||p(e,n,\"ajaxBeforeSend\",[t,e])===!1?!1:void p(e,n,\"ajaxSend\",[t,e])}function v(t,e,n,i){var r=n.context,o=\"success\";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),p(n,r,\"ajaxSuccess\",[e,n,t]),w(o,e,n)}function y(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),p(i,o,\"ajaxError\",[n,i,t||e]),w(e,n,i)}function w(t,e,n){var i=n.context;n.complete.call(i,e,t),p(n,i,\"ajaxComplete\",[e,n]),m(n)}function x(){}function b(t){return t&&(t=t.split(\";\",2)[0]),t&&(t==f?\"html\":t==u?\"json\":s.test(t)?\"script\":a.test(t)&&\"xml\")||\"text\"}function E(t,e){return\"\"==e?t:(t+\"&\"+e).replace(/[&?]{1,2}/,\"?\")}function T(e){e.processData&&e.data&&\"string\"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&\"GET\"!=e.type.toUpperCase()||(e.url=E(e.url,e.data),e.data=void 0)}function j(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function C(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+\"[\"+(a||\"object\"==o||\"array\"==o?n:\"\")+\"]\"),!r&&s?e.add(u.name,u.value):\"array\"==o||!i&&\"object\"==o?C(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/\n * \n * ```\n * Now, create the player:\n * ```html\n * \n *
\n * \n * \n * ```\n */\nexport default class Player extends BaseObject {\n\n set loader(loader) { this._loader = loader }\n get loader() { return this._loader = this._loader || new Loader(this.options.plugins || {}, this.options.playerId) }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.core.mediaControl.container.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.core.mediaControl.container.buffering\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n get isReady() {\n return !!this.ready\n }\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <>, mimeType: <>}\n * @param {Object} [options.sources]\n * An array of media source URL's, or an array of {source: <>, mimeType: <>}\n * @param {Boolean} [options.autoPlay]\n * automatically play after page load **default**: `false`\n * @param {Boolean} [options.loop]\n * automatically replay after it ends **default**: `false`\n * @param {Boolean} [options.chromeless]\n * player acts in chromeless mode **default**: `false`\n * @param {Boolean} [options.muted]\n * start the video muted **default**: `false`\n * @param {String} [options.mimeType]\n * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n * @param {String} [options.actualLiveTime]\n * show duration and seek time relative to actual time.\n * @param {String} [options.actualLiveServerTime]\n * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n * @param {Boolean} [options.persistConfig]\n * persist player's settings (volume) through the same domain **default**: `true`\n * @param {String} [options.preload]\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @param {Number} [options.maxBufferLength]\n * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD. This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks. To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @param {String} [options.gaAccount]\n * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n * @param {String} [options.gaTrackerName]\n * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n * @param {Object} [options.mediacontrol]\n * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n * @param {Boolean} [options.hideMediaControl]\n * control media control auto hide **default**: `true`\n * @param {Boolean} [options.hideVolumeBar]\n * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n * @param {String} [options.watermark]\n * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video. You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n * @param {String} [options.watermarkLink]\n * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable. \n * @param {Boolean} [options.disableVideoTagContextMenu]\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @param {Boolean} [options.autoSeekFromUrl]\n * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n * @param {String} [options.poster]\n * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n * @param {String} [options.playbackNotSupportedMessage]\n * define a custom message to be displayed when a playback is not supported.\n * @param {Object} [options.events]\n * Specify listeners which will be registered with their corresponding player events.\n * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n */\n constructor(options) {\n super(options)\n var defaultOptions = {playerId: uniqueId(\"\"), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl}\n this.options = $.extend(defaultOptions, options)\n this.options.sources = this.normalizeSources(options)\n this.registerOptionEventListeners()\n this.coreFactory = new CoreFactory(this)\n this.playerInfo = PlayerInfo.getInstance(this.options.playerId)\n this.playerInfo.currentSize = {width: options.width, height: options.height}\n this.playerInfo.options = this.options\n if (this.options.parentId) {\n this.setParentId(this.options.parentId)\n }\n else if (this.options.parent) {\n this.attachTo(this.options.parent)\n }\n }\n\n /**\n * Specify a `parentId` to the player.\n * @method setParentId\n * @param {String} parentId the element parent id.\n */\n setParentId(parentId) {\n var el = document.querySelector(parentId)\n if (el) {\n this.attachTo(el)\n }\n }\n\n /**\n * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n * @method attachTo\n * @param {Object} element a given element.\n */\n attachTo(element) {\n this.options.parentElement = element\n this.core = this.coreFactory.create()\n this.addEventListeners()\n }\n\n addEventListeners() {\n if (!this.core.isReady) {\n this.listenToOnce(this.core, Events.CORE_READY, this.onReady)\n } else {\n this.onReady()\n }\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n }\n\n addContainerEventListeners() {\n var container = this.core.mediaControl.container\n if (!!container) {\n this.listenTo(container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(container, Events.CONTAINER_SEEK, this.onSeek)\n this.listenTo(container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(container, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate)\n this.listenTo(container, Events.CONTAINER_VOLUME, this.onVolumeUpdate)\n }\n }\n\n registerOptionEventListeners() {\n var eventsMapping = {\n \"onReady\": Events.PLAYER_READY,\n \"onResize\": Events.PLAYER_RESIZE,\n \"onPlay\": Events.PLAYER_PLAY,\n \"onPause\": Events.PLAYER_PAUSE,\n \"onStop\": Events.PLAYER_STOP,\n \"onEnded\": Events.PLAYER_ENDED,\n \"onSeek\": Events.PLAYER_SEEK,\n \"onError\": Events.PLAYER_ERROR,\n \"onTimeUpdate\": Events.PLAYER_TIMEUPDATE,\n \"onVolumeUpdate\": Events.PLAYER_VOLUMEUPDATE\n }\n var userEvents = this.options.events || {}\n\n Object.keys(userEvents).forEach((userEvent) => {\n var eventType = eventsMapping[userEvent]\n if (eventType) {\n var eventFunction = userEvents[userEvent]\n eventFunction = typeof eventFunction === \"function\" && eventFunction\n eventFunction && this.listenTo(this, eventType, eventFunction)\n }\n })\n }\n\n containerChanged() {\n this.stopListening()\n this.addEventListeners()\n }\n\n onReady() {\n this.ready = true\n this.addContainerEventListeners()\n this.trigger(Events.PLAYER_READY)\n }\n\n onVolumeUpdate(volume) {\n this.trigger(Events.PLAYER_VOLUMEUPDATE, volume)\n }\n\n onPlay() {\n this.trigger(Events.PLAYER_PLAY)\n }\n\n onPause() {\n this.trigger(Events.PLAYER_PAUSE)\n }\n\n onStop() {\n this.trigger(Events.PLAYER_STOP, this.getCurrentTime())\n }\n\n onEnded() {\n this.trigger(Events.PLAYER_ENDED)\n }\n\n onSeek(time) {\n this.trigger(Events.PLAYER_SEEK, time)\n }\n\n onTimeUpdate(timeProgress) {\n this.trigger(Events.PLAYER_TIMEUPDATE, timeProgress)\n }\n\n onError(error) {\n this.trigger(Events.PLAYER_ERROR, error)\n }\n\n is(value, type) {\n return value.constructor === type\n }\n\n normalizeSources(options) {\n var sources = options.sources || (options.source !== undefined? [options.source] : [])\n return sources.length === 0 ? [{source:\"\", mimeType:\"\"}] : sources\n }\n\n /**\n * resizes the current player canvas.\n * @method resize\n * @param {Object} size should be a literal object with `height` and `width`.\n * @example\n * ```javascript\n * player.resize({height: 360, width: 640})\n * ```\n */\n resize(size) {\n this.core.resize(size);\n }\n\n /**\n * loads a new source.\n * @method load\n * @param {Object} sources source or sources of video.\n * sources can be a string or {source: <>, mimeType: <>}\n * @param {Object} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n *\n */\n load(sources, mimeType) {\n this.core.load(sources, mimeType)\n }\n\n /**\n * destroys the current player and removes it from the DOM.\n * @method destroy\n */\n destroy() {\n this.core.destroy()\n }\n\n /**\n * plays the current video (`source`).\n * @method play\n */\n play() {\n this.core.mediaControl.container.play();\n }\n\n /**\n * pauses the current video (`source`).\n * @method pause\n */\n pause() {\n this.core.mediaControl.container.pause();\n }\n\n /**\n * stops the current video (`source`).\n * @method stop\n */\n stop() {\n this.core.mediaControl.container.stop();\n }\n\n\n /**\n * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration.\n */\n seek(time) {\n this.core.mediaControl.container.seek(time);\n }\n\n /**\n * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100.\n */\n seekPercentage(percentage) {\n this.core.mediaControl.container.seekPercentage(percentage);\n }\n\n /**\n * Set the volume for the current video (`source`).\n * @method setVolume\n * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n setVolume(volume) {\n this.core.mediaControl.container.setVolume(volume);\n }\n\n /**\n * Get the volume for the current video\n * @method getVolume\n * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n getVolume() {\n return this.core.mediaControl.container.volume;\n }\n\n /**\n * mutes the current video (`source`).\n * @method mute\n */\n mute() {\n this.core.mediaControl.container.setVolume(0);\n }\n\n /**\n * unmutes the current video (`source`).\n * @method unmute\n */\n unmute() {\n this.core.mediaControl.container.setVolume(100);\n }\n\n /**\n * checks if the player is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current source is playing, otherwise `false`\n */\n isPlaying() {\n return this.core.mediaControl.container.isPlaying();\n }\n\n /**\n * enables to configure a player after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this.core.configure(options)\n }\n\n /**\n * get a plugin by its name.\n * @method getPlugin\n * @param {String} name of the plugin.\n * @return {Object} the plugin instance\n * @example\n * ```javascript\n * var poster = player.getPlugin('poster');\n * poster.hidePlayButton();\n * ```\n */\n getPlugin(name) {\n var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins);\n return find(plugins, function(plugin) {\n return plugin.name === name;\n });\n }\n\n /**\n * the current time in seconds.\n * @method getCurrentTime\n * @return {Number} current time (in seconds) of the current source\n */\n getCurrentTime() {\n return this.core.mediaControl.container.getCurrentTime()\n }\n\n /**\n * the duration time in seconds.\n * @method getDuration\n * @return {Number} duration time (in seconds) of the current source\n */\n getDuration() {\n return this.core.mediaControl.container.getDuration()\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/player.js\n **/","// Copyright 2015 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Browser from 'components/browser'\n\nimport $ from 'clappr-zepto'\n\nimport flashHTML from './public/flash.html'\nimport flashStyle from './public/flash.scss'\n\nvar IE_CLASSID = \"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"\n\nvar objectIE = '\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" data-hls=\"\" width=\"100%\" height=\"100%\"> \"> &callback=<%= callbackName %>\" /> '\n\nexport default class BaseFlashPlayback extends Playback {\n get tagName() { return 'object' }\n get swfPath() { return '' }\n get wmode() { return 'transparent' }\n get template() { return template(flashHTML) }\n get attributes() {\n return {\n class: 'clappr-flash-playback',\n type: 'application/x-shockwave-flash',\n width: '100%',\n height: '100%',\n 'data-flash-playback': this.name\n }\n }\n\n setElement(element) {\n this.$el = element\n this.el = element[0]\n }\n\n setupFirefox() {\n var $el = this.$('embed')\n $el.attr('data-flash-playback', this.name)\n $el.addClass(this.attributes.class)\n this.setElement($el)\n }\n\n render() {\n this.$el.html(this.template({\n cid: this.cid,\n swfPath: this.swfPath,\n baseUrl: this.baseUrl,\n playbackId: this.uniqueId,\n wmode: this.wmode,\n callbackName: `window.Clappr.flashlsCallbacks.${this.cid}`}))\n if (Browser.isIE) {\n this.$('embed').remove()\n if(Browser.isLegacyIE) {\n this.$el.attr('classid', IE_CLASSID)\n }\n } else if (Browser.isFirefox) {\n this.setupFirefox()\n }\n this.el.id = this.cid\n var style = Styler.getStyleFor(flashStyle)\n this.$el.append(style)\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/base_flash_playback/base_flash_playback.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {seekStringToSeconds} from 'base/utils'\n\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Browser from 'components/browser'\nimport Mediator from 'components/mediator'\nimport template from 'base/template'\nimport $ from 'clappr-zepto'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport flashSwf from './public/Player.swf'\n\nvar MAX_ATTEMPTS = 60\n\nexport default class Flash extends BaseFlashPlayback {\n get name() { return 'flash' }\n get swfPath() { return template(flashSwf)({baseUrl: this.baseUrl}) }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.currentState === \"ENDED\"\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return !!this.bufferingState && this.currentState !== \"ENDED\"\n }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.baseUrl = options.baseUrl\n this.autoPlay = options.autoPlay\n this.settings = {default: ['seekbar']}\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\"]\n this.settings.seekEnabled = true\n this.isReadyState = false\n this.addListeners()\n }\n\n\n bootstrap() {\n if (this.el.playerPlay) {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n if (this.currentState === 'PLAYING') {\n this.firstPlay()\n } else {\n this.currentState = \"IDLE\"\n this.autoPlay && this.play()\n }\n $('
').insertAfter(this.$el)\n if (this.getDuration() > 0) {\n this.metadataLoaded()\n } else {\n Mediator.once(this.uniqueId + ':timeupdate', this.metadataLoaded, this)\n }\n } else {\n this._attempts = this._attempts || 0\n if (++this._attempts <= MAX_ATTEMPTS) {\n setTimeout(() => this.bootstrap(), 50)\n } else {\n this.trigger(Events.PLAYBACK_ERROR, {message: \"Max number of attempts reached\"}, this.name)\n }\n }\n }\n\n metadataLoaded() {\n this.isReadyState = true\n this.trigger(Events.PLAYBACK_READY, this.name)\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE, this.name)\n }\n\n getPlaybackType() {\n return Playback.VOD\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n updateTime() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.el.getPosition(), total: this.el.getDuration()}, this.name)\n }\n\n addListeners() {\n Mediator.on(this.uniqueId + ':progress', this.progress, this)\n Mediator.on(this.uniqueId + ':timeupdate', this.updateTime, this)\n Mediator.on(this.uniqueId + ':statechanged', this.checkState, this)\n Mediator.on(this.uniqueId + ':flashready', this.bootstrap, this)\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(this.uniqueId + ':progress')\n Mediator.off(this.uniqueId + ':timeupdate')\n Mediator.off(this.uniqueId + ':statechanged')\n Mediator.off(this.uniqueId + ':flashready')\n }\n\n checkState() {\n if (this.isIdle || this.currentState === \"PAUSED\") {\n return\n } else if (this.currentState !== \"PLAYING_BUFFERING\" && this.el.getState() === \"PLAYING_BUFFERING\") {\n this.bufferingState = true\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.currentState = \"PLAYING_BUFFERING\"\n } else if (this.el.getState() === \"PLAYING\") {\n this.bufferingState = false\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n this.currentState = \"PLAYING\"\n } else if (this.el.getState() === \"IDLE\") {\n this.currentState = \"IDLE\"\n } else if (this.el.getState() === \"ENDED\") {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: this.el.getDuration()}, this.name)\n this.currentState = \"ENDED\"\n this.isIdle = true\n }\n }\n\n progress() {\n if (this.currentState !== \"IDLE\" && this.currentState !== \"ENDED\") {\n this.trigger(Events.PLAYBACK_PROGRESS,{\n start: 0,\n current: this.el.getBytesLoaded(),\n total: this.el.getBytesTotal()\n })\n }\n }\n\n firstPlay() {\n if (this.el.playerPlay) {\n this.isIdle = false\n this.el.playerPlay(this.src)\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.checkInitialSeek())\n this.currentState = \"PLAYING\"\n } else {\n this.listenToOnce(this, Events.PLAYBACK_READY, this.firstPlay)\n }\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n if (seekTime !== 0) {\n this.seekSeconds(seekTime)\n }\n }\n\n play() {\n if (this.currentState === 'PAUSED' || this.currentState === 'PLAYING_BUFFERING') {\n this.currentState = \"PLAYING\"\n this.el.playerResume()\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n } else if (this.currentState !== 'PLAYING') {\n this.firstPlay()\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n }\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.playerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n this.currentState = \"PAUSED\"\n this.el.playerPause()\n this.trigger(Events.PLAYBACK_PAUSE, this.name)\n }\n\n stop() {\n this.el.playerStop()\n this.trigger(Events.PLAYBACK_STOP)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: 0}, this.name)\n }\n\n isPlaying() {\n return !!(this.isReady && this.currentState.indexOf(\"PLAYING\") > -1)\n }\n\n get isReady(){\n return this.isReadyState\n }\n\n getDuration() {\n return this.el.getDuration()\n }\n\n seekPercentage(percentage) {\n if (this.el.getDuration() > 0) {\n var seekSeconds = this.el.getDuration() * (percentage / 100)\n this.seek(seekSeconds)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.seekPercentage(percentage))\n }\n }\n\n seek(time) {\n if (this.isReady && this.el.playerSeek) {\n this.el.playerSeek(time)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: this.el.getDuration()}, this.name)\n if (this.currentState === \"PAUSED\") {\n this.el.playerPause()\n }\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.seek(time))\n }\n }\n\n destroy() {\n clearInterval(this.bootstrapId)\n super.stopListening()\n this.$el.remove()\n }\n}\n\nFlash.canPlay = function(resource) {\n if (!Browser.hasFlash || !resource || resource.constructor !== String) {\n return false\n } else {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n return resourceParts.length > 1 && !Browser.isMobile && resourceParts[1].match(/^(mp4|mov|f4v|3gpp|3gp)$/)\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flash/flash.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Events from 'base/events'\nimport template from 'base/template'\nimport Playback from 'base/playback'\nimport Mediator from 'components/mediator'\nimport Browser from 'components/browser'\nimport HLSEvents from './flashls_events'\nimport hlsSwf from './public/HLSPlayer.swf'\nimport $ from 'clappr-zepto'\n\n\nconst MAX_ATTEMPTS = 60\nconst AUTO = -1\n\nexport default class FlasHLS extends BaseFlashPlayback {\n get name() { return 'flashls' }\n get swfPath() { return template(hlsSwf)({baseUrl: this.baseUrl}) }\n\n get levels() { return this._levels || [] }\n get currentLevel() { return this._currentLevel || AUTO }\n set currentLevel(id) {\n this._currentLevel = id\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START)\n this.el.playerSetCurrentLevel(id)\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.hasEnded\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return !!this.bufferingState && !this.hasEnded\n }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.baseUrl = options.baseUrl\n this.initHlsParameters(options)\n this.highDefinition = false\n this.autoPlay = options.autoPlay\n this.loop = options.loop\n this.defaultSettings = {\n left: [\"playstop\"],\n default: ['seekbar'],\n right: [\"fullscreen\", \"volume\", \"hd-indicator\"],\n seekEnabled: false\n }\n this.settings = $.extend({}, this.defaultSettings)\n this.playbackType = Playback.LIVE\n this.hasEnded = false\n this.addListeners()\n }\n\n initHlsParameters(options) {\n this.autoStartLoad = (options.autoStartLoad === undefined) ? true : options.autoStartLoad\n this.capLevelToStage = (options.capLevelToStage === undefined) ? false : options.capLevelToStage\n this.maxLevelCappingMode = (options.maxLevelCappingMode === undefined) ? \"downscale\" : options.maxLevelCappingMode\n this.minBufferLength = (options.minBufferLength === undefined) ? -1 : options.minBufferLength\n this.minBufferLengthCapping = (options.minBufferLengthCapping === undefined) ? -1 : options.minBufferLengthCapping\n this.maxBufferLength = (options.maxBufferLength === undefined) ? 120 : options.maxBufferLength\n this.maxBackBufferLength = (options.maxBackBufferLength === undefined) ? 30 : options.maxBackBufferLength\n this.lowBufferLength = (options.lowBufferLength === undefined) ? 3 : options.lowBufferLength\n this.mediaTimePeriod = (options.mediaTimePeriod === undefined) ? 100 : options.mediaTimePeriod\n this.fpsDroppedMonitoringPeriod = (options.fpsDroppedMonitoringPeriod === undefined) ? 5000 : options.fpsDroppedMonitoringPeriod\n this.fpsDroppedMonitoringThreshold = (options.fpsDroppedMonitoringThreshold === undefined) ? 0.2 : options.fpsDroppedMonitoringThreshold\n this.capLevelonFPSDrop = (options.capLevelonFPSDrop === undefined) ? false : options.capLevelonFPSDrop\n this.smoothAutoSwitchonFPSDrop = (options.smoothAutoSwitchonFPSDrop === undefined) ? this.capLevelonFPSDrop : options.smoothAutoSwitchonFPSDrop\n this.switchDownOnLevelError = (options.switchDownOnLevelError === undefined) ? true : options.switchDownOnLevelError\n this.seekMode = (options.seekMode === undefined) ? \"ACCURATE\" : options.seekMode\n this.keyLoadMaxRetry = (options.keyLoadMaxRetry === undefined) ? 3 : options.keyLoadMaxRetry\n this.keyLoadMaxRetryTimeout = (options.keyLoadMaxRetryTimeout === undefined) ? 64000 : options.keyLoadMaxRetryTimeout\n this.fragmentLoadMaxRetry = (options.fragmentLoadMaxRetry === undefined) ? 3 : options.fragmentLoadMaxRetry\n this.fragmentLoadMaxRetryTimeout = (options.fragmentLoadMaxRetryTimeout === undefined) ? 4000 : options.fragmentLoadMaxRetryTimeout\n this.fragmentLoadSkipAfterMaxRetry = (options.fragmentLoadSkipAfterMaxRetry === undefined) ? true : options.fragmentLoadSkipAfterMaxRetry\n this.maxSkippedFragments = (options.maxSkippedFragments === undefined) ? 5 : options.maxSkippedFragments\n this.flushLiveURLCache = (options.flushLiveURLCache === undefined) ? false : options.flushLiveURLCache\n this.initialLiveManifestSize = (options.initialLiveManifestSize === undefined) ? 1 : options.initialLiveManifestSize\n this.manifestLoadMaxRetry = (options.manifestLoadMaxRetry === undefined) ? 3 : options.manifestLoadMaxRetry\n this.manifestLoadMaxRetryTimeout = (options.manifestLoadMaxRetryTimeout === undefined) ? 64000 : options.manifestLoadMaxRetryTimeout\n this.manifestRedundantLoadmaxRetry = (options.manifestRedundantLoadmaxRetry === undefined) ? 3 : options.manifestRedundantLoadmaxRetry\n this.startFromBitrate = (options.startFromBitrate === undefined) ? -1 : options.startFromBitrate\n this.startFromLevel = (options.startFromLevel === undefined) ? -1 : options.startFromLevel\n this.autoStartMaxDuration = (options.autoStartMaxDuration === undefined) ? -1 : options.autoStartMaxDuration\n this.seekFromLevel = (options.seekFromLevel === undefined) ? -1 : options.seekFromLevel\n this.useHardwareVideoDecoder = (options.useHardwareVideoDecoder === undefined) ? false : options.useHardwareVideoDecoder\n this.hlsLogEnabled = (options.hlsLogEnabled === undefined) ? true : options.hlsLogEnabled\n this.logDebug = (options.logDebug === undefined) ? false : options.logDebug\n this.logDebug2 = (options.logDebug2 === undefined) ? false : options.logDebug2\n this.logWarn = (options.logWarn === undefined) ? true : options.logWarn\n this.logError = (options.logError === undefined) ? true : options.logError\n this.hlsMinimumDvrSize = (options.hlsMinimumDvrSize === undefined) ? 60 : options.hlsMinimumDvrSize\n }\n\n addListeners() {\n Mediator.on(this.cid + ':flashready', () => this.bootstrap())\n Mediator.on(this.cid + ':timeupdate', (timeMetrics) => this.updateTime(timeMetrics))\n Mediator.on(this.cid + ':playbackstate', (state) => this.setPlaybackState(state))\n Mediator.on(this.cid + ':levelchanged', (level) => this.levelChanged(level))\n Mediator.on(this.cid + ':error', (code, url, message) => this.flashPlaybackError(code, url, message))\n Mediator.on(this.cid + ':fragmentloaded',(loadmetrics) => this.onFragmentLoaded(loadmetrics))\n Mediator.once(this.cid + ':manifestloaded', (duration, loadmetrics) => this.manifestLoaded(duration, loadmetrics))\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(this.cid + ':flashready')\n Mediator.off(this.cid + ':timeupdate')\n Mediator.off(this.cid + ':playbackstate')\n Mediator.off(this.cid + ':levelchanged')\n Mediator.off(this.cid + ':playbackerror')\n Mediator.off(this.cid + ':fragmentloaded')\n Mediator.off(this.cid + ':manifestloaded')\n }\n\n bootstrap() {\n if (this.el.playerLoad) {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n this.isReadyState = true\n this.srcLoaded = false\n this.currentState = \"IDLE\"\n this.setFlashSettings()\n this.updatePlaybackType()\n if (this.autoPlay || this._shouldPlayOnBootstrap) {\n this.play()\n }\n this.trigger(Events.PLAYBACK_READY, this.name)\n } else {\n this._bootstrapAttempts = this._bootstrapAttempts || 0\n if (++this._bootstrapAttempts <= MAX_ATTEMPTS) {\n setTimeout(() => this.bootstrap(), 50)\n } else {\n this.trigger(Events.PLAYBACK_ERROR, {message: \"Max number of attempts reached\"}, this.name)\n }\n }\n }\n\n setFlashSettings() {\n this.el.playerSetAutoStartLoad(this.autoStartLoad)\n this.el.playerSetCapLevelToStage(this.capLevelToStage)\n this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode)\n this.el.playerSetMinBufferLength(this.minBufferLength)\n this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping)\n this.el.playerSetMaxBufferLength(this.maxBufferLength)\n this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength)\n this.el.playerSetLowBufferLength(this.lowBufferLength)\n this.el.playerSetMediaTimePeriod(this.mediaTimePeriod)\n this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod)\n this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold)\n this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop)\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop)\n this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError)\n this.el.playerSetSeekMode(this.seekMode)\n this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry)\n this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout)\n this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry)\n this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout)\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry)\n this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments)\n this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache)\n this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize)\n this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry)\n this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout)\n this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry)\n this.el.playerSetStartFromBitrate(this.startFromBitrate)\n this.el.playerSetStartFromLevel(this.startFromLevel)\n this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration)\n this.el.playerSetSeekFromLevel(this.seekFromLevel)\n this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder)\n this.el.playerSetLogInfo(this.hlsLogEnabled)\n this.el.playerSetLogDebug(this.logDebug)\n this.el.playerSetLogDebug2(this.logDebug2)\n this.el.playerSetLogWarn(this.logWarn)\n this.el.playerSetLogError(this.logError)\n }\n\n setAutoStartLoad(autoStartLoad) {\n this.autoStartLoad = autoStartLoad\n this.el.playerSetAutoStartLoad(this.autoStartLoad)\n }\n\n setCapLevelToStage(capLevelToStage) {\n this.capLevelToStage = capLevelToStage\n this.el.playerSetCapLevelToStage(this.capLevelToStage)\n }\n\n setMaxLevelCappingMode(maxLevelCappingMode) {\n this.maxLevelCappingMode = maxLevelCappingMode\n this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode)\n }\n\n setSetMinBufferLength(minBufferLength) {\n this.minBufferLength = minBufferLength\n this.el.playerSetMinBufferLength(this.minBufferLength)\n }\n\n setMinBufferLengthCapping(minBufferLengthCapping) {\n this.minBufferLengthCapping = minBufferLengthCapping\n this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping)\n }\n\n setMaxBufferLength(maxBufferLength) {\n this.maxBufferLength = maxBufferLength\n this.el.playerSetMaxBufferLength(this.maxBufferLength)\n }\n\n setMaxBackBufferLength(maxBackBufferLength) {\n this.maxBackBufferLength = maxBackBufferLength\n this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength)\n }\n\n setLowBufferLength(lowBufferLength) {\n this.lowBufferLength = lowBufferLength\n this.el.playerSetLowBufferLength(this.lowBufferLength)\n }\n\n setMediaTimePeriod(mediaTimePeriod) {\n this.mediaTimePeriod = mediaTimePeriod\n this.el.playerSetMediaTimePeriod(this.mediaTimePeriod)\n }\n\n setFpsDroppedMonitoringPeriod(fpsDroppedMonitoringPeriod) {\n this.fpsDroppedMonitoringPeriod = fpsDroppedMonitoringPeriod\n this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod)\n }\n\n setFpsDroppedMonitoringThreshold(fpsDroppedMonitoringThreshold) {\n this.fpsDroppedMonitoringThreshold = fpsDroppedMonitoringThreshold\n this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold)\n }\n\n setCapLevelonFPSDrop(capLevelonFPSDrop) {\n this.capLevelonFPSDrop = capLevelonFPSDrop\n this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop)\n }\n\n setSmoothAutoSwitchonFPSDrop(smoothAutoSwitchonFPSDrop) {\n this.smoothAutoSwitchonFPSDrop = smoothAutoSwitchonFPSDrop\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop)\n }\n\n setSwitchDownOnLevelError(switchDownOnLevelError) {\n this.switchDownOnLevelError = switchDownOnLevelError\n this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError)\n }\n\n setSeekMode(seekMode) {\n this.seekMode = seekMode\n this.el.playerSetSeekMode(this.seekMode)\n }\n\n setKeyLoadMaxRetry(keyLoadMaxRetry) {\n this.keyLoadMaxRetry = keyLoadMaxRetry\n this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry)\n }\n\n setKeyLoadMaxRetryTimeout(keyLoadMaxRetryTimeout) {\n this.keyLoadMaxRetryTimeout = keyLoadMaxRetryTimeout\n this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout)\n }\n\n setFragmentLoadMaxRetry(fragmentLoadMaxRetry) {\n this.fragmentLoadMaxRetry = fragmentLoadMaxRetry\n this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry)\n }\n\n setFragmentLoadMaxRetryTimeout(fragmentLoadMaxRetryTimeout) {\n this.fragmentLoadMaxRetryTimeout = fragmentLoadMaxRetryTimeout\n this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout)\n }\n\n setFragmentLoadSkipAfterMaxRetry(fragmentLoadSkipAfterMaxRetry) {\n this.fragmentLoadSkipAfterMaxRetry = fragmentLoadSkipAfterMaxRetry\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry)\n }\n\n setMaxSkippedFragments(maxSkippedFragments) {\n this.maxSkippedFragments = maxSkippedFragments\n this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments)\n }\n\n setFlushLiveURLCache(flushLiveURLCache) {\n this.flushLiveURLCache = flushLiveURLCache\n this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache)\n }\n\n setInitialLiveManifestSize(initialLiveManifestSize) {\n this.initialLiveManifestSize = initialLiveManifestSize\n this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize)\n }\n\n setManifestLoadMaxRetry(manifestLoadMaxRetry) {\n this.manifestLoadMaxRetry = manifestLoadMaxRetry\n this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry)\n }\n\n setManifestLoadMaxRetryTimeout(manifestLoadMaxRetryTimeout) {\n this.manifestLoadMaxRetryTimeout = manifestLoadMaxRetryTimeout\n this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout)\n }\n\n setManifestRedundantLoadmaxRetry(manifestRedundantLoadmaxRetry) {\n this.manifestRedundantLoadmaxRetry = manifestRedundantLoadmaxRetry\n this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry)\n }\n\n setStartFromBitrate(startFromBitrate) {\n this.startFromBitrate = startFromBitrate\n this.el.playerSetStartFromBitrate(this.startFromBitrate)\n }\n\n setStartFromLevel(startFromLevel) {\n this.startFromLevel = startFromLevel\n this.el.playerSetStartFromLevel(this.startFromLevel)\n }\n\n setAutoStartMaxDuration(autoStartMaxDuration) {\n this.autoStartMaxDuration = autoStartMaxDuration\n this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration)\n }\n\n setSeekFromLevel(seekFromLevel) {\n this.seekFromLevel = seekFromLevel\n this.el.playerSetSeekFromLevel(this.seekFromLevel)\n }\n\n setUseHardwareVideoDecoder(useHardwareVideoDecoder) {\n this.useHardwareVideoDecoder = useHardwareVideoDecoder\n this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder)\n }\n\n setSetLogInfo(hlsLogEnabled) {\n this.hlsLogEnabled = hlsLogEnabled\n this.el.playerSetLogInfo(this.hlsLogEnabled)\n }\n\n setLogDebug(logDebug) {\n this.logDebug = logDebug\n this.el.playerSetLogDebug(this.logDebug)\n }\n\n setLogDebug2(logDebug2) {\n this.logDebug2 = logDebug2\n this.el.playerSetLogDebug2(this.logDebug2)\n }\n\n setLogWarn(logWarn) {\n this.logWarn = logWarn\n this.el.playerSetLogWarn(this.logWarn)\n }\n\n setLogError(logError) {\n this.logError = logError\n this.el.playerSetLogError(this.logError)\n }\n\n levelChanged(level) {\n var currentLevel = this.el.getLevels()[level]\n if (currentLevel) {\n this.highDefinition = (currentLevel.height >= 720 || (currentLevel.bitrate / 1000) >= 2000);\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition)\n this.trigger(Events.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bandwidth,\n bitrate: currentLevel.bitrate,\n level: level\n })\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END)\n }\n }\n\n updateTime(timeMetrics) {\n if (this.currentState === 'IDLE') {\n return\n }\n\n var duration = this.normalizeDuration(timeMetrics.duration)\n var position = Math.min(Math.max(timeMetrics.position, 0), duration)\n var previousDVRStatus = this.dvrEnabled\n var livePlayback = (this.playbackType === Playback.LIVE)\n this.dvrEnabled = (livePlayback && duration > this.hlsMinimumDvrSize)\n\n if (duration === 100 || livePlayback === undefined) {\n return;\n }\n\n if (this.dvrEnabled !== previousDVRStatus) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE, this.name)\n }\n\n if (livePlayback && (!this.dvrEnabled || !this.dvrInUse)) {\n position = duration\n }\n\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: position, total: duration}, this.name)\n }\n\n play() {\n if(this.currentState === 'PAUSED') {\n this.el.playerResume()\n } else if (!this.srcLoaded && this.currentState !== \"PLAYING\") {\n this.firstPlay()\n } else {\n this.el.playerPlay()\n }\n }\n\n getPlaybackType() {\n return this.playbackType? this.playbackType: null\n }\n\n getCurrentLevelIndex() {\n return this.currentLevel\n }\n\n getCurrentLevel() {\n return this.levels[this.currentLevel]\n }\n\n getCurrentBitrate() {\n return this.levels[this.currentLevel].bitrate\n }\n\n setCurrentLevel(level) {\n this.currentLevel = level\n }\n\n isHighDefinitionInUse() {\n return this.highDefinition\n }\n\n getLevels() {\n return this.levels\n }\n\n setPlaybackState(state) {\n if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\"].indexOf(state) >= 0) {\n this.bufferingState = true\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.updateCurrentState(state)\n } else if ([\"PLAYING\", \"PAUSED\"].indexOf(state) >= 0) {\n if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\", \"IDLE\"].indexOf(this.currentState) >= 0) {\n this.bufferingState = false\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n }\n this.updateCurrentState(state)\n } else if (state === \"IDLE\") {\n this.srcLoaded = false\n if (this.loop && [\"PLAYING_BUFFERING\", \"PLAYING\"].indexOf(this.currentState) >= 0) {\n this.play()\n this.seek(0)\n } else {\n this.updateCurrentState(state)\n this.hasEnded = true\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: this.el.getDuration()}, this.name)\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n }\n }\n\n updateCurrentState(state) {\n this.currentState = state\n if (state !== \"IDLE\") {\n this.hasEnded = false\n }\n this.updatePlaybackType()\n if (state === \"PLAYING\") {\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n } else if (state === \"PAUSED\") {\n this.trigger(Events.PLAYBACK_PAUSE, this.name)\n }\n }\n\n updatePlaybackType() {\n this.playbackType = this.el.getType()\n if (this.playbackType) {\n this.playbackType = this.playbackType.toLowerCase()\n if (this.playbackType === Playback.VOD) {\n this.startReportingProgress()\n } else {\n this.stopReportingProgress()\n }\n }\n this.trigger(Events.PLAYBACK_PLAYBACKSTATE, {type: this.playbackType})\n }\n\n startReportingProgress() {\n if (!this.reportingProgress) {\n this.reportingProgress = true\n }\n }\n\n stopReportingProgress() {\n this.reportingProgress = false\n }\n\n onFragmentLoaded(loadmetrics) {\n this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, loadmetrics)\n if (this.reportingProgress && this.el.getPosition) {\n var buffered = this.el.getPosition() + this.el.getbufferLength()\n this.trigger(Events.PLAYBACK_PROGRESS, {\n start: this.el.getPosition(),\n current: buffered,\n total: this.el.getDuration()\n })\n }\n }\n\n firstPlay() {\n if (this.el.playerLoad) {\n this.setFlashSettings() //ensure flushLiveURLCache will work (#327)\n this.el.playerLoad(this.src)\n Mediator.once(this.cid + ':manifestloaded',() => this.el.playerPlay())\n this.srcLoaded = true\n } else {\n this._shouldPlayOnBootstrap = true\n }\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.playerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n if (this.playbackType !== Playback.LIVE || this.dvrEnabled) {\n this.el.playerPause()\n if (this.playbackType === Playback.LIVE && this.dvrEnabled) {\n this.updateDvr(true)\n }\n }\n }\n\n stop() {\n this.srcLoaded = false\n this.el.playerStop()\n this.trigger(Events.PLAYBACK_STOP)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: 0}, this.name)\n }\n\n isPlaying() {\n if (this.currentState) {\n return !!(this.currentState.match(/playing/i))\n }\n return false\n }\n\n get isReady() {\n return this.isReadyState\n }\n\n getDuration() {\n return this.normalizeDuration(this.el.getDuration())\n }\n\n normalizeDuration(duration) {\n if (this.playbackType === Playback.LIVE) {\n // estimate 10 seconds of buffer time for live streams for seek positions\n duration = duration - 10\n }\n return duration\n }\n\n seekPercentage(percentage) {\n var duration = this.el.getDuration()\n var time = 0\n if (percentage > 0) {\n time = duration * percentage / 100\n }\n this.seek(time)\n }\n\n seek(time) {\n var duration = this.el.getDuration()\n if (this.playbackType === Playback.LIVE) {\n // seek operations to a time within 5 seconds from live stream will position playhead back to live\n var dvrInUse = (time >= 0 && duration - time > 5)\n if (!dvrInUse) {\n time = -1\n }\n this.updateDvr(dvrInUse)\n }\n this.el.playerSeek(time)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: duration}, this.name)\n }\n\n updateDvr(dvrInUse) {\n var previousDvrInUse = !!this.dvrInUse\n this.dvrInUse = dvrInUse\n if (this.dvrInUse !== previousDvrInUse) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_DVR, this.dvrInUse)\n this.trigger(Events.PLAYBACK_STATS_ADD, {'dvr': this.dvrInUse})\n }\n }\n\n flashPlaybackError(code, url, message) {\n this.trigger(Events.PLAYBACK_ERROR, {code: code, url: url, message: message})\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n manifestLoaded(duration, loadmetrics) {\n var levels = this.el.getLevels()\n var levelsLength = levels.length\n this._levels = []\n\n for (var index = 0 ; index < levelsLength ; index++) {\n this._levels.push({id: index, label: `${levels[index].height}p`})\n }\n this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels)\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, {duration: duration, data: loadmetrics})\n }\n\n timeUpdate(time, duration) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: duration}, this.name)\n }\n\n destroy() {\n this.stopListening()\n this.$el.remove()\n }\n\n updateSettings() {\n this.settings = $.extend({}, this.defaultSettings)\n if (this.playbackType === Playback.VOD || this.dvrInUse) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.seekEnabled = true\n } else if (this.dvrEnabled) {\n this.settings.left = [\"playpause\"]\n this.settings.seekEnabled = true\n } else {\n this.settings.seekEnabled = false\n }\n }\n\n createCallbacks() {\n if (!window.Clappr) {\n window.Clappr = {}\n }\n if (!window.Clappr.flashlsCallbacks) {\n window.Clappr.flashlsCallbacks = {}\n }\n this.flashlsEvents = new HLSEvents(this.cid)\n window.Clappr.flashlsCallbacks[this.cid] = (eventName, args) => {\n this.flashlsEvents[eventName].apply(this.flashlsEvents, args)\n }\n }\n\n render() {\n super.render()\n this.createCallbacks()\n return this\n }\n}\n\nFlasHLS.canPlay = function(resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n return Browser.hasFlash &&\n ((resourceParts.length > 1 && resourceParts[1] === \"m3u8\") ||\n mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl')\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flashls/flashls.js\n **/","import Mediator from '../../components/mediator'\n\nexport default class HLSEvents {\n constructor(instanceId) {\n this.instanceId = instanceId\n }\n ready() {\n Mediator.trigger(`${this.instanceId}:flashready`)\n }\n videoSize(width, height) {\n Mediator.trigger(`${this.instanceId}:videosizechanged`, width, height)\n }\n complete() {\n Mediator.trigger(`${this.instanceId}:complete`)\n }\n error(code, url, message) {\n Mediator.trigger(`${this.instanceId}:error`, code, url, message)\n }\n manifest(duration, loadmetrics) {\n Mediator.trigger(`${this.instanceId}:manifestloaded`, duration, loadmetrics)\n }\n audioLevelLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:audiolevelloaded`, loadmetrics)\n }\n levelLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:levelloaded`, loadmetrics)\n }\n fragmentLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:fragmentloaded`, loadmetrics)\n }\n fragmentPlaying(playmetrics) {\n Mediator.trigger(`${this.instanceId}:fragmentplaying`, playmetrics)\n }\n position(timemetrics) {\n Mediator.trigger(`${this.instanceId}:timeupdate`, timemetrics)\n }\n state(newState) {\n Mediator.trigger(`${this.instanceId}:playbackstate`, newState)\n }\n seekState(newState) {\n Mediator.trigger(`${this.instanceId}:seekstate`, newState)\n }\n switch(newLevel) {\n Mediator.trigger(`${this.instanceId}:levelchanged`, newLevel)\n }\n audioTracksListChange(trackList) {\n Mediator.trigger(`${this.instanceId}:audiotracklistchanged`, trackList)\n }\n audioTrackChange(trackId) {\n Mediator.trigger(`${this.instanceId}:audiotrackchanged`, trackId)\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flashls/flashls_events.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport HTML5VideoPlayback from 'playbacks/html5_video'\nimport HLSJS from 'hls.js'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport Browser from 'components/browser'\n\nconst AUTO = -1\n\nexport default class HLS extends HTML5VideoPlayback {\n get name() { return 'hls' }\n\n get levels() { return this._levels || [] }\n get currentLevel() { return this._currentLevel || AUTO }\n set currentLevel(id) {\n this._currentLevel = id\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START)\n this.hls.currentLevel = this._currentLevel\n }\n\n constructor(options) {\n super(options)\n this.minDvrSize = options.hlsMinimumDvrSize ? options.hlsMinimumDvrSize : 60\n this.playbackType = Playback.VOD\n // for hls streams which have dvr with a sliding window,\n // the content at the start of the playlist is removed as new\n // content is appended at the end.\n // this means the actual playable start time will increase as the\n // start content is deleted\n // For streams with dvr where the entire recording is kept from the\n // beginning this should stay as 0\n this.playableRegionStartTime = 0\n // if content is removed from the beginning then this empty area should\n // be ignored. \"playableRegionDuration\" does not consider this\n this.playableRegionDuration = 0\n options.autoPlay && this.setupHls()\n }\n\n setupHls() {\n this.hls = new HLSJS(this.options.hlsjsConfig || {})\n this.hls.on(HLSJS.Events.MEDIA_ATTACHED, () => this.hls.loadSource(this.options.src))\n this.hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => this.updatePlaybackType(evt, data))\n this.hls.on(HLSJS.Events.LEVEL_UPDATED, (evt, data) => this.updateDuration(evt, data))\n this.hls.on(HLSJS.Events.LEVEL_SWITCH, (evt,data) => this.onLevelSwitch(evt, data))\n this.hls.on(HLSJS.Events.FRAG_LOADED, (evt, data) => this.onFragmentLoaded(evt, data))\n this.hls.attachMedia(this.el)\n }\n\n // override\n setupSrc(srcUrl) {\n // this playback manages the src on the video element itself\n }\n\n // the duration on the video element itself should not be used\n // as this does not necesarily represent the duration of the stream\n // https://github.com/clappr/clappr/issues/668#issuecomment-157036678\n getDuration() {\n return this.playableRegionDuration\n }\n\n getCurrentTime() {\n return this.el.currentTime - this.playableRegionStartTime\n }\n\n seek(time) {\n var onDvr = this.dvrEnabled && time > 0 && time <= this.playableRegionDuration\n time += this.playableRegionStartTime\n super.seek(time)\n this.updateDvr(onDvr)\n }\n\n seekPercentage(percentage) {\n var seekTo = this.playableRegionDuration\n if (percentage > 0) {\n seekTo = this.playableRegionDuration * (percentage / 100)\n }\n this.seek(seekTo)\n }\n\n updateDvr(status) {\n this.trigger(Events.PLAYBACK_DVR, status)\n this.trigger(Events.PLAYBACK_STATS_ADD, {'dvr': status})\n }\n\n updateSettings() {\n if (this.playbackType === Playback.VOD) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n } else if (this.dvrEnabled) {\n this.settings.left = [\"playpause\"]\n } else {\n this.settings.left = [\"playstop\"]\n }\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n onTimeUpdate() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.getCurrentTime(), total: this.getDuration()}, this.name)\n }\n\n play() {\n if (!this.hls) {\n this.setupHls()\n }\n super.play()\n }\n\n pause() {\n super.pause()\n if (this.dvrEnabled) {\n this.updateDvr(true)\n }\n }\n\n stop() {\n super.stop()\n if (this.hls) {\n this.hls.destroy()\n delete this.hls\n }\n }\n\n updatePlaybackType(evt, data) {\n this.playbackType = data.details.live ? Playback.LIVE : Playback.VOD\n this.fillLevels()\n }\n\n fillLevels() {\n this._levels = this.hls.levels.map((level, index) => { return {id: index , label: `${level.height}p`}})\n this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels)\n }\n\n updateDuration(evt, data) {\n var fragments = data.details.fragments\n if (fragments.length > 0) {\n this.playableRegionStartTime = fragments[0].start\n }\n this.playableRegionDuration = data.details.totalduration\n this.onDurationChange()\n }\n\n onFragmentLoaded(evt, data) {\n this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, data)\n }\n\n onLevelSwitch(evt, data) {\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END)\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH, data)\n var currentLevel = this.hls.levels[data.level]\n if (currentLevel) {\n this.highDefinition = (currentLevel.height >= 720 || (currentLevel.bitrate / 1000) >= 2000);\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition)\n this.trigger(Events.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bandwidth,\n bitrate: currentLevel.bitrate,\n level: data.level\n })\n }\n }\n\n get dvrEnabled() {\n return (this.playableRegionDuration >= this.minDvrSize && this.getPlaybackType() === Playback.LIVE)\n }\n\n getPlaybackType() {\n return this.playbackType\n }\n\n isSeekEnabled() {\n return (this.playbackType === Playback.VOD || this.dvrEnabled)\n }\n}\n\nHLS.canPlay = function(resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n var isHls = ((resourceParts.length > 1 && resourceParts[1] === \"m3u8\") ||\n mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl')\n\n return !!(HLSJS.isSupported() && isHls && !Browser.isSafari)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/hls/hls.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport HTML5Video from 'playbacks/html5_video'\nimport find from 'lodash.find'\n\nexport default class HTML5Audio extends HTML5Video {\n get name() { return 'html5_audio' }\n get tagName() { return 'audio' }\n\n updateSettings() {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n getPlaybackType() {\n return Playback.AOD\n }\n}\n\nHTML5Audio.canPlay = function(resourceUrl, mimeType) {\n var mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n }\n return HTML5Video._canPlay('audio', mimetypes, resourceUrl, mimeType) \n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html5_audio/html5_audio.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {seekStringToSeconds} from 'base/utils'\n\nimport Playback from 'base/playback'\nimport template from 'base/template'\nimport Styler from 'base/styler'\nimport Browser from 'components/browser'\nimport Events from 'base/events'\nimport tagStyle from './public/style.scss'\nimport sourceHTML from './public/index.html'\nimport find from 'lodash.find'\n\nconst MIMETYPES = {\n 'mp4': [\"avc1.42E01E\", \"avc1.58A01E\", \"avc1.4D401E\", \"avc1.64001E\", \"mp4v.20.8\", \"mp4v.20.240\", \"mp4a.40.2\"].map(\n (codec) => { return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"'}),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegurl']\n}\nMIMETYPES['ogv'] = MIMETYPES['ogg']\nMIMETYPES['3gp'] = MIMETYPES['3gpp']\n\nexport default class HTML5Video extends Playback {\n get name() { return 'html5_video' }\n get tagName() { return 'video' }\n get template() { return template(sourceHTML) }\n\n get attributes() {\n return {\n 'data-html5-video': ''\n }\n }\n\n get events() {\n return {\n 'canplay': 'handleBufferingEvents',\n 'canplaythrough': 'handleBufferingEvents',\n 'durationchange': 'onDurationChange',\n 'ended': 'onEnded',\n 'error': 'onError',\n 'loadedmetadata': 'onLoadedMetadata',\n 'loadstart': 'onLoadStart',\n 'pause': 'onPause',\n 'playing': 'onPlaying',\n 'progress': 'onProgress',\n 'seeked': 'handleBufferingEvents',\n 'seeking': 'handleBufferingEvents',\n 'stalled': 'handleBufferingEvents',\n 'timeupdate': 'onTimeUpdate',\n 'waiting': 'handleBufferingEvents'\n }\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.el.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.bufferingState\n }\n\n constructor(options) {\n super(options)\n this.loadStarted = false\n this.playheadMoving = false\n this.playheadMovingTimer = null\n this.options = options\n this.setupSrc(options.src)\n this.el.loop = options.loop\n if (options.poster) {\n this.$el.attr(\"poster\", options.poster)\n }\n this.el.autoplay = options.autoPlay\n if (Browser.isSafari) {\n this.setupSafari()\n } else {\n this.el.preload = options.preload ? options.preload: 'metadata'\n this.settings.seekEnabled = true\n }\n this.settings = {default: ['seekbar']}\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\", \"hd-indicator\"]\n }\n\n /**\n * Sets the source url on the element, and also the 'src' property.\n * @method setupSrc\n * @param {String} srcUrl The source URL.\n */\n setupSrc(srcUrl) {\n this.src = srcUrl\n this.el.src = srcUrl\n }\n\n setupSafari() {\n this.el.preload = 'auto'\n }\n\n onLoadedMetadata(e) {\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, {duration: e.target.duration, data: e})\n this.updateSettings()\n var autoSeekFromUrl = typeof(this.options.autoSeekFromUrl) === \"undefined\" || this.options.autoSeekFromUrl\n if (this.getPlaybackType() !== Playback.LIVE && autoSeekFromUrl) {\n this.checkInitialSeek()\n }\n }\n\n onDurationChange() {\n this.updateSettings()\n this.onTimeUpdate()\n }\n\n updateSettings() {\n // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n // that's why we check it again and update media control accordingly.\n if (this.getPlaybackType() === Playback.VOD) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n } else {\n this.settings.left = [\"playstop\"]\n }\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n isSeekEnabled() {\n return isFinite(this.getDuration())\n }\n\n getPlaybackType() {\n return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? Playback.LIVE : Playback.VOD\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n play() {\n if (!this.loadStarted && this.el.preload === 'none') {\n this.loadStarted = true\n this.handleBufferingEvents()\n }\n this.el.play()\n }\n\n pause() {\n this.el.pause()\n }\n\n stop() {\n this.pause()\n this.el.currentTime = 0\n this.stopPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n volume(value) {\n this.el.volume = value / 100\n }\n\n mute() {\n this.el.volume = 0\n }\n\n unmute() {\n this.el.volume = 1\n }\n\n isMuted() {\n return !!this.el.volume\n }\n\n isPlaying() {\n return !this.el.paused && !this.el.ended\n }\n\n get isReady() {\n return this.isReadyState\n }\n\n startPlayheadMovingChecks() {\n if (this.playheadMovingTimer !== null) {\n return\n }\n this.playheadMovingTimeOnCheck = null\n this.determineIfPlayheadMoving()\n this.playheadMovingTimer = setInterval(this.determineIfPlayheadMoving.bind(this), 500)\n }\n\n stopPlayheadMovingChecks() {\n if (this.playheadMovingTimer === null) {\n return\n }\n clearInterval(this.playheadMovingTimer)\n this.playheadMovingTimer = null\n this.playheadMoving = false\n }\n\n determineIfPlayheadMoving() {\n var before = this.playheadMovingTimeOnCheck\n var now = this.el.currentTime\n this.playheadMoving = before !== now\n this.playheadMovingTimeOnCheck = now\n this.handleBufferingEvents()\n }\n\n onLoadStart() {\n if (this.el.preload !== 'none') {\n // when preload is none the onLoadStart event is still fired\n // immediately. Pretend that load starts in play()\n this.loadStarted = true\n this.handleBufferingEvents()\n }\n }\n\n onPlaying() {\n this.startPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PLAY)\n }\n\n onPause() {\n this.stopPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PAUSE)\n }\n\n onEnded() {\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n\n // The playback should be classed as buffering if the following are true:\n // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n // - the media hasn't \"ended\"\n // - loading has started\n handleBufferingEvents() {\n var playheadShouldBeMoving = !this.el.ended && !this.el.paused\n var buffering = this.loadStarted && !this.el.ended && ((playheadShouldBeMoving && !this.playheadMoving) || this.el.readyState < this.el.HAVE_FUTURE_DATA)\n if (this.bufferingState !== buffering) {\n this.bufferingState = buffering\n if (buffering) {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n }\n else {\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n }\n }\n }\n\n onError(event) {\n this.trigger(Events.PLAYBACK_ERROR, this.el.error, this.name)\n }\n\n destroy() {\n this.stop()\n this.el.src = ''\n this.src = null\n this.$el.remove()\n }\n\n seek(time) {\n this.el.currentTime = time\n }\n\n seekPercentage(percentage) {\n var time = this.el.duration * (percentage / 100)\n this.seek(time)\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n if (seekTime !== 0) {\n this.seek(seekTime)\n }\n }\n\n getCurrentTime() {\n return this.el.currentTime\n }\n\n getDuration() {\n return this.el.duration\n }\n\n onTimeUpdate() {\n this.handleBufferingEvents()\n if (this.getPlaybackType() === Playback.LIVE) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 1, total: 1}, this.name)\n } else {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.el.currentTime, total: this.el.duration}, this.name)\n }\n }\n\n onProgress() {\n if (!this.el.buffered.length) {\n return\n }\n var bufferedPos = 0\n for (var i = 0; i < this.el.buffered.length; i++) {\n if (this.el.currentTime >= this.el.buffered.start(i) && this.el.currentTime <= this.el.buffered.end(i)) {\n bufferedPos = i\n break\n }\n }\n this.trigger(Events.PLAYBACK_PROGRESS, {\n start: this.el.buffered.start(bufferedPos),\n current: this.el.buffered.end(bufferedPos),\n total: this.el.duration\n })\n }\n\n typeFor(src) {\n var resourceParts = src.split('?')[0].match(/.*\\.(.*)$/) || []\n var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\"\n return isHls ? 'application/vnd.apple.mpegurl' : 'video/mp4'\n }\n\n ready() {\n if (this.isReadyState) {\n return\n }\n this.isReadyState = true\n this.trigger(Events.PLAYBACK_READY, this.name)\n }\n\n render() {\n var style = Styler.getStyleFor(tagStyle)\n\n this.src && this.$el.html(this.template({ src: this.src, type: this.typeFor(this.src) }))\n\n if (this.options.useVideoTagDefaultControls) {\n this.$el.attr('controls', 'controls')\n }\n\n if (this.options.disableVideoTagContextMenu) {\n this.$el.on(\"contextmenu\", () => {\n return false\n })\n }\n\n this.$el.append(style)\n this.ready()\n return this\n }\n}\n\nHTML5Video._canPlay = function(type, mimeTypesByExtension, resourceUrl, mimeType) {\n var extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1]\n var mimeTypes = mimeType || mimeTypesByExtension[extension] || []\n mimeTypes = (mimeTypes.constructor === Array) ? mimeTypes : [mimeTypes]\n\n var media = document.createElement(type)\n return !!find(mimeTypes, (mediaType) => !!media.canPlayType(mediaType).replace(/no/, ''))\n}\n\nHTML5Video.canPlay = function(resourceUrl, mimeType) {\n return HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType)\n}\n\nmodule.exports = HTML5Video\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html5_video/html5_video.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport imgStyle from './public/style.scss'\n\nexport default class HTMLImg extends Playback {\n get name() { return 'html_img' }\n get tagName() { return 'img' }\n get attributes() {\n return {\n 'data-html-img': ''\n }\n }\n\n getPlaybackType() {\n return Playback.NO_OP\n }\n\n constructor(params) {\n super(params)\n this.el.src = params.src\n }\n\n render() {\n var style = Styler.getStyleFor(imgStyle)\n this.$el.append(style)\n return this\n }\n }\n\nHTMLImg.canPlay = function(resource) {\n return !!resource.match(/(.*).(png|jpg|jpeg|gif|bmp)/)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html_img/html_img.js\n **/","import {requestAnimationFrame, cancelAnimationFrame, getBrowserLanguage} from 'base/utils'\nimport Playback from 'base/playback'\nimport template from 'base/template'\nimport Styler from 'base/styler'\nimport Events from 'base/events'\nimport noOpStyle from './public/style.scss'\nimport noOpHTML from './public/error.html'\n\nexport default class NoOp extends Playback {\n get name() { return 'no_op' }\n get template() { return template(noOpHTML) }\n get attributes() {\n return {'data-no-op': ''}\n }\n\n getNoOpMessage(){\n var messages = {\n 'en': 'Your browser does not support the playback of this video. Please try using a different browser.',\n 'es': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.',\n 'pt': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.'\n }\n messages['en-us'] = messages['en']\n messages['es-419'] = messages['es']\n messages['pt-br'] = messages['pt']\n return messages[getBrowserLanguage()] || messages['en']\n }\n\n constructor(options) {\n super(options)\n this.options = options\n }\n\n render() {\n var style = Styler.getStyleFor(noOpStyle);\n this.$el.html(this.template({message:this.options.playbackNotSupportedMessage || this.getNoOpMessage()}))\n this.$el.append(style);\n this.animate()\n this.trigger(Events.PLAYBACK_READY, this.name)\n return this\n }\n\n noise() {\n var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height)\n\n try {\n var buffer32 = new Uint32Array(idata.data.buffer)\n } catch (err) {\n var buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4)\n var data=idata.data\n for(var i = 0; i < data.length; i++){\n buffer32[i]=data[i]\n }\n }\n\n var len = buffer32.length\n var run = 0\n var color = 0\n var m = Math.random() * 6 + 4\n\n for (var i = 0; i < len;) {\n if (run < 0) {\n run = m * Math.random();\n var p = Math.pow(Math.random(), 0.4);\n color = (255 * p) << 24;\n }\n run -= 1;\n buffer32[i++] = color;\n }\n this.context.putImageData(idata, 0, 0);\n }\n\n loop() {\n if (this.stop === true) {\n return;\n }\n this.noise()\n this.animationHandle = requestAnimationFrame(() => this.loop())\n }\n\n destroy() {\n if (this.animationHandle) {\n cancelAnimationFrame(this.animationHandle);\n this.stop = true;\n }\n }\n\n animate() {\n this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0]\n this.context = this.canvas.getContext('2d')\n this.loop()\n }\n}\n\nNoOp.canPlay = (source) => {\n return true\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/no_op/no_op.js\n **/","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport Browser from 'components/browser'\n\nexport default class ClickToPausePlugin extends ContainerPlugin {\n get name() { return 'click_to_pause' }\n\n constructor(container) {\n super(container)\n }\n\n bindEvents() {\n if (!this.options.chromeless && !Browser.isMobile) {\n this.listenTo(this.container, Events.CONTAINER_CLICK, this.click)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n }\n }\n\n click() {\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()) {\n if (this.container.isPlaying()) {\n this.container.pause()\n } else {\n this.container.play()\n }\n }\n }\n\n settingsUpdate() {\n this.container.$el.removeClass('pointer-enabled')\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()) {\n this.container.$el.addClass('pointer-enabled')\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/click_to_pause/click_to_pause.js\n **/","module.exports = require('./click_to_pause')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/click_to_pause/index.js\n **/","import UICorePlugin from 'base/ui_core_plugin'\nimport template from 'base/template'\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport Events from 'base/events'\nimport dvrStyle from './public/dvr_controls.scss'\nimport dvrHTML from './public/index.html'\nimport $ from 'clappr-zepto'\n\nexport default class DVRControls extends UICorePlugin {\n get template() { return template(dvrHTML) }\n get name() { return 'dvr_controls' }\n get events() {\n return {\n 'click .live-button': 'click'\n }\n }\n get attributes() {\n return {\n 'class': 'dvr-controls',\n 'data-dvr-controls': '',\n }\n }\n\n constructor(core) {\n super(core)\n this.core = core\n this.settingsUpdate()\n }\n\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate)\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.render)\n if (this.core.getCurrentContainer()) {\n this.listenToOnce(this.core.getCurrentContainer(), Events.CONTAINER_TIMEUPDATE, this.render)\n this.listenTo(this.core.getCurrentContainer(), Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n dvrChanged(dvrEnabled) {\n this.settingsUpdate()\n this.core.mediaControl.$el.addClass('live')\n if (dvrEnabled) {\n this.core.mediaControl.$el.addClass('dvr')\n this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide()\n } else {\n this.core.mediaControl.$el.removeClass('dvr')\n }\n }\n\n click() {\n if (!this.core.mediaControl.container.isPlaying()) {\n this.core.mediaControl.container.play()\n }\n if (this.core.mediaControl.$el.hasClass('dvr')) {\n this.core.mediaControl.container.seek(-1)\n }\n }\n\n settingsUpdate() {\n this.stopListening()\n if(this.shouldRender()) {\n this.render()\n this.$el.click(() => this.click())\n }\n this.bindEvents()\n }\n\n shouldRender() {\n var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls\n return useDvrControls && this.core.getPlaybackType() === Playback.LIVE\n }\n\n render() {\n this.style = this.style || Styler.getStyleFor(dvrStyle, { baseUrl: this.core.options.baseUrl })\n this.$el.html(this.template())\n this.$el.append(this.style)\n if (this.shouldRender()) {\n this.core.mediaControl.$el.addClass('live')\n this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el)\n }\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/dvr_controls/dvr_controls.js\n **/","module.exports = require('./dvr_controls')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/dvr_controls/index.js\n **/","import Events from 'base/events'\nimport CorePlugin from 'base/core_plugin'\nimport {Fullscreen} from 'base/utils'\n\nexport default class EndVideo extends CorePlugin {\n get name() { return 'end_video' }\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n var container = this.core.getCurrentContainer()\n if (container) {\n this.listenTo(container, Events.CONTAINER_ENDED, this.ended)\n this.listenTo(container, Events.CONTAINER_STOP, this.ended)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n ended() {\n if (Fullscreen.isFullscreen()) {\n this.core.toggleFullscreen()\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/end_video.js\n **/","import CorePlugin from 'base/core_plugin'\nimport Events from 'base/events'\nimport $ from 'clappr-zepto'\n\nexport default class Favicon extends CorePlugin {\n get name() { return 'favicon' }\n\n constructor(core) {\n super(core)\n this.oldIcon = $('link[rel=\"shortcut icon\"]')\n this.configure()\n }\n\n configure() {\n if (!this.core.options.changeFavicon) {\n this.disable()\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n } else {\n this.stopListening(this.core, Events.CORE_OPTIONS_CHANGE)\n this.enable()\n }\n }\n\n bindEvents() {\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n if (this.core.mediaControl.container) {\n this.containerChanged()\n }\n }\n\n containerChanged() {\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_PLAY, this.setPlayIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_PAUSE, this.setPauseIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_STOP, this.resetIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_ENDED, this.resetIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_ERROR, this.resetIcon)\n }\n\n disable() {\n super.disable()\n this.resetIcon()\n }\n\n createIcon(charCode) {\n var canvas = $(' ')\n canvas[0].width = 32\n canvas[0].height = 32\n var ctx = canvas[0].getContext('2d')\n ctx.fillStyle = '#000'\n ctx.font = '25px Player'\n ctx.fillText(String.fromCharCode(charCode), 5, 26)\n var icon = $(' ')\n icon.attr('href', canvas[0].toDataURL('image/png'))\n return icon\n }\n\n setPlayIcon() {\n if (!this.playIcon) {\n this.playIcon = this.createIcon(0xe001)\n }\n this.changeIcon(this.playIcon)\n }\n\n setPauseIcon() {\n if (!this.pauseIcon) {\n this.pauseIcon = this.createIcon(0xe002)\n }\n this.changeIcon(this.pauseIcon)\n }\n\n resetIcon() {\n if (this.currentIcon) {\n this.currentIcon.remove()\n }\n $('head').append(this.oldIcon)\n }\n\n changeIcon(icon) {\n if (icon) {\n this.oldIcon.remove()\n if (this.currentIcon) {\n this.currentIcon.remove()\n }\n this.currentIcon = icon\n $('head').append(icon)\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/favicon/favicon.js\n **/","module.exports = require('./favicon.js')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/favicon/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin';\nimport Events from 'base/events'\n\nexport default class GoogleAnalytics extends ContainerPlugin {\n get name() { return 'google_analytics' }\n constructor(container) {\n super(container)\n if (this.container.options.gaAccount) {\n this.account = this.container.options.gaAccount\n this.trackerName = (this.container.options.gaTrackerName) ? this.container.options.gaTrackerName + \".\" : 'Clappr.'\n this.domainName = this.container.options.gaDomainName\n this.currentHDState = undefined\n this.embedScript()\n }\n }\n\n embedScript() {\n if (!window._gat) {\n var script = document.createElement('script')\n script.setAttribute(\"type\", \"text/javascript\")\n script.setAttribute(\"async\", \"async\")\n script.setAttribute(\"src\", \"//www.google-analytics.com/ga.js\")\n script.onload = () => this.addEventListeners()\n document.body.appendChild(script)\n } else {\n this.addEventListeners()\n }\n }\n\n addEventListeners() {\n if (this.container) {\n this.listenTo(this.container, Events.CONTAINER_READY, this.onReady)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, (event) => this.onVolumeChanged(event))\n this.listenTo(this.container, Events.CONTAINER_SEEK, (event) => this.onSeek(event))\n this.listenTo(this.container, Events.CONTAINER_FULL_SCREEN, this.onFullscreen)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.onHD)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR)\n }\n _gaq.push([this.trackerName + '_setAccount', this.account]);\n if (!!this.domainName)\n _gaq.push([this.trackerName + '_setDomainName', this.domainName]);\n }\n \n onReady(){\n this.push([\"Video\", \"Playback\", this.container.playback.name])\n }\n\n onPlay() {\n this.push([\"Video\", \"Play\", this.container.playback.src])\n }\n\n onStop() {\n this.push([\"Video\", \"Stop\", this.container.playback.src])\n }\n\n onEnded() {\n this.push([\"Video\", \"Ended\", this.container.playback.src])\n }\n\n onBuffering() {\n this.push([\"Video\", \"Buffering\", this.container.playback.src])\n }\n\n onBufferFull() {\n this.push([\"Video\", \"Bufferfull\", this.container.playback.src])\n }\n\n onError() {\n this.push([\"Video\", \"Error\", this.container.playback.src])\n }\n\n onHD(isHD) {\n var status = isHD ? \"ON\": \"OFF\"\n if (status !== this.currentHDState) {\n this.currentHDState = status\n this.push([\"Video\", \"HD - \" + status, this.container.playback.src])\n }\n }\n\n onPlaybackChanged(playbackState) {\n if (playbackState.type !== null) {\n this.push([\"Video\", \"Playback Type - \" + playbackState.type, this.container.playback.src])\n }\n }\n\n onDVR(dvrInUse) {\n var status = dvrInUse? \"ON\": \"OFF\"\n this.push([\"Interaction\", \"DVR - \" + status, this.container.playback.src])\n }\n\n onPause() {\n this.push([\"Video\", \"Pause\", this.container.playback.src])\n }\n\n onSeek() {\n this.push([\"Video\", \"Seek\", this.container.playback.src])\n }\n\n onVolumeChanged() {\n this.push([\"Interaction\", \"Volume\", this.container.playback.src])\n }\n\n onFullscreen() {\n this.push([\"Interaction\", \"Fullscreen\", this.container.playback.src])\n }\n\n\n push(array) {\n var res = [this.trackerName + \"_trackEvent\"].concat(array)\n _gaq.push(res)\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/google_analytics/google_analytics.js\n **/","module.exports = require('./google_analytics');\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/google_analytics/index.js\n **/","\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Kibo from 'base/kibo'\n\nvar BOLD = 'font-weight: bold; font-size: 13px;'\nvar INFO = 'color: #006600;' + BOLD\nvar DEBUG = 'color: #0000ff;' + BOLD\nvar WARN = 'color: #ff8000;' + BOLD\nvar ERROR = 'color: #ff0000;' + BOLD\n\nvar LEVEL_DEBUG = 0\nvar LEVEL_INFO = 1\nvar LEVEL_WARN = 2\nvar LEVEL_ERROR = 3\nvar LEVEL_DISABLED = 4\n\nvar COLORS = [DEBUG, INFO, WARN, ERROR, ERROR]\nvar DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled']\n\nexport default class Log {\n constructor(level = LEVEL_INFO, offLevel = LEVEL_DISABLED) {\n this.kibo = new Kibo()\n this.kibo.down(['ctrl shift d'], () => this.onOff())\n this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress']\n this.level = level\n this.offLevel = offLevel\n }\n\n debug(klass) {this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1))}\n info(klass) {this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1))}\n warn(klass) {this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1))}\n error(klass) {this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1))}\n\n onOff() {\n if (this.level === this.offLevel) {\n this.level = this.previousLevel\n } else {\n this.previousLevel = this.level\n this.level = this.offLevel\n }\n // handle instances where console.log is unavailable\n if (window.console && window.console.log) {\n console.log(\"%c[Clappr.Log] set log level to \" + DESCRIPTIONS[this.level], WARN)\n }\n }\n\n level(newLevel) {\n this.level = newLevel\n }\n\n log(klass, level, message) {\n if (this.BLACKLIST.indexOf(message[0]) >= 0) return\n if (level < this.level) return\n\n if (!message) {\n message = klass\n klass = null\n }\n var klassDescription = \"\"\n var color = COLORS[level]\n if (klass) {\n klassDescription = \"[\" + klass + \"]\"\n }\n if (window.console && window.console.log) {\n console.log.apply(console, [\"%c[\" + DESCRIPTIONS[level] + \"]\" + klassDescription, color].concat(message))\n }\n }\n}\n\nLog.LEVEL_DEBUG = LEVEL_DEBUG\nLog.LEVEL_INFO = LEVEL_INFO\nLog.LEVEL_WARN = LEVEL_WARN\nLog.LEVEL_ERROR = LEVEL_ERROR\n\nLog.getInstance = function() {\n if (this._instance === undefined) {\n this._instance = new this()\n this._instance.previousLevel = this._instance.level\n this._instance.level = this._instance.offLevel\n }\n return this._instance\n}\n\nLog.setLevel = function(level) { this.getInstance().level = level }\n\nLog.debug = function(klass) { this.getInstance().debug.apply(this.getInstance(), arguments) }\nLog.info = function(klass) { this.getInstance().info.apply(this.getInstance(), arguments) }\nLog.warn = function(klass) { this.getInstance().warn.apply(this.getInstance(), arguments) }\nLog.error = function(klass) { this.getInstance().error.apply(this.getInstance(), arguments) }\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/log/log.js\n **/","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Mediator from 'components/mediator'\nimport posterStyle from './public/poster.scss'\nimport posterHTML from './public/poster.html'\n\nimport $ from 'clappr-zepto'\n\nexport default class PosterPlugin extends UIContainerPlugin {\n get name() { return 'poster' }\n get template() { return template(posterHTML) }\n get shouldRender() { return this.container.playback.name !== 'html_img'}\n\n get attributes() {\n return {\n 'class': 'player-poster',\n 'data-poster': ''\n }\n }\n\n get events() {\n return {\n 'click': 'clicked'\n }\n }\n\n constructor(container) {\n super(container)\n this.hasStartedPlaying = false\n this.playRequested = false\n this.render()\n process.nextTick(() => this.update())\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n if (this.container.buffering) {\n process.nextTick(() => this.onBuffering())\n }\n else {\n this.listenToOnce(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n }\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.render)\n Mediator.on(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.updateSize, this)\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.updateSize, this)\n }\n\n onPlay() {\n this.hasStartedPlaying = true\n this.update()\n }\n\n onStop() {\n this.hasStartedPlaying = false\n this.playRequested = false\n this.update()\n }\n\n onBuffering() {\n // on some mobile devices (e.g. iOS), autoplay doesn't work\n // this makes sure the play button only disappears when autoplay\n // is enabled if autoplay is actually working\n if (this.options.autoPlay) {\n this.playRequested = true\n this.update()\n }\n }\n\n showPlayButton(show) {\n if (!this.options.chromeless) {\n if (show) {\n this.$playButton.show()\n this.$el.addClass(\"clickable\")\n this.updateSize()\n }\n else {\n this.$playButton.hide()\n this.$el.removeClass(\"clickable\")\n }\n }\n }\n\n clicked() {\n if (!this.options.chromeless) {\n this.playRequested = true\n this.update()\n this.container.play()\n }\n return false\n }\n\n updateSize() {\n if (!this.shouldRender) {\n return\n }\n var height = this.$el.height()\n this.$el.css({ fontSize: height })\n if (!this.playRequested && !this.hasStartedPlaying) {\n this.$playWrapper.css({ marginTop: -(this.$playWrapper.height() / 2) })\n }\n }\n\n shouldHideOnPlay() {\n // Audio broadcasts should keep the poster up; video should hide poster while playing.\n return !((this.container.playback.name == 'html5_audio') || this.options.audioOnly);\n }\n\n update() {\n if (!this.shouldRender) {\n return\n }\n if (!this.hasStartedPlaying) {\n this.container.disableMediaControl()\n this.$el.show()\n this.showPlayButton(!this.playRequested)\n }\n else {\n this.container.enableMediaControl()\n if (this.shouldHideOnPlay()) {\n this.$el.hide()\n }\n }\n }\n\n render() {\n if (!this.shouldRender) {\n return\n }\n var style = Styler.getStyleFor(posterStyle, {baseUrl: this.options.baseUrl})\n this.$el.html(this.template())\n this.$el.append(style)\n if (this.options.poster) {\n var imgEl = $('
')\n imgEl.css({'background-image': 'url(' + this.options.poster + ')'})\n this.$el.prepend(imgEl)\n }\n this.container.$el.append(this.el)\n this.$playButton = this.$el.find('.poster-icon')\n this.$playWrapper = this.$el.find('.play-wrapper')\n if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n var buttonsColor = this.options.mediacontrol.buttons;\n this.$playButton.css('color', buttonsColor);\n }\n this.update()\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/poster/poster.js\n **/","module.exports = require('./seek_time');\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/seek_time/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {formatTime} from 'base/utils'\n\nimport UICorePlugin from 'base/ui_core_plugin'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport seekTimeStyle from './public/seek_time.scss'\nimport seekTimeHTML from './public/seek_time.html'\n\nexport default class SeekTime extends UICorePlugin {\n get name() { return 'seek_time' }\n get template() {\n return template(seekTimeHTML)\n }\n get attributes() {\n return {\n 'class': 'seek-time',\n 'data-seek-time': ''\n }\n }\n get mediaControl() { return this.core.mediaControl }\n get mediaControlContainer() { return this.mediaControl.container }\n get isLiveStreamWithDvr() { return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === Playback.LIVE && this.mediaControlContainer.isDvrEnabled() }\n get durationShown() { return this.isLiveStreamWithDvr }\n get useActualLiveTime() { return this.actualLiveTime && this.isLiveStreamWithDvr }\n constructor(core) {\n super(core)\n this.hoveringOverSeekBar = false\n this.hoverPosition = null\n this.duration = null\n this.actualLiveTime = !!this.mediaControl.options.actualLiveTime\n if (this.actualLiveTime) {\n if (!!this.mediaControl.options.actualLiveServerTime) {\n this.actualLiveServerTimeDiff = new Date().getTime() - new Date(this.mediaControl.options.actualLiveServerTime).getTime()\n } else {\n this.actualLiveServerTimeDiff = 0\n }\n }\n }\n\n bindEvents() {\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_RENDERED, this.render)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged)\n if (this.mediaControlContainer) {\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.update)\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_TIMEUPDATE, this.updateDuration)\n }\n }\n\n onContainerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n updateDuration(timeProgress) {\n this.duration = timeProgress.total\n this.update()\n }\n\n showTime(event) {\n this.hoveringOverSeekBar = true\n this.calculateHoverPosition(event)\n this.update()\n }\n\n hideTime() {\n this.hoveringOverSeekBar = false\n this.update()\n }\n\n calculateHoverPosition(event) {\n var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left\n // proportion into the seek bar that the mouse is hovered over 0-1\n this.hoverPosition = Math.min(1, Math.max(offset/this.mediaControl.$seekBarContainer.width(), 0))\n }\n\n getSeekTime() {\n var seekTime = null\n if (this.useActualLiveTime) {\n var d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff), e = new Date(d)\n var secondsSinceMidnight = (e - d.setHours(0,0,0,0)) / 1000\n seekTime = (secondsSinceMidnight - this.duration) + (this.hoverPosition * this.duration)\n if (seekTime < 0) {\n seekTime += 86400\n }\n } else {\n seekTime = this.hoverPosition * this.duration\n }\n return {seekTime: seekTime, secondsSinceMidnight: secondsSinceMidnight}\n }\n\n update() {\n if (!this.rendered) {\n // update() is always called after a render\n return\n }\n if (!this.shouldBeVisible()) {\n this.$el.hide()\n this.$el.css('left', \"-100%\")\n }\n else {\n var seekTime = this.getSeekTime()\n var currentSeekTime = formatTime(seekTime.seekTime, this.useActualLiveTime)\n // only update dom if necessary, ie time actually changed\n if (currentSeekTime !== this.displayedSeekTime) {\n this.$seekTimeEl.text(currentSeekTime)\n this.displayedSeekTime = currentSeekTime\n }\n\n if (this.durationShown) {\n this.$durationEl.show()\n var currentDuration = formatTime(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime)\n if (currentDuration !== this.displayedDuration) {\n this.$durationEl.text(currentDuration)\n this.displayedDuration = currentDuration\n }\n }\n else {\n this.$durationEl.hide()\n }\n\n // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n this.$el.show()\n var containerWidth = this.mediaControl.$seekBarContainer.width()\n var elWidth = this.$el.width()\n var elLeftPos = this.hoverPosition * containerWidth\n elLeftPos -= elWidth / 2\n elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth))\n this.$el.css('left', elLeftPos)\n }\n }\n\n shouldBeVisible() {\n return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null\n }\n\n render() {\n this.rendered = true\n this.displayedDuration = null\n this.displayedSeekTime = null\n var style = Styler.getStyleFor(seekTimeStyle)\n this.$el.html(this.template())\n this.$el.append(style)\n this.$el.hide()\n this.mediaControl.$el.append(this.el)\n this.$seekTimeEl = this.$el.find('[data-seek-time]')\n this.$durationEl = this.$el.find('[data-duration]')\n this.$durationEl.hide()\n this.update()\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/seek_time/seek_time.js\n **/","import CorePlugin from 'base/core_plugin'\n\nimport Events from 'base/events'\n\nexport default class SourcesPlugin extends CorePlugin {\n get name() { return 'sources' }\n\n bindEvents() {\n this.listenToOnce(this.core, Events.CORE_CONTAINERS_CREATED, this.onContainersCreated)\n }\n\n onContainersCreated() {\n var firstValidSource = this.core.containers.find((container) => container.playback.name !== 'no_op') || this.core.containers[0]\n if (firstValidSource) {\n this.core.containers.forEach((container) => {\n if (container !== firstValidSource) {\n container.destroy()\n }\n })\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/sources.js\n **/","module.exports = require('./spinner_three_bounce');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/spinner_three_bounce/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport spinnerHTML from './public/spinner.html'\nimport spinnerStyle from './public/spinner.scss'\n\nexport default class SpinnerThreeBouncePlugin extends UIContainerPlugin {\n get name() { return 'spinner' }\n get attributes() {\n return {\n 'data-spinner':'',\n 'class': 'spinner-three-bounce'\n }\n }\n\n constructor(container) {\n super(container)\n this.template = template(spinnerHTML);\n this.showTimeout = null\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n if (this.container.buffering) {\n process.nextTick(() => this.onBuffering())\n }\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onStop)\n this.render()\n }\n\n onBuffering() {\n this.show()\n }\n\n onBufferFull() {\n this.hide()\n }\n\n onStop() {\n this.hide()\n }\n\n show() {\n if (this.showTimeout === null) {\n this.showTimeout = setTimeout(() => this.$el.show(), 300)\n }\n }\n\n hide() {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout)\n this.showTimeout = null\n }\n this.$el.hide()\n }\n\n render() {\n this.$el.html(this.template())\n var style = Styler.getStyleFor(spinnerStyle);\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n this.$el.hide()\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/spinner_three_bounce/spinner_three_bounce.js\n **/","module.exports = require('./stats');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/stats/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin'\nimport Events from 'base/events'\nimport $ from \"clappr-zepto\"\n\nexport default class StatsPlugin extends ContainerPlugin {\n get name() { return 'stats' }\n\n constructor(container) {\n super(container)\n this.setInitialAttrs()\n this.reportInterval = this.options.reportInterval || 5000\n this.state = \"IDLE\"\n }\n\n bindEvents() {\n this.listenTo(this.container.playback, Events.PLAYBACK_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_DESTROYED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STATS_ADD, this.onStatsAdd)\n this.listenTo(this.container, Events.CONTAINER_BITRATE, this.onStatsAdd)\n this.listenTo(this.container.playback, Events.PLAYBACK_STATS_ADD, this.onStatsAdd)\n }\n\n setInitialAttrs() {\n this.firstPlay = true\n this.startupTime = 0\n this.rebufferingTime = 0\n this.watchingTime = 0\n this.rebuffers = 0\n this.externalMetrics = {}\n }\n\n onPlay() {\n this.state = \"PLAYING\"\n this.watchingTimeInit = Date.now()\n if (!this.intervalId) {\n this.intervalId = setInterval(this.report.bind(this), this.reportInterval)\n }\n }\n\n onStop() {\n clearInterval(this.intervalId)\n this.intervalId = undefined\n this.state = \"STOPPED\"\n }\n\n onBuffering() {\n if (this.firstPlay) {\n this.startupTimeInit = Date.now()\n } else {\n this.rebufferingTimeInit = Date.now()\n }\n this.state = \"BUFFERING\"\n this.rebuffers++\n }\n\n onBufferFull() {\n if (this.firstPlay && !!this.startupTimeInit) {\n this.firstPlay = false\n this.startupTime = Date.now() - this.startupTimeInit\n this.watchingTimeInit = Date.now()\n } else if (!!this.rebufferingTimeInit) {\n this.rebufferingTime += this.getRebufferingTime()\n }\n this.rebufferingTimeInit = undefined\n this.state = \"PLAYING\"\n }\n\n getRebufferingTime() {\n return Date.now() - this.rebufferingTimeInit\n }\n\n getWatchingTime() {\n var totalTime = (Date.now() - this.watchingTimeInit)\n return totalTime - this.rebufferingTime\n }\n\n isRebuffering() {\n return !!this.rebufferingTimeInit\n }\n\n onStatsAdd(metric) {\n $.extend(this.externalMetrics, metric)\n }\n\n getStats() {\n var metrics = {\n startupTime: this.startupTime,\n rebuffers: this.rebuffers,\n rebufferingTime: this.isRebuffering()? this.rebufferingTime + this.getRebufferingTime(): this.rebufferingTime,\n watchingTime: this.isRebuffering()? this.getWatchingTime() - this.getRebufferingTime(): this.getWatchingTime()\n }\n $.extend(metrics, this.externalMetrics)\n return metrics\n }\n\n report() {\n this.container.statsReport(this.getStats())\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/stats/stats.js\n **/","module.exports = require('./watermark');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/watermark/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport watermarkStyle from './public/watermark.scss'\nimport watermarkHTML from './public/watermark.html'\n\nexport default class WaterMarkPlugin extends UIContainerPlugin {\n get name() { return 'watermark' }\n\n get template() { return template(watermarkHTML) }\n\n constructor(container) {\n super(container)\n this.configure()\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.configure)\n }\n\n configure() {\n this.position = this.options.position || \"bottom-right\"\n if (this.options.watermark) {\n this.imageUrl = this.options.watermark\n this.imageLink = this.options.watermarkLink\n this.render()\n } else {\n this.$el.remove()\n }\n }\n\n onPlay() {\n if (!this.hidden)\n this.$el.show()\n }\n\n onStop() {\n this.$el.hide()\n }\n\n render() {\n this.$el.hide()\n var templateOptions = {position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink}\n this.$el.html(this.template(templateOptions))\n var style = Styler.getStyleFor(watermarkStyle)\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/watermark/watermark.js\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}[data-player]:not(.nocursor) .container[data-container].pointer-enabled{cursor:pointer}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/container/public/style.scss\n ** module id = 132\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:lucida grande,tahoma,verdana,arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/core/public/style.scss\n ** module id = 133\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Player;src:url(\" + require(\"./Player-Regular.eot\") + \");src:url(\" + require(\"./Player-Regular.eot\") + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + require(\"./Player-Regular.ttf\") + \") format(\\\"truetype\\\"),url(\" + require(\"./Player-Regular.svg\") + \"#player) format(\\\"svg\\\")}.media-control-notransition{-webkit-transition:none !important false;transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + require(\"./closed-hand.cur\") + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + require(\"./closed-hand.cur\") + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:-owg-linear-gradient(transparent,rgba(0,0,0,.9));background:-webkit-linear-gradient(transparent,rgba(0,0,0,.9));-pie-background:-pie-linear-gradient(transparent,rgba(0,0,0,.9));background:linear-gradient(transparent,rgba(0,0,0,.9));-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{font-family:Player;font-weight:400;font-style:normal;font-size:26px;line-height:32px;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;vertical-align:middle;pointer-events:auto;-webkit-transition:bottom .4s ease-out;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]:before{content:\\\"\\\\E006\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen].shrink:before{content:\\\"\\\\E007\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{cursor:default;float:right;background-color:transparent;border:0;height:100%;opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]:before{content:\\\"\\\\E008\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].playing:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].paused:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].playing:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].stopped:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin-left:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin:0 3px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:16px;height:32px;margin-right:6px;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:before{content:\\\"\\\\E004\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted{opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:hover{opacity:.7}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:before{content:\\\"\\\\E005\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;top:6px;width:42px;height:18px;padding:3px 0;overflow:hidden;-webkit-transition:width .2s ease-out;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;-webkit-transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1){padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{height:12px;top:9px;padding:0;width:0}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/media_control/public/media-control.scss\n ** module id = 134\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".clappr-flash-playback[data-flash-playback]{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/base_flash_playback/public/flash.scss\n ** module id = 135\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html5_video/public/style.scss\n ** module id = 136\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html_img/public/style.scss\n ** module id = 137\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-no-op]{z-index:1000;position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;top:40%;left:0;right:0;color:#fff}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/no_op/public/style.scss\n ** module id = 138\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + require(\"./Roboto.ttf\") + \") format(\\\"truetype\\\")}.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;-webkit-transition:all .1s ease;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/dvr_controls.scss\n ** module id = 139\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Player;src:url(\" + require(\"../../../components/media_control/public/Player-Regular.eot\") + \");src:url(\" + require(\"../../../components/media_control/public/Player-Regular.eot\") + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + require(\"../../../components/media_control/public/Player-Regular.ttf\") + \") format(\\\"truetype\\\"),url(\" + require(\"../../../components/media_control/public/Player-Regular.svg\") + \"#player) format(\\\"svg\\\")}.player-poster[data-poster]{position:absolute;height:100%;width:100%;z-index:998;top:0;left:0}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster] .poster-background[data-poster]{width:100%;height:100%;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster] .play-wrapper[data-poster]{position:absolute;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]{font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity text-shadow .1s;-webkit-transition-delay:ease;transition:opacity text-shadow .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster].play[data-poster]:before{content:\\\"\\\\E001\\\"}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]:hover{opacity:1;text-shadow:hsla(0,0%,100%,.8) 0 0 15px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/poster/public/poster.scss\n ** module id = 140\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;width:auto;height:20px;line-height:20px;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] span[data-seek-time]{position:relative;color:#fff;font-size:10px;padding-left:7px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]{position:relative;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/seek_time/public/seek_time.scss\n ** module id = 141\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;top:47%;left:0;right:0;margin-left:auto;margin-right:auto}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/spinner_three_bounce/public/spinner.scss\n ** module id = 142\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/watermark/public/watermark.scss\n ** module id = 143\n ** module chunks = 0\n **/","module.exports = \"
\\n\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/media_control/public/media-control.html\n ** module id = 144\n ** module chunks = 0\n **/","module.exports = \" ?inline=1\\\">\\n \\n \\n \\n \\n \\n \\\">\\n \\n &callback=<%= callbackName %>\\\" />\\n\\\"\\n type=\\\"application/x-shockwave-flash\\\"\\n disabled=\\\"disabled\\\"\\n tabindex=\\\"-1\\\"\\n enablecontextmenu=\\\"false\\\"\\n allowScriptAccess=\\\"always\\\"\\n quality=\\\"autohigh\\\"\\n pluginspage=\\\"http://www.macromedia.com/go/getflashplayer\\\"\\n wmode=\\\"<%= wmode %>\\\"\\n swliveconnect=\\\"true\\\"\\n allowfullscreen=\\\"false\\\"\\n bgcolor=\\\"#000000\\\"\\n FlashVars=\\\"playbackId=<%= playbackId %>&callback=<%= callbackName %>\\\"\\n src=\\\"<%= swfPath %>\\\"\\n width=\\\"100%\\\"\\n height=\\\"100%\\\">\\n \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/base_flash_playback/public/flash.html\n ** module id = 145\n ** module chunks = 0\n **/","module.exports = \"\\\" type=\\\"<%=type%>\\\">\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html5_video/public/index.html\n ** module id = 146\n ** module chunks = 0\n **/","module.exports = \" \\n<%=message%>
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/no_op/public/error.html\n ** module id = 147\n ** module chunks = 0\n **/","module.exports = \"
LIVE
\\nBACK TO LIVE \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/index.html\n ** module id = 148\n ** module chunks = 0\n **/","module.exports = \"\\n \\n
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/poster/public/poster.html\n ** module id = 149\n ** module chunks = 0\n **/","module.exports = \" \\n \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/seek_time/public/seek_time.html\n ** module id = 150\n ** module chunks = 0\n **/","module.exports = \"
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/spinner_three_bounce/public/spinner.html\n ** module id = 151\n ** module chunks = 0\n **/","module.exports = \"\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/watermark/public/watermark.html\n ** module id = 152\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"4b76590b32dab62bc95c1b7951efae78.swf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/flash/public/Player.swf\n ** module id = 153\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"836868f5c501cad9daabdcc31886bd7c.swf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/flashls/public/HLSPlayer.swf\n ** module id = 154\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"38861cba61c66739c1452c3a71e39852.ttf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/Roboto.ttf\n ** module id = 155\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///clappr.min.js","webpack:///webpack/bootstrap e82c24f54f6999a07eca","webpack:///./src/main.js","webpack:///./src/base/events.js","webpack:///./src/base/utils.js","webpack:///./~/clappr-zepto/zepto.min.js","webpack:///./~/hls.js/src/events.js","webpack:///./~/hls.js/src/utils/logger.js","webpack:///./src/base/playback.js","webpack:///./src/base/styler.js","webpack:///./src/base/template.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/hls.js/src/errors.js","webpack:///./src/components/browser.js","webpack:///./src/base/base_object.js","webpack:///./~/hls.js/src/event-handler.js","webpack:///./~/lodash.find/index.js","webpack:///./src/base/ui_object.js","webpack:///./src/components/mediator.js","webpack:///./~/lodash.isarray/index.js","webpack:///./src/base/container_plugin.js","webpack:///./src/base/core_plugin.js","webpack:///./src/base/ui_container_plugin.js","webpack:///./src/components/player_info.js","webpack:///./src/playbacks/html5_video/index.js","webpack:///./src/components/media_control/public/Player-Regular.eot","webpack:///./~/lodash.keys/index.js","webpack:///./src/base/ui_core_plugin.js","webpack:///./src/playbacks/base_flash_playback/index.js","webpack:///./src/plugins/log/index.js","webpack:///./~/events/events.js","webpack:///./~/hls.js/src/demux/adts.js","webpack:///./~/hls.js/src/demux/demuxer-inline.js","webpack:///./~/hls.js/src/remux/mp4-remuxer.js","webpack:///./~/lodash._basecallback/index.js","webpack:///./~/lodash._getnative/index.js","webpack:///./~/process/browser.js","webpack:///./src/base/kibo.js","webpack:///./src/components/container/index.js","webpack:///./src/components/core/index.js","webpack:///./src/components/loader/index.js","webpack:///./src/components/media_control/index.js","webpack:///./src/playbacks/flash/index.js","webpack:///./src/playbacks/flashls/index.js","webpack:///./src/playbacks/hls/index.js","webpack:///./src/playbacks/html5_audio/index.js","webpack:///./src/playbacks/html_img/index.js","webpack:///./src/playbacks/no_op/index.js","webpack:///./src/plugins/poster/index.js","webpack:///./src/components/media_control/public/Player-Regular.svg","webpack:///./src/components/media_control/public/Player-Regular.ttf","webpack:///./src/components/media_control/public/closed-hand.cur","webpack:///./~/hls.js/src/controller/abr-controller.js","webpack:///./~/hls.js/src/controller/level-controller.js","webpack:///./~/hls.js/src/controller/mse-media-controller.js","webpack:///./~/hls.js/src/controller/timeline-controller.js","webpack:///./~/hls.js/src/crypt/aes.js","webpack:///./~/hls.js/src/crypt/aes128-decrypter.js","webpack:///./~/hls.js/src/crypt/decrypter.js","webpack:///./~/hls.js/src/demux/aacdemuxer.js","webpack:///./~/hls.js/src/demux/demuxer-worker.js","webpack:///./~/hls.js/src/demux/demuxer.js","webpack:///./~/hls.js/src/demux/exp-golomb.js","webpack:///./~/hls.js/src/demux/id3.js","webpack:///./~/hls.js/src/demux/tsdemuxer.js","webpack:///./~/hls.js/src/helper/level-helper.js","webpack:///./~/hls.js/src/hls.js","webpack:///./~/hls.js/src/loader/fragment-loader.js","webpack:///./~/hls.js/src/loader/key-loader.js","webpack:///./~/hls.js/src/loader/playlist-loader.js","webpack:///./~/hls.js/src/remux/mp4-generator.js","webpack:///./~/hls.js/src/utils/attr-list.js","webpack:///./~/hls.js/src/utils/binary-search.js","webpack:///./~/hls.js/src/utils/cea-708-interpreter.js","webpack:///./~/hls.js/src/utils/url.js","webpack:///./~/hls.js/src/utils/xhr-loader.js","webpack:///./~/lodash._baseeach/index.js","webpack:///./~/lodash._basefind/index.js","webpack:///./~/lodash._basefindindex/index.js","webpack:///./~/lodash._baseget/index.js","webpack:///./~/lodash._baseindexof/index.js","webpack:///./~/lodash._baseisequal/index.js","webpack:///./~/lodash._baseslice/index.js","webpack:///./~/lodash._baseuniq/index.js","webpack:///./~/lodash._bindcallback/index.js","webpack:///./~/lodash._cacheindexof/index.js","webpack:///./~/lodash._createcache/index.js","webpack:///./~/lodash._isiterateecall/index.js","webpack:///./~/lodash._topath/index.js","webpack:///./~/lodash.before/index.js","webpack:///./~/lodash.isarguments/index.js","webpack:///./~/lodash.isfunction/index.js","webpack:///./~/lodash.istypedarray/index.js","webpack:///./~/lodash.once/index.js","webpack:///./~/lodash.pairs/index.js","webpack:///./~/lodash.result/index.js","webpack:///./~/lodash.uniq/index.js","webpack:///./~/webworkify/index.js","webpack:///./src/components/container/container.js","webpack:///./src/components/container_factory/container_factory.js","webpack:///./src/components/container_factory/index.js","webpack:///./src/components/core/core.js","webpack:///./src/components/core_factory/core_factory.js","webpack:///./src/components/core_factory/index.js","webpack:///./src/components/loader/loader.js","webpack:///./src/components/media_control/media_control.js","webpack:///./src/components/player.js","webpack:///./src/playbacks/base_flash_playback/base_flash_playback.js","webpack:///./src/playbacks/flash/flash.js","webpack:///./src/playbacks/flashls/flashls.js","webpack:///./src/playbacks/flashls/flashls_events.js","webpack:///./src/playbacks/hls/hls.js","webpack:///./src/playbacks/html5_audio/html5_audio.js","webpack:///./src/playbacks/html5_video/html5_video.js","webpack:///./src/playbacks/html_img/html_img.js","webpack:///./src/playbacks/no_op/no_op.js","webpack:///./src/plugins/click_to_pause/click_to_pause.js","webpack:///./src/plugins/click_to_pause/index.js","webpack:///./src/plugins/dvr_controls/dvr_controls.js","webpack:///./src/plugins/dvr_controls/index.js","webpack:///./src/plugins/end_video.js","webpack:///./src/plugins/favicon/favicon.js","webpack:///./src/plugins/favicon/index.js","webpack:///./src/plugins/google_analytics/google_analytics.js","webpack:///./src/plugins/google_analytics/index.js","webpack:///./src/plugins/log/log.js","webpack:///./src/plugins/poster/poster.js","webpack:///./src/plugins/seek_time/index.js","webpack:///./src/plugins/seek_time/seek_time.js","webpack:///./src/plugins/sources.js","webpack:///./src/plugins/spinner_three_bounce/index.js","webpack:///./src/plugins/spinner_three_bounce/spinner_three_bounce.js","webpack:///./src/plugins/stats/index.js","webpack:///./src/plugins/stats/stats.js","webpack:///./src/plugins/watermark/index.js","webpack:///./src/plugins/watermark/watermark.js","webpack:///./src/components/container/public/style.scss","webpack:///./src/components/core/public/style.scss","webpack:///./src/components/media_control/public/media-control.scss","webpack:///./src/playbacks/base_flash_playback/public/flash.scss","webpack:///./src/playbacks/html5_video/public/style.scss","webpack:///./src/playbacks/html_img/public/style.scss","webpack:///./src/playbacks/no_op/public/style.scss","webpack:///./src/plugins/dvr_controls/public/dvr_controls.scss","webpack:///./src/plugins/poster/public/poster.scss","webpack:///./src/plugins/seek_time/public/seek_time.scss","webpack:///./src/plugins/spinner_three_bounce/public/spinner.scss","webpack:///./src/plugins/watermark/public/watermark.scss","webpack:///./src/components/media_control/public/media-control.html","webpack:///./src/playbacks/base_flash_playback/public/flash.html","webpack:///./src/playbacks/html5_video/public/index.html","webpack:///./src/playbacks/no_op/public/error.html","webpack:///./src/plugins/dvr_controls/public/index.html","webpack:///./src/plugins/poster/public/poster.html","webpack:///./src/plugins/seek_time/public/seek_time.html","webpack:///./src/plugins/spinner_three_bounce/public/spinner.html","webpack:///./src/plugins/watermark/public/watermark.html","webpack:///./src/playbacks/flash/public/Player.swf","webpack:///./src/playbacks/flashls/public/HLSPlayer.swf","webpack:///./src/plugins/dvr_controls/public/Roboto.ttf"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_componentsPlayer","_componentsPlayer2","_baseUtils","_baseUtils2","_baseEvents","_baseEvents2","_basePlayback","_basePlayback2","_baseContainer_plugin","_baseContainer_plugin2","_baseCore_plugin","_baseCore_plugin2","_baseUi_core_plugin","_baseUi_core_plugin2","_baseUi_container_plugin","_baseUi_container_plugin2","_baseBase_object","_baseBase_object2","_baseUi_object","_baseUi_object2","_componentsBrowser","_componentsBrowser2","_componentsContainer","_componentsContainer2","_componentsCore","_componentsCore2","_componentsLoader","_componentsLoader2","_componentsMediator","_componentsMediator2","_componentsMedia_control","_componentsMedia_control2","_componentsPlayer_info","_componentsPlayer_info2","_playbacksBase_flash_playback","_playbacksBase_flash_playback2","_playbacksFlash","_playbacksFlash2","_playbacksFlashls","_playbacksFlashls2","_playbacksHls","_playbacksHls2","_playbacksHtml5_audio","_playbacksHtml5_audio2","_playbacksHtml5_video","_playbacksHtml5_video2","_playbacksHtml_img","_playbacksHtml_img2","_playbacksNo_op","_playbacksNo_op2","_pluginsPoster","_pluginsPoster2","_pluginsLog","_pluginsLog2","_baseStyler","_baseStyler2","_baseTemplate","_baseTemplate2","_clapprZepto","_clapprZepto2","version","Player","Mediator","Events","Browser","PlayerInfo","MediaControl","ContainerPlugin","UIContainerPlugin","CorePlugin","UICorePlugin","Playback","Container","Core","Loader","BaseObject","UIObject","Utils","BaseFlashPlayback","Flash","FlasHLS","HLS","HTML5Audio","HTML5Video","HTMLImg","NoOp","Poster","Log","Styler","template","$","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_utils","_lodashOnce","_lodashOnce2","slice","Array","eventSplitter","eventsApi","action","name","rest","apply","concat","test","names","split","l","triggerEvents","events","args","ev","a1","a2","a3","callback","ctx","context","_events","push","once","self","off","arguments","_callback","on","retain","j","k","keys","klass","constructor","debug","allEvents","all","exception","error","listeningTo","_listeningTo","remove","_listenId","listenMethods","listenTo","listenToOnce","forEach","method","uniqueId","PLAYER_READY","PLAYER_RESIZE","PLAYER_PLAY","PLAYER_PAUSE","PLAYER_STOP","PLAYER_ENDED","PLAYER_SEEK","PLAYER_ERROR","PLAYER_TIMEUPDATE","PLAYER_VOLUMEUPDATE","PLAYBACK_PROGRESS","PLAYBACK_TIMEUPDATE","PLAYBACK_READY","PLAYBACK_BUFFERING","PLAYBACK_BUFFERFULL","PLAYBACK_SETTINGSUPDATE","PLAYBACK_LOADEDMETADATA","PLAYBACK_HIGHDEFINITIONUPDATE","PLAYBACK_BITRATE","PLAYBACK_LEVELS_AVAILABLE","PLAYBACK_LEVEL_SWITCH_START","PLAYBACK_LEVEL_SWITCH_END","PLAYBACK_PLAYBACKSTATE","PLAYBACK_DVR","PLAYBACK_MEDIACONTROL_DISABLE","PLAYBACK_MEDIACONTROL_ENABLE","PLAYBACK_ENDED","PLAYBACK_PLAY","PLAYBACK_PAUSE","PLAYBACK_STOP","PLAYBACK_ERROR","PLAYBACK_STATS_ADD","PLAYBACK_FRAGMENT_LOADED","PLAYBACK_LEVEL_SWITCH","CORE_OPTIONS_CHANGE","CORE_READY","CONTAINER_PLAYBACKSTATE","CONTAINER_PLAYBACKDVRSTATECHANGED","CONTAINER_BITRATE","CONTAINER_STATS_REPORT","CONTAINER_DESTROYED","CONTAINER_READY","CONTAINER_ERROR","CONTAINER_LOADEDMETADATA","CONTAINER_TIMEUPDATE","CONTAINER_PROGRESS","CONTAINER_PLAY","CONTAINER_STOP","CONTAINER_PAUSE","CONTAINER_ENDED","CONTAINER_CLICK","CONTAINER_DBLCLICK","CONTAINER_CONTEXTMENU","CONTAINER_MOUSE_ENTER","CONTAINER_MOUSE_LEAVE","CONTAINER_SEEK","CONTAINER_VOLUME","CONTAINER_FULLSCREEN","CONTAINER_STATE_BUFFERING","CONTAINER_STATE_BUFFERFULL","CONTAINER_SETTINGSUPDATE","CONTAINER_HIGHDEFINITIONUPDATE","CONTAINER_MEDIACONTROL_SHOW","CONTAINER_MEDIACONTROL_HIDE","CONTAINER_MEDIACONTROL_DISABLE","CONTAINER_MEDIACONTROL_ENABLE","CONTAINER_STATS_ADD","CONTAINER_OPTIONS_CHANGE","MEDIACONTROL_RENDERED","MEDIACONTROL_FULLSCREEN","MEDIACONTROL_SHOW","MEDIACONTROL_HIDE","MEDIACONTROL_MOUSEMOVE_SEEKBAR","MEDIACONTROL_MOUSELEAVE_SEEKBAR","MEDIACONTROL_PLAYING","MEDIACONTROL_NOTPLAYING","MEDIACONTROL_CONTAINERCHANGED","CORE_CONTAINERS_CREATED","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","extend","parent","properties","pluginName","MergedPlugin","_parent","_get","getPrototypeOf","initialize","get","formatTime","time","paddedHours","isFinite","parseInt","seconds","minutes","hours","days","out","trim","seekStringToSeconds","url","parts","match","factor","h","s","el","suffix","prefix","idsCounter","isNumber","parseFloat","currentScriptUrl","scripts","document","getElementsByTagName","src","getBrowserLanguage","window","navigator","language","toLowerCase","_x","_x2","_x3","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getter","Fullscreen","isFullscreen","webkitFullscreenElement","webkitIsFullScreen","mozFullScreen","msFullscreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","querySelector","webkitEnterFullScreen","cancelFullscreen","exitFullscreen","webkitCancelFullScreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","Config","volume","parse","_defaultConfig","e","domain","hasLocalstorage","localStorage","_createKeyspace","_defaultValueFor","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","setTimeout","bind","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","clearTimeout","Zepto","D","t","String","S","L","Z","nodeType","DOCUMENT_NODE","F","R","q","W","n","z","replace","H","RegExp","_","I","f","u","createElement","body","appendChild","getComputedStyle","getPropertyValue","parentNode","removeChild","U","a","children","map","childNodes","X","selector","B","r","A","V","filter","Y","J","removeAttribute","setAttribute","G","className","baseVal","K","parseJSON","Q","N","P","o","column-count","columns","font-weight","line-height","opacity","z-index","zoom","d","g","v","y","w","x","b","tr","tbody","thead","tfoot","td","th","*","E","T","toString","C","O","M","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","isArray","matches","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","matchesSelector","qsa","indexOf","toUpperCase","fragment","$1","innerHTML","each","attr","isZ","init","find","ready","shift","getElementById","getElementsByClassName","querySelectorAll","contains","documentElement","type","isFunction","isWindow","isPlainObject","isEmptyObject","inArray","camelCase","uuid","support","expr","noop","grep","JSON","reduce","sort","splice","toArray","readyState","addEventListener","size","every","not","add","is","item","has","eq","first","last","some","closest","parents","pluck","contents","contentDocument","siblings","empty","show","style","display","nodeName","replaceWith","before","wrap","wrapAll","cloneNode","append","wrapInner","unwrap","clone","hide","css","toggle","prev","next","html","text","textContent","getAttribute","removeAttr","prop","data","val","multiple","selected","offset","offsetParent","top","left","position","getBoundingClientRect","pageXOffset","pageYOffset","width","Math","round","height","removeProperty","cssText","index","hasClass","addClass","join","removeClass","toggleClass","scrollTop","scrollTo","scrollX","scrollLeft","scrollY","detach","nextSibling","firstChild","insertBefore","eval","uniq","deserializeValue","zepto","_zid","ns","sel","del","relatedTarget","proxy","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","isDefaultPrevented","defaultPrevented","returnValue","getPreventDefault","originalEvent","focus","blur","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","event","unshift","unbind","one","stopImmediatePropagation","delegate","undelegate","live","die","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","initEvent","global","active","beforeSend","success","resolveWith","rejectWith","complete","processData","param","traditional","dataType","href","location","ajaxJSONP","ajax","jsonpCallback","abort","promise","head","timeout","ajaxSettings","xhr","XMLHttpRequest","accepts","script","json","xml","crossDomain","cache","Deferred","protocol","host","Date","now","jsonp","setRequestHeader","mimeType","overrideMimeType","contentType","headers","onreadystatechange","status","getResponseHeader","responseText","responseXML","statusText","xhrFields","async","open","username","password","send","post","getJSON","load","encodeURIComponent","Callbacks","memory","stopOnFalse","disable","unique","disabled","lock","locked","fireWith","fire","fired","state","always","done","fail","then","resolve","reject","progress","notify","when","notifyWith","abs","pointerType","MSPOINTER_TYPE_TOUCH","isPrimary","MSGesture","velocityX","velocityY","touches","x2","y2","x1","pageX","y1","pageY","isDoubleTap","addPointer","pointerId","cancelTouch","exec","Number","isNaN","visible","hidden","checked","console","MEDIA_ATTACHING","MEDIA_ATTACHED","MEDIA_DETACHING","MEDIA_DETACHED","MANIFEST_LOADING","MANIFEST_LOADED","MANIFEST_PARSED","LEVEL_LOADING","LEVEL_LOADED","LEVEL_UPDATED","LEVEL_PTS_UPDATED","LEVEL_SWITCH","FRAG_LOADING","FRAG_LOAD_PROGRESS","FRAG_LOAD_EMERGENCY_ABORTED","FRAG_LOADED","FRAG_PARSING_INIT_SEGMENT","FRAG_PARSING_USERDATA","FRAG_PARSING_METADATA","FRAG_PARSING_DATA","FRAG_PARSED","FRAG_BUFFERED","FRAG_CHANGED","FPS_DROP","ERROR","DESTROYING","KEY_LOADING","KEY_LOADED","formatMsg","msg","consolePrintFn","func","_len","_key","exportLoggerFunctions","debugConfig","_len2","functions","_key2","exportedLogger","fakeLogger","trace","log","warn","info","enableLogs","logger","_ui_object","_ui_object2","_UIObject","options","settings","percentage","NO_OP","$el","canPlay","source","VOD","AOD","LIVE","_template","_template2","getStyleFor","baseUrl","evaluate","interpolate","escape","noMatch","escapes","'","\\","\r","\n","\t","
","
","escaper","htmlEntities","&","<",">","\"","entityRe","escapeExpr","string","counter","tmpl","render","matcher","variable","list","result","mediaQuery","alreadyImportedModules","ErrorTypes","NETWORK_ERROR","MEDIA_ERROR","OTHER_ERROR","ErrorDetails","MANIFEST_LOAD_ERROR","MANIFEST_LOAD_TIMEOUT","MANIFEST_PARSING_ERROR","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","FRAG_LOAD_ERROR","FRAG_LOOP_LOADING_ERROR","FRAG_LOAD_TIMEOUT","FRAG_DECRYPT_ERROR","FRAG_PARSING_ERROR","KEY_LOAD_ERROR","KEY_LOAD_TIMEOUT","BUFFER_APPEND_ERROR","BUFFER_APPENDING_ERROR","BUFFER_STALLED_ERROR","setItem","removeItem","hasFlash","fo","ActiveXObject","mimeTypes","enabledPlugin","getBrowserInfo","extra","ua","userAgent","appName","appVersion","browserInfo","isSafari","isChrome","isFirefox","isLegacyIE","isIE","isIE11","isChromecast","isMobile","isiOS","isAndroid","isWindowsPhone","isWin8App","isWiiU","isPS4","_x4","_events2","_Events","EventHandler","hls","onEvent","handledEvents","useGenericHandler","registerListeners","unregisterListeners","isEventHandler","Error","onEventGeneric","eventToFunction","funcName","createFind","eachFunc","fromRight","collection","predicate","thisArg","baseCallback","baseFindIndex","baseFind","baseEach","_lodashResult","_lodashResult2","_base_object","_base_object2","delegateEventSplitter","_BaseObject","cid","_ensureElement","delegateEvents","stopListening","undelegateEvents","element","eventName","setElement","attrs","opts","isObjectLike","getNative","isNative","isLength","MAX_SAFE_INTEGER","isObject","objToString","funcTag","reIsNative","fnToString","reIsHostCtor","arrayTag","objectProto","hasOwnProperty","nativeIsArray","container","enabled","bindEvents","core","playbackPlugins","currentSize","_players","getInstance","playerId","baseProperty","isArrayLike","getLength","isIndex","reIsUint","shimKeys","keysIn","propsLength","allowIndexes","isArguments","Ctor","isProto","skipIndexes","nativeKeys","EventEmitter","_maxListeners","arg","isUndefined","defaultMaxListeners","setMaxListeners","emit","er","handler","len","listeners","addListener","listener","newListener","warned","removeListener","removeAllListeners","ret","listenerCount","evlistener","emitter","_utilsLogger","_errors","ADTS","observer","audioCodec","adtsObjectType","adtsSampleingIndex","adtsExtensionSampleingIndex","adtsChanelConfig","config","adtsSampleingRates","details","fatal","reason","samplerate","channelCount","codec","_demuxAacdemuxer","_demuxAacdemuxer2","_demuxTsdemuxer","_demuxTsdemuxer2","DemuxerInline","remuxer","demuxer","destroy","videoCodec","timeOffset","cc","level","sn","duration","probe","_remuxMp4Generator","_remuxMp4Generator2","MP4Remuxer","ISGenerated","PES2MP4SCALEFACTOR","PES_TIMESCALE","MP4_TIMESCALE","_initPTS","_initDTS","nextAacPts","nextAvcDts","audioTrack","videoTrack","id3Track","textTrack","contiguous","generateIS","samples","remuxVideo","remuxAudio","remuxID3","remuxText","audioSamples","videoSamples","nbAudio","nbVideo","pesTimeScale","audioMoov","initSegment","audioChannelCount","pts","dts","sps","pps","videoMoov","videoWidth","videoHeight","min","track","view","avcSample","mp4Sample","mp4SampleLength","unit","mdat","moof","firstPTS","firstDTS","lastDTS","ptsnorm","dtsnorm","flags","pes2mp4ScaleFactor","Uint8Array","nbNalu","DataView","buffer","setUint32","byteLength","set","types","units","_PTSNormalize","sampleDuration","delta","max","cts","isLeading","isDependedOn","hasRedundancy","degradPrio","dependsOn","isNonSync","lastSampleDuration","sequenceNumber","startPTS","endPTS","startDTS","endDTS","nb","aacSample","samples0","nbSamples","sample","reference","baseToString","argCount","bindCallback","identity","baseMatches","baseMatchesProperty","baseGet","path","pathKey","toObject","baseIsMatch","matchData","customizer","noCustomizer","objValue","srcValue","baseIsEqual","getMatchData","isArr","isCommon","isKey","isStrictComparable","toPath","baseSlice","basePropertyDeep","array","start","end","pairs","reIsPlainProp","reIsDeepProp","rePropName","number","quote","reEscapeChar","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","run","Item","fun","process","nextTick","title","browser","env","argv","versions","binding","cwd","chdir","dir","umask","Kibo","KEY_NAMES_BY_CODE",8,9,13,16,17,18,20,27,32,37,38,39,40,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,112,113,114,115,116,117,118,119,120,121,122,123,"KEY_CODES_BY_NAME","MODIFIERS","registerEvent","attachEvent","unregisterEvent","detachEvent","stringContains","substring","neatString","capitalize","isString","what","arrayIncludes","haystack","needle","extractModifiers","keyCombination","modifiers","extractKey","modifiersAndKey","keyName","keyCode","that","lastKeyCode","lastModifiers","keysDown","any","keysUp","downHandler","upHandler","unloader","upOrDown","registeredKeys","lastModifiersAndKey","registerKeys","newKeys","unregisterKeys","down","up","lastKey","modifier","_eventHandler","_eventHandler2","AbrController","_EventHandler","lastfetchlevel","_autoLevelCapping","_nextAutoLevel","stats","aborted","lastfetchduration","performance","trequest","frag","lastbw","newLevel","adjustedbw","maxAutoLevel","levels","nextLevel","bitrate","LevelController","ontick","tick","_manualLevel","timer","clearInterval","bitrateStart","levels0","bitrateSet","videoCodecFound","audioCodecFound","redundantLevelId","urlId","checkSupportedAudio","MediaSource","isTypeSupported","checkSupportedVideo","_levels","_firstLevel","firstLevel","_level","levelId","recoverable","abrController","nextAutoLevel","setInterval","targetduration","setLevelInternal","_startLevel","_demuxDemuxer","_demuxDemuxer2","_utilsBinarySearch","_utilsBinarySearch2","_helperLevelHelper","_helperLevelHelper2","State","STARTING","IDLE","FRAG_LOADING_WAITING_RETRY","WAITING_LEVEL","PARSING","PARSED","APPENDING","BUFFER_FLUSHING","ENDED","MSEMediaController","audioCodecSwap","ticks","onsbue","onSBUpdateEnd","onsbe","onSBUpdateError","stop","media","startInternal","lastCurrentTime","lastPaused","play","nextLoadPosition","startPosition","fragLoadError","mp4segments","flushRange","bufferRange","stalled","fragCurrent","loader","fragPrevious","sourceBuffer","sb","mediaSource","removeSourceBuffer","err","doTick","pos","levelDetails","startLevel","fragBitrateTest","nextLoadLevel","loadedmetadata","currentTime","startFragmentRequested","maxBufLen","bufferInfo","maxBufferHole","bufferLen","bufferEnd","maxBufferSize","maxBufferLength","maxMaxBufferLength","levelLastLoaded","fragments","fragLen","_frag","liveMaxLatencyDurationCount","seekAfterBuffered","totalduration","liveSyncDurationCount","toFixed","PTSKnown","targetSN","startSN","endSN","foundFrag","search","candidate","audio","updating","video","endOfStream","decryptdata","uri","autoLevel","autoLevelEnabled","expectedLen","fragLoadIdx","loadCounter","maxThreshold","fragLoadingLoopThreshold","loadIdx","paused","requestDelay","loadRate","fragLoadedDelay","bufferStarvationDelay","fragLevelNextLoadedDelay","retryDate","isSeeking","seeking","segment","appendBuffer","appendError","message","code","appendErrorMaxRetry","range","flushBuffer","immediateSwitch","immediateLevelSwitchEnd","_checkBuffer","_checkFragmentChanged","maxHoleDuration","vbuffered","buffered","bufferedInfo","bufferStart","bufferStartNext","buffered2","diff","buf2len","buf2end","nextStart","getBufferRange","rangeCurrent","playbackRate","isBuffered","fragPlaying","startOffset","endOffset","bufStart","bufEnd","flushStart","flushEnd","flushBufferCounter","POSITIVE_INFINITY","newRange","previouslyPaused","pause","fetchdelay","currentRange","nextRange","nextLevelId","fragLastKbps","followingBufferRange","ms","onmso","onMediaSourceOpen","onmse","onMediaSourceEnded","onmsc","onMediaSourceClose","URL","createObjectURL","ended","onvseeking","onvseeked","onvmetadata","onvended","codecs","aac","heaac","audiocodecswitch","startLevelLoaded","autoStartLoad","startLoad","newDetails","newLevelId","curLevel","curDetails","mergeDetails","tparsed","tbuffered","currentLevel","lastAudioCodec","payload","addSourceBuffer","tparse2","drift","updateFragPTS","loadError","fragLoadingMaxRetry","delay","pow","fragLoadingRetryDelay","tfirst","timeRangesToString","isPlaying","jumpThreshold","playheadMoving","nextBufferStart","maxSeekHole","onMediaSeeking","onMediaSeeked","onMediaMetadata","onMediaEnded","nextBufferRange","_utilsCea708Interpreter","_utilsCea708Interpreter2","TimelineController","enableCEA708Captions","cea708Interpreter","attach","lastPts","clear","bytes","AES","_tables","_precompute","tmp","encKey","decKey","sbox","decTable","keyLen","rcon","xInv","x4","x8","tEnc","tDec","encTable","sboxInv","encrypted0","encrypted1","encrypted2","encrypted3","b2","c2","nInnerRounds","kIndex","table","table0","table1","table2","table3","_aes","_aes2","AES128Decrypter","initVector","iv","word","encrypted","init0","init1","init2","init3","wordIx","encrypted32","Int32Array","byteOffset","decipher","decrypted","decrypted32","ntoh","decrypt","doDecrypt","step","localDecrypt","subarray","Uint32Array","_aes128Decrypter","_aes128Decrypter2","Decrypter","browserCrypto","crypto","subtle","webkitSubtle","disableWebCrypto","enableSoftwareAES","decryptBySoftware","decryptByWebCrypto","_this","importKey","importedKey","onWebCryptoError","key8","iv8","getUint32","decrypter","_adts","_adts2","_demuxId3","_demuxId32","AACDemuxer","remuxerClass","_aacTrack","adtsFrameSize","adtsStartOffset","adtsHeaderLen","stamp","id3","timeStamp","audiosamplerate","getAudioConfig","timescale","remux","hasTimeStamp","_demuxDemuxerInline","_demuxDemuxerInline2","_events3","_events4","_remuxMp4Remuxer","_remuxMp4Remuxer2","DemuxerWorker","cmd","objData","objTransferable","postMessage","_demuxDemuxerWorker","_demuxDemuxerWorker2","_cryptDecrypter","_cryptDecrypter2","Demuxer","enableWorker","Worker","work","onwmsg","onWorkerMessage","demuxInitialized","terminate","localthis","decryptedData","pushDecrypted","ExpGolomb","bytesAvailable","bitsAvailable","workingBytes","availableBytes","count","skipBytes","loadWord","bits","valu","readBits","leadingZeroCount","skipLZ","skipBits","clz","readUEG","deltaScale","lastScale","nextScale","readEG","profileIdc","profileCompat","levelIdc","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","sarScale","readUByte","skipUEG","chromaFormatIdc","readBoolean","skipScalingList","picOrderCntType","skipEG","sarRatio","aspectRatioIdc","ID3","_hasTimeStamp","byte1","byte2","byte3","byte4","tagSize","endPos","header","readUTF","_parseID3Frames","_length","_payload","fromCharCode","tagId","tagLen","tagStart","tagFlags","timestamp","pts33Bit","_timeStamp","_expGolomb","_expGolomb2","TSDemuxer","lastCC","_userData","pmtParsed","_pmtId","lastAacPTS","aacOverFlow","_avcTrack","_id3Track","_txtTrack","switchLevel","insertDiscontinuity","avcData","aacData","id3Data","stt","pid","atf","_duration","lastLevel","lastSN","avcId","aacId","id3Id","_parseAVCPES","_parsePES","_parseAACPES","_parseID3PES","_parsePAT","_parsePMT","sectionLength","tableEnd","programInfoLength","stream","pesFlags","pesPrefix","pesLen","pesHdrLen","pesData","pesPts","pesDts","payloadStartOffset","pes","expGolombDecoder","_parseAVCNALu","units2","lastavcSample","lastUnit","debugString","payloadType","payloadSize","countryCode","providerCode","readUShort","userStructure","readUInt","userDataType","firstByte","secondByte","totalCCs","byteArray","readSPS","codecarray","codecstring","overflow","unitType","lastUnitStart","lastUnitType","lastUnits","frameLength","frameDuration","frameIndex","headerLength","newPTS","LevelHelper","oldDetails","PTSFrag","oldfragments","newfragments","ccOffset","oldFrag","newFrag","sliding","fragIdx","updatePTS","fromIdx","toIdx","fragFrom","fragTo","fragToPTS","_loaderPlaylistLoader","_loaderPlaylistLoader2","_loaderFragmentLoader","_loaderFragmentLoader2","_controllerAbrController","_controllerAbrController2","_controllerMseMediaController","_controllerMseMediaController2","_controllerLevelController","_controllerLevelController2","_controllerTimelineController","_controllerTimelineController2","_utilsXhrLoader","_utilsXhrLoader2","_loaderKeyLoader","_loaderKeyLoader2","Hls","defaultConfig","DefaultConfig","playlistLoader","fragmentLoader","levelController","mediaController","timelineController","keyLoader","Infinity","manifestLoadingTimeOut","manifestLoadingMaxRetry","manifestLoadingRetryDelay","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","fragLoadingTimeOut","fLoader","pLoader","detachMedia","swapAudioCodec","attachMedia","loadLevel","immediateLevelSwitch","manualLevel","nextLevelSwitch","autoLevelCapping","FragmentLoader","loadsuccess","loaderror","loadtimeout","loadprogress","response","KeyLoader","decryptkey","decrypturl","_utilsUrl","_utilsUrl2","_utilsAttrList","_utilsAttrList2","PlaylistLoader","id1","id2","retry","retryDelay","buildAbsoluteURL","baseurl","re","resolution","decimalResolution","decimalInteger","NAME","CODECS","avc1toavcoti","avcdata","substr","stringify","regexp","byteRangeEndOffset","byteRangeStartOffset","currentSN","levelkey","programDateTime","params","fragdecryptdata","cloneObj","uint8View","decryptparams","keyAttrs","decryptmethod","enumeratedString","decrypturi","URI","decryptiv","hexadecimalInteger","pop","responseURL","tload","mtime","parseLevelPlaylist","parseMasterPlaylist","MP4","avc1","avcC","btrt","dinf","dref","esds","ftyp","hdlr","mdhd","mdia","mfhd","minf","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","charCodeAt","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","baseMediaDecodeTime","tracks","boxes","avcc","configlen","sampleDependencyTable","arraylen","paddingValue","movie","AttrList","parseAttrList","attrName","intValue","stringValue","res","input","lastIndexOf","BinarySearch","comparisonFunction","minIndex","maxIndex","currentIndex","currentElement","comparisonResult","CEA708Interpreter","VTTCue","TextTrackCue","cue","pauseOnExit","startTime","MAX_VALUE","endTime","_textTrack","cues","removeCue","_createCue","byte","ccbyte1","ccbyte2","ccValid","ccType","_fromCharCode","_clearActiveCues","_text","_flipMemory","_flushCaptions","_has708","addTextTrack","addCue","URLHelper","baseURL","relativeURL","relativeURLQuery","relativeURLHash","relativeURLHashSplit","relativeURLQuerySplit","baseURLHashSplit","baseURLQuerySplit","baseURLDomainSplit","baseURLProtocol","baseURLDomain","baseURLPath","builtURL","buildAbsolutePath","basePath","relativePath","nUpLn","nEnd","sRelPath","sDir","sPath","nStart","XhrLoader","xhrSetup","timeoutHandle","responseType","onSuccess","onError","onTimeout","maxRetry","onProgress","byteRange","loadInternal","XDomainRequest","onloadend","loadend","onprogress","baseForOwn","iteratee","baseFor","createBaseEach","iterable","createBaseFor","keysFunc","retKey","baseIndexOf","fromIndex","indexOfNaN","other","arraySome","isLoose","stackA","stackB","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","argsTag","objectTag","isTypedArray","objIsObj","othIsObj","isSameTag","equalByTag","objIsWrapped","othIsWrapped","equalArrays","equalObjects","arrLength","othLength","arrValue","othValue","tag","boolTag","dateTag","errorTag","numberTag","regexpTag","stringTag","objProps","objLength","othProps","skipCtor","objCtor","othCtor","baseUniq","isLarge","LARGE_ARRAY_SIZE","seen","createCache","cacheIndexOf","outer","computed","seenIndex","accumulator","hash","SetCache","values","nativeCreate","Set","cachePush","isIterateeCall","FUNC_ERROR_TEXT","temp","isArrayLikeObject","propertyIsEnumerable","objectToString","genTag","typedArrayTags","mapTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","defaultValue","sortedUniq","resIndex","isSorted","bundleFn","sources","wkey","cacheKeys","exp","floor","random","wcache","skey","scache","webkitURL","mozURL","msURL","Blob","_publicStyleScss","_publicStyleScss2","_lodashFind","_lodashFind2","playback","isReady","mediaControlDisabled","plugins","data-container","dblclick","doubleTap","contextmenu","buffering","timeUpdated","onBuffering","bufferfull","settingsUpdate","loadedMetadata","highDefinitionUpdate","updateBitrate","playbackStateChanged","playbackDvrStateChanged","disableMediaControl","enableMediaControl","onEnded","playing","stopped","dvrInUse","newBitrate","metrics","getPlaybackType","dvrEnabled","plugin","animate","getDuration","errorObj","metadata","timeProgress","current","progressObj","seek","getPlugin","isHD","isHighDefinitionInUse","ContainerFactory","createContainer","resolvedSource","playbackPlugin","findPlaybackPlugin","defer","addContainerPlugins","containerPlugins","Plugin","addPlugin","_componentsContainer_factory","_componentsContainer_factory2","playerInfo","containers","setupMediaControl","exit","webkitfullscreenchange","data-player","_this2","containerFactory","createContainers","setupContainers","resolveOnContainersReady","setFullscreen","setPlayerSize","previousSize","resize","_this3","checkSizeCallback","resizeObserverInterval","computedSize","clientWidth","clientHeight","_this4","_this5","mediaControl","disableResizeObserver","updateSize","setContainer","enable","removeContainer","appendContainer","renderContainers","getCurrentContainer","appendTo","parentElement","_this6","createMediaControl","focusElement","toggleFullscreen","onMediaControlShow","mediacontrol","external","hideMediaControlDelay","showing","_this7","configure","enableResizeObserver","CoreFactory","player","addCorePlugins","corePlugins","setupExternalInterface","externalFunctions","getExternalInterface","_lodashUniq","_lodashUniq2","_pluginsSpinner_three_bounce","_pluginsSpinner_three_bounce2","_pluginsStats","_pluginsStats2","_pluginsWatermark","_pluginsWatermark2","_pluginsGoogle_analytics","_pluginsGoogle_analytics2","_pluginsClick_to_pause","_pluginsClick_to_pause2","_pluginsDvr_controls","_pluginsDvr_controls2","_pluginsFavicon","_pluginsFavicon2","_pluginsSeek_time","_pluginsSeek_time2","_pluginsSources","_pluginsSources2","_pluginsEnd_video","_pluginsEnd_video2","externalPlugins","validateExternalPluginsType","addExternalPlugins","memo","groupPluginsByType","plugintypes","errorMessage","ReferenceError","_x5","_baseKibo","_baseKibo2","_publicMediaControlScss","_publicMediaControlScss2","_publicMediaControlHtml","_publicMediaControlHtml2","persistConfig","currentPositionValue","currentDurationValue","initialVolume","restore","setVolume","mute","keepVisible","volumeBarClickDown","addEventListeners","right","chromeless","stopDragHandler","stopDrag","updateDragHandler","updateDrag","data-media-control","click [data-play]","click [data-pause]","click [data-playpause]","click [data-stop]","click [data-playstop]","click [data-fullscreen]","click .bar-container[data-seekbar]","click .bar-container[data-volume]","click .drawer-icon[data-volume]","mouseenter .drawer-container[data-volume]","mouseleave .drawer-container[data-volume]","mousedown .segmented-bar-element[data-volume]","mouseleave .media-control-layer","mousemove .segmented-bar-element[data-volume]","mouseup .segmented-bar-element[data-volume]","mousedown .bar-scrubber[data-volume]","mousedown .bar-scrubber[data-seekbar]","mousemove .bar-container[data-seekbar]","mouseleave .bar-container[data-seekbar]","mouseenter .media-control-layer[data-controls]","mouseleave .media-control-layer[data-controls]","intendedVolume","playerResize","changeTogglePlay","onTimeUpdate","updateProgressBar","onVolumeChanged","updateVolumeUI","rendered","$volumeBarContainer","ceil","muted","$volumeIcon","$playPauseToggle","$playStopToggle","seekEnabled","offsetX","$seekBarContainer","$seekBarHover","getVolumeFromUIEvent","volOffset","outsideByLeft","outsideByRight","outsideHorizontally","outsideByTop","outsideByBottom","outsideVertically","mouseupOnVolumeBar","$fullscreenToggle","hideVolumeBar","draggingSeekBar","$seekBarLoaded","$seekBarPosition","$seekBarScrubber","draggingVolumeBar","setSeekPercentage","offsetY","volumeFromUI","persist","setWhenContainerReady","fullscreen","resetUserKeepVisible","isDvrInUse","hideVolumeId","loadedStart","total","loadedEnd","renderSeekBar","currentSeekBarPercentage","newPosition","newDuration","displayedPosition","$position","displayedDuration","$duration","seekPercentage","userKeepVisible","clientX","lastMouseX","clientY","lastMouseY","hideId","isVisible","hideMediaControl","settingsChanged","$layer","$volumeContainer","resetIndicators","displayedSeekBarPercentage","getCurrentTime","unbindKeyEvents","kibo","togglePlayPause","seekRelative","buttonsColor","buttons","seekbarColor","seekbar","stylesheet","createCachedElements","previousSeekPercentage","bindKeyEvents","parseColors","_componentsCore_factory","_componentsCore_factory2","defaultOptions","normalizeSources","registerOptionEventListeners","coreFactory","parentId","setParentId","attachTo","_loader","onReady","containerChanged","onPlay","onPause","onStop","onSeek","onVolumeUpdate","eventsMapping","onResize","userEvents","userEvent","eventType","eventFunction","addContainerEventListeners","_publicFlashHtml","_publicFlashHtml2","_publicFlashScss","_publicFlashScss2","IE_CLASSID","_Playback","attributes","swfPath","playbackId","wmode","callbackName","setupFirefox","data-flash-playback","_publicPlayerSwf","_publicPlayerSwf2","MAX_ATTEMPTS","_BaseFlashPlayback","autoPlay","isReadyState","addListeners","currentState","bufferingState","playerPlay","firstPlay","insertAfter","metadataLoaded","_attempts","bootstrap","getPosition","updateTime","checkState","isIdle","getState","getBytesLoaded","getBytesTotal","checkInitialSeek","seekTime","seekSeconds","playerResume","playerVolume","playerPause","playerStop","playerSeek","bootstrapId","resource","resourceParts","_flashls_events","_flashls_events2","_publicHLSPlayerSwf","_publicHLSPlayerSwf2","AUTO","initHlsParameters","highDefinition","loop","defaultSettings","playbackType","hasEnded","_currentLevel","playerSetCurrentLevel","capLevelToStage","maxLevelCappingMode","minBufferLength","minBufferLengthCapping","maxBackBufferLength","lowBufferLength","mediaTimePeriod","fpsDroppedMonitoringPeriod","fpsDroppedMonitoringThreshold","capLevelonFPSDrop","smoothAutoSwitchonFPSDrop","switchDownOnLevelError","seekMode","keyLoadMaxRetry","keyLoadMaxRetryTimeout","fragmentLoadMaxRetry","fragmentLoadMaxRetryTimeout","fragmentLoadSkipAfterMaxRetry","maxSkippedFragments","flushLiveURLCache","initialLiveManifestSize","manifestLoadMaxRetry","manifestLoadMaxRetryTimeout","manifestRedundantLoadmaxRetry","startFromBitrate","startFromLevel","autoStartMaxDuration","seekFromLevel","useHardwareVideoDecoder","hlsLogEnabled","logDebug","logDebug2","logWarn","logError","hlsMinimumDvrSize","timeMetrics","setPlaybackState","levelChanged","flashPlaybackError","loadmetrics","onFragmentLoaded","manifestLoaded","playerLoad","srcLoaded","setFlashSettings","updatePlaybackType","_shouldPlayOnBootstrap","_bootstrapAttempts","playerSetAutoStartLoad","playerSetCapLevelToStage","playerSetMaxLevelCappingMode","playerSetMinBufferLength","playerSetMinBufferLengthCapping","playerSetMaxBufferLength","playerSetMaxBackBufferLength","playerSetLowBufferLength","playerSetMediaTimePeriod","playerSetFpsDroppedMonitoringPeriod","playerSetFpsDroppedMonitoringThreshold","playerSetCapLevelonFPSDrop","playerSetSmoothAutoSwitchonFPSDrop","playerSetSwitchDownOnLevelError","playerSetSeekMode","playerSetKeyLoadMaxRetry","playerSetKeyLoadMaxRetryTimeout","playerSetFragmentLoadMaxRetry","playerSetFragmentLoadMaxRetryTimeout","playerSetFragmentLoadSkipAfterMaxRetry","playerSetMaxSkippedFragments","playerSetFlushLiveURLCache","playerSetInitialLiveManifestSize","playerSetManifestLoadMaxRetry","playerSetManifestLoadMaxRetryTimeout","playerSetManifestRedundantLoadmaxRetry","playerSetStartFromBitrate","playerSetStartFromLevel","playerSetAutoStartMaxDuration","playerSetSeekFromLevel","playerSetUseHardwareVideoDecoder","playerSetLogInfo","playerSetLogDebug","playerSetLogDebug2","playerSetLogWarn","playerSetLogError","getLevels","bandwidth","normalizeDuration","previousDVRStatus","livePlayback","updateSettings","updateCurrentState","getType","startReportingProgress","stopReportingProgress","reportingProgress","getbufferLength","updateDvr","previousDvrInUse","dvr","levelsLength","label","Clappr","flashlsCallbacks","flashlsEvents","createCallbacks","HLSEvents","instanceId","playmetrics","timemetrics","newState","trackList","trackId","_hlsJs","_hlsJs2","_HTML5VideoPlayback","minDvrSize","playableRegionStartTime","playableRegionDuration","setupHls","hlsjsConfig","loadSource","evt","updateDuration","onLevelSwitch","srcUrl","seekTo","isSeekEnabled","fillLevels","onDurationChange","isHls","isSupported","_HTML5Video","resourceUrl","mimetypes","wav","mp3","oga","_canPlay","_publicIndexHtml","_publicIndexHtml2","MIMETYPES","mp4","ogg","3gpp","webm","mkv","m3u8","loadStarted","playheadMovingTimer","setupSrc","poster","autoplay","setupSafari","preload","data-html5-video","canplay","canplaythrough","durationchange","loadeddata","seeked","timeupdate","waiting","handleBufferingEvents","autoSeekFromUrl","stopPlayheadMovingChecks","playheadMovingTimeOnCheck","determineIfPlayheadMoving","startPlayheadMovingChecks","playheadShouldBeMoving","HAVE_FUTURE_DATA","bufferedPos","typeFor","useVideoTagDefaultControls","disableVideoTagContextMenu","mimeTypesByExtension","extension","mediaType","canPlayType","data-html-img","_publicErrorHtml","_publicErrorHtml2","messages","en","es","pt","data-no-op","playbackNotSupportedMessage","getNoOpMessage","idata","createImageData","canvas","buffer32","color","putImageData","noise","animationHandle","getContext","ClickToPausePlugin","_ContainerPlugin","isDvrEnabled","_publicDvr_controlsScss","_publicDvr_controlsScss2","DVRControls","_UICorePlugin","click .live-button","data-dvr-controls","dvrChanged","shouldRender","useDvrControls","EndVideo","_CorePlugin","Favicon","oldIcon","changeFavicon","setPlayIcon","setPauseIcon","resetIcon","charCode","fillStyle","font","fillText","icon","toDataURL","playIcon","createIcon","changeIcon","pauseIcon","currentIcon","GoogleAnalytics","gaAccount","account","trackerName","gaTrackerName","domainName","gaDomainName","currentHDState","embedScript","_gat","onload","onBufferFull","onPlaybackChanged","CONTAINER_FULL_SCREEN","onFullscreen","onHD","onDVR","_gaq","playbackState","BOLD","INFO","DEBUG","WARN","LEVEL_DEBUG","LEVEL_INFO","LEVEL_WARN","LEVEL_ERROR","LEVEL_DISABLED","COLORS","DESCRIPTIONS","offLevel","onOff","BLACKLIST","previousLevel","klassDescription","_instance","setLevel","_publicPosterScss","_publicPosterScss2","_publicPosterHtml","_publicPosterHtml2","PosterPlugin","_UIContainerPlugin","hasStartedPlaying","playRequested","update","data-poster","$playButton","fontSize","$playWrapper","marginTop","audioOnly","shouldHideOnPlay","showPlayButton","imgEl","background-image","prepend","_publicSeek_timeScss","_publicSeek_timeScss2","_publicSeek_timeHtml","_publicSeek_timeHtml2","SeekTime","hoveringOverSeekBar","hoverPosition","actualLiveTime","actualLiveServerTime","actualLiveServerTimeDiff","getTime","data-seek-time","mediaControlContainer","isLiveStreamWithDvr","showTime","hideTime","onContainerChanged","calculateHoverPosition","useActualLiveTime","secondsSinceMidnight","setHours","shouldBeVisible","getSeekTime","currentSeekTime","displayedSeekTime","$seekTimeEl","durationShown","$durationEl","currentDuration","containerWidth","elWidth","elLeftPos","SourcesPlugin","onContainersCreated","firstValidSource","_publicSpinnerHtml","_publicSpinnerHtml2","_publicSpinnerScss","_publicSpinnerScss2","SpinnerThreeBouncePlugin","showTimeout","data-spinner","StatsPlugin","setInitialAttrs","reportInterval","onStatsAdd","startupTime","rebufferingTime","watchingTime","rebuffers","externalMetrics","watchingTimeInit","intervalId","report","startupTimeInit","rebufferingTimeInit","getRebufferingTime","totalTime","metric","isRebuffering","getWatchingTime","statsReport","getStats","_publicWatermarkScss","_publicWatermarkScss2","_publicWatermarkHtml","_publicWatermarkHtml2","WaterMarkPlugin","watermark","imageUrl","imageLink","watermarkLink","templateOptions"],"mappings":"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","file":"clappr.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Clappr\"] = factory();\n\telse\n\t\troot[\"Clappr\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Clappr\"] = factory();\n\telse\n\t\troot[\"Clappr\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"<%=baseUrl%>/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/*!*********************!*\\\n !*** ./src/main.js ***!\n \\*********************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _componentsPlayer = __webpack_require__(/*! components/player */ 104);\n\t\n\tvar _componentsPlayer2 = _interopRequireDefault(_componentsPlayer);\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _baseUtils2 = _interopRequireDefault(_baseUtils);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseUi_core_plugin = __webpack_require__(/*! base/ui_core_plugin */ 25);\n\t\n\tvar _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseBase_object = __webpack_require__(/*! base/base_object */ 12);\n\t\n\tvar _baseBase_object2 = _interopRequireDefault(_baseBase_object);\n\t\n\tvar _baseUi_object = __webpack_require__(/*! base/ui_object */ 15);\n\t\n\tvar _baseUi_object2 = _interopRequireDefault(_baseUi_object);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _componentsContainer = __webpack_require__(/*! components/container */ 36);\n\t\n\tvar _componentsContainer2 = _interopRequireDefault(_componentsContainer);\n\t\n\tvar _componentsCore = __webpack_require__(/*! components/core */ 37);\n\t\n\tvar _componentsCore2 = _interopRequireDefault(_componentsCore);\n\t\n\tvar _componentsLoader = __webpack_require__(/*! components/loader */ 38);\n\t\n\tvar _componentsLoader2 = _interopRequireDefault(_componentsLoader);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 16);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _componentsMedia_control = __webpack_require__(/*! components/media_control */ 39);\n\t\n\tvar _componentsMedia_control2 = _interopRequireDefault(_componentsMedia_control);\n\t\n\tvar _componentsPlayer_info = __webpack_require__(/*! components/player_info */ 21);\n\t\n\tvar _componentsPlayer_info2 = _interopRequireDefault(_componentsPlayer_info);\n\t\n\tvar _playbacksBase_flash_playback = __webpack_require__(/*! playbacks/base_flash_playback */ 26);\n\t\n\tvar _playbacksBase_flash_playback2 = _interopRequireDefault(_playbacksBase_flash_playback);\n\t\n\tvar _playbacksFlash = __webpack_require__(/*! playbacks/flash */ 40);\n\t\n\tvar _playbacksFlash2 = _interopRequireDefault(_playbacksFlash);\n\t\n\tvar _playbacksFlashls = __webpack_require__(/*! playbacks/flashls */ 41);\n\t\n\tvar _playbacksFlashls2 = _interopRequireDefault(_playbacksFlashls);\n\t\n\tvar _playbacksHls = __webpack_require__(/*! playbacks/hls */ 42);\n\t\n\tvar _playbacksHls2 = _interopRequireDefault(_playbacksHls);\n\t\n\tvar _playbacksHtml5_audio = __webpack_require__(/*! playbacks/html5_audio */ 43);\n\t\n\tvar _playbacksHtml5_audio2 = _interopRequireDefault(_playbacksHtml5_audio);\n\t\n\tvar _playbacksHtml5_video = __webpack_require__(/*! playbacks/html5_video */ 22);\n\t\n\tvar _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);\n\t\n\tvar _playbacksHtml_img = __webpack_require__(/*! playbacks/html_img */ 44);\n\t\n\tvar _playbacksHtml_img2 = _interopRequireDefault(_playbacksHtml_img);\n\t\n\tvar _playbacksNo_op = __webpack_require__(/*! playbacks/no_op */ 45);\n\t\n\tvar _playbacksNo_op2 = _interopRequireDefault(_playbacksNo_op);\n\t\n\tvar _pluginsPoster = __webpack_require__(/*! plugins/poster */ 46);\n\t\n\tvar _pluginsPoster2 = _interopRequireDefault(_pluginsPoster);\n\t\n\tvar _pluginsLog = __webpack_require__(/*! plugins/log */ 27);\n\t\n\tvar _pluginsLog2 = _interopRequireDefault(_pluginsLog);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar version = (\"0.2.34\");\n\t\n\texports['default'] = {\n\t Player: _componentsPlayer2['default'],\n\t Mediator: _componentsMediator2['default'],\n\t Events: _baseEvents2['default'],\n\t Browser: _componentsBrowser2['default'],\n\t PlayerInfo: _componentsPlayer_info2['default'],\n\t MediaControl: _componentsMedia_control2['default'],\n\t ContainerPlugin: _baseContainer_plugin2['default'],\n\t UIContainerPlugin: _baseUi_container_plugin2['default'],\n\t CorePlugin: _baseCore_plugin2['default'],\n\t UICorePlugin: _baseUi_core_plugin2['default'],\n\t Playback: _basePlayback2['default'],\n\t Container: _componentsContainer2['default'],\n\t Core: _componentsCore2['default'],\n\t Loader: _componentsLoader2['default'],\n\t BaseObject: _baseBase_object2['default'],\n\t UIObject: _baseUi_object2['default'],\n\t Utils: _baseUtils2['default'],\n\t BaseFlashPlayback: _playbacksBase_flash_playback2['default'],\n\t Flash: _playbacksFlash2['default'],\n\t FlasHLS: _playbacksFlashls2['default'],\n\t HLS: _playbacksHls2['default'],\n\t HTML5Audio: _playbacksHtml5_audio2['default'],\n\t HTML5Video: _playbacksHtml5_video2['default'],\n\t HTMLImg: _playbacksHtml_img2['default'],\n\t NoOp: _playbacksNo_op2['default'],\n\t Poster: _pluginsPoster2['default'],\n\t Log: _pluginsLog2['default'],\n\t Styler: _baseStyler2['default'],\n\t version: version,\n\t template: _baseTemplate2['default'],\n\t $: _clapprZepto2['default']\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/*!****************************!*\\\n !*** ./src/base/events.js ***!\n \\****************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _pluginsLog = __webpack_require__(/*! plugins/log */ 27);\n\t\n\tvar _pluginsLog2 = _interopRequireDefault(_pluginsLog);\n\t\n\tvar _utils = __webpack_require__(/*! ./utils */ 2);\n\t\n\tvar _lodashOnce = __webpack_require__(/*! lodash.once */ 91);\n\t\n\tvar _lodashOnce2 = _interopRequireDefault(_lodashOnce);\n\t\n\tvar slice = Array.prototype.slice;\n\t\n\tvar eventSplitter = /\\s+/;\n\t\n\tvar eventsApi = function eventsApi(obj, action, name, rest) {\n\t if (!name) {\n\t return true;\n\t }\n\t\n\t // Handle event maps.\n\t if (typeof name === 'object') {\n\t for (var key in name) {\n\t obj[action].apply(obj, [key, name[key]].concat(rest));\n\t }\n\t return false;\n\t }\n\t\n\t // Handle space separated event names.\n\t if (eventSplitter.test(name)) {\n\t var names = name.split(eventSplitter);\n\t for (var i = 0, l = names.length; i < l; i++) {\n\t obj[action].apply(obj, [names[i]].concat(rest));\n\t }\n\t return false;\n\t }\n\t\n\t return true;\n\t};\n\t\n\tvar triggerEvents = function triggerEvents(events, args) {\n\t var ev,\n\t i = -1,\n\t l = events.length,\n\t a1 = args[0],\n\t a2 = args[1],\n\t a3 = args[2];\n\t switch (args.length) {\n\t case 0:\n\t while (++i < l) {\n\t (ev = events[i]).callback.call(ev.ctx);\n\t }return;\n\t case 1:\n\t while (++i < l) {\n\t (ev = events[i]).callback.call(ev.ctx, a1);\n\t }return;\n\t case 2:\n\t while (++i < l) {\n\t (ev = events[i]).callback.call(ev.ctx, a1, a2);\n\t }return;\n\t case 3:\n\t while (++i < l) {\n\t (ev = events[i]).callback.call(ev.ctx, a1, a2, a3);\n\t }return;\n\t default:\n\t while (++i < l) {\n\t (ev = events[i]).callback.apply(ev.ctx, args);\n\t }return;\n\t }\n\t};\n\t\n\t/**\n\t * @class Events\n\t * @constructor\n\t * @module base\n\t */\n\t\n\tvar Events = (function () {\n\t function Events() {\n\t _classCallCheck(this, Events);\n\t }\n\t\n\t /**\n\t * listen to an event indefinitely for a given `obj`\n\t * @method listenTo\n\t * @param {Object} obj\n\t * @param {String} name\n\t * @param {Function} callback\n\t * @param {Object} context\n\t * @example\n\t * ```javascript\n\t * this.listenTo(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n\t * ```\n\t */\n\t /**\n\t * listen to an event once for a given `obj`\n\t * @method listenToOnce\n\t * @param {Object} obj\n\t * @param {String} name\n\t * @param {Function} callback\n\t * @param {Object} context\n\t * @example\n\t * ```javascript\n\t * this.listenToOnce(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n\t * ```\n\t */\n\t\n\t _createClass(Events, [{\n\t key: 'on',\n\t\n\t /**\n\t * listen to an event indefinitely, if you want to stop you need to call `off`\n\t * @method on\n\t * @param {String} name\n\t * @param {Function} callback\n\t * @param {Object} context\n\t */\n\t value: function on(name, callback, context) {\n\t if (!eventsApi(this, 'on', name, [callback, context]) || !callback) {\n\t return this;\n\t }\n\t this._events || (this._events = {});\n\t var events = this._events[name] || (this._events[name] = []);\n\t events.push({ callback: callback, context: context, ctx: context || this });\n\t return this;\n\t }\n\t\n\t /**\n\t * listen to an event only once\n\t * @method once\n\t * @param {String} name\n\t * @param {Function} callback\n\t * @param {Object} context\n\t */\n\t }, {\n\t key: 'once',\n\t value: function once(name, callback, context) {\n\t if (!eventsApi(this, 'once', name, [callback, context]) || !callback) {\n\t return this;\n\t }\n\t var self = this;\n\t var once = (0, _lodashOnce2['default'])(function () {\n\t self.off(name, once);\n\t callback.apply(this, arguments);\n\t });\n\t once._callback = callback;\n\t return this.on(name, once, context);\n\t }\n\t\n\t /**\n\t * stop listening to an event\n\t * @method off\n\t * @param {String} name\n\t * @param {Function} callback\n\t * @param {Object} context\n\t */\n\t }, {\n\t key: 'off',\n\t value: function off(name, callback, context) {\n\t var retain, ev, events, names, i, l, j, k;\n\t if (!this._events || !eventsApi(this, 'off', name, [callback, context])) {\n\t return this;\n\t }\n\t if (!name && !callback && !context) {\n\t this._events = void 0;\n\t return this;\n\t }\n\t names = name ? [name] : Object.keys(this._events);\n\t // jshint maxdepth:5\n\t for (i = 0, l = names.length; i < l; i++) {\n\t name = names[i];\n\t events = this._events[name];\n\t if (events) {\n\t this._events[name] = retain = [];\n\t if (callback || context) {\n\t for (j = 0, k = events.length; j < k; j++) {\n\t ev = events[j];\n\t if (callback && callback !== ev.callback && callback !== ev.callback._callback || context && context !== ev.context) {\n\t retain.push(ev);\n\t }\n\t }\n\t }\n\t if (!retain.length) {\n\t delete this._events[name];\n\t }\n\t }\n\t }\n\t return this;\n\t }\n\t\n\t /**\n\t * triggers an event given its `name`\n\t * @method trigger\n\t * @param {String} name\n\t */\n\t }, {\n\t key: 'trigger',\n\t value: function trigger(name) {\n\t var klass = this.name || this.constructor.name;\n\t try {\n\t _pluginsLog2['default'].debug.apply(_pluginsLog2['default'], [klass].concat(Array.prototype.slice.call(arguments)));\n\t if (!this._events) {\n\t return this;\n\t }\n\t var args = slice.call(arguments, 1);\n\t if (!eventsApi(this, 'trigger', name, args)) {\n\t return this;\n\t }\n\t var events = this._events[name];\n\t var allEvents = this._events.all;\n\t if (events) {\n\t triggerEvents(events, args);\n\t }\n\t if (allEvents) {\n\t triggerEvents(allEvents, arguments);\n\t }\n\t } catch (exception) {\n\t _pluginsLog2['default'].error.apply(_pluginsLog2['default'], [klass, 'error on event', name, 'trigger', '-', exception]);\n\t }\n\t return this;\n\t }\n\t\n\t /**\n\t * stop listening an event for a given object\n\t * @method stopListening\n\t * @param {Object} obj\n\t * @param {String} name\n\t * @param {Function} callback\n\t */\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening(obj, name, callback) {\n\t var listeningTo = this._listeningTo;\n\t if (!listeningTo) {\n\t return this;\n\t }\n\t var remove = !name && !callback;\n\t if (!callback && typeof name === 'object') {\n\t callback = this;\n\t }\n\t if (obj) {\n\t (listeningTo = {})[obj._listenId] = obj;\n\t }\n\t for (var id in listeningTo) {\n\t obj = listeningTo[id];\n\t obj.off(name, callback, this);\n\t if (remove || Object.keys(obj._events).length === 0) {\n\t delete this._listeningTo[id];\n\t }\n\t }\n\t return this;\n\t }\n\t }]);\n\t\n\t return Events;\n\t})();\n\t\n\texports['default'] = Events;\n\tvar listenMethods = { listenTo: 'on', listenToOnce: 'once' };\n\t\n\tObject.keys(listenMethods).forEach(function (method) {\n\t Events.prototype[method] = function (obj, name, callback) {\n\t var listeningTo = this._listeningTo || (this._listeningTo = {});\n\t var id = obj._listenId || (obj._listenId = (0, _utils.uniqueId)('l'));\n\t listeningTo[id] = obj;\n\t if (!callback && typeof name === 'object') {\n\t callback = this;\n\t }\n\t obj[listenMethods[method]](name, callback, this);\n\t return this;\n\t };\n\t});\n\t\n\t// PLAYER EVENTS\n\t/**\n\t * Fired when the player is ready on startup\n\t *\n\t * @event PLAYER_READY\n\t */\n\tEvents.PLAYER_READY = 'ready';\n\t/**\n\t * Fired when player resizes\n\t *\n\t * @event PLAYER_RESIZE\n\t * @param {Object} currentSize an object with the current size\n\t */\n\tEvents.PLAYER_RESIZE = 'resize';\n\t/**\n\t * Fired when player starts to play\n\t *\n\t * @event PLAYER_PLAY\n\t */\n\tEvents.PLAYER_PLAY = 'play';\n\t/**\n\t * Fired when player pauses\n\t *\n\t * @event PLAYER_PAUSE\n\t */\n\tEvents.PLAYER_PAUSE = 'pause';\n\t/**\n\t * Fired when player stops\n\t *\n\t * @event PLAYER_STOP\n\t */\n\tEvents.PLAYER_STOP = 'stop';\n\t/**\n\t * Fired when player ends the video\n\t *\n\t * @event PLAYER_ENDED\n\t */\n\tEvents.PLAYER_ENDED = 'ended';\n\t/**\n\t * Fired when player seeks the video\n\t *\n\t * @event PLAYER_SEEK\n\t * @param {Number} time the current time in seconds\n\t */\n\tEvents.PLAYER_SEEK = 'seek';\n\t/**\n\t * Fired when player receives an error\n\t *\n\t * @event PLAYER_ERROR\n\t * @param {Object} error the error\n\t */\n\tEvents.PLAYER_ERROR = 'error';\n\t/**\n\t * Fired when the time is updated on player\n\t *\n\t * @event PLAYER_TIMEUPDATE\n\t * @param {Object} progress Data\n\t * progress object\n\t * @param {Number} [progress.current]\n\t * current time\n\t * @param {Number} [progress.total]\n\t * total time\n\t */\n\tEvents.PLAYER_TIMEUPDATE = 'timeupdate';\n\t/**\n\t * Fired when player updates its volume\n\t *\n\t * @event PLAYER_VOLUMEUPDATE\n\t * @param {Number} volume the current volume\n\t */\n\tEvents.PLAYER_VOLUMEUPDATE = 'volumeupdate';\n\t\n\t// Playback Events\n\t/**\n\t * Fired when the playback is downloading the media\n\t *\n\t * @event PLAYBACK_PROGRESS\n\t * @param {Object} progress Data\n\t * progress object\n\t * @param {Number} [progress.start]\n\t * initial downloaded content\n\t * @param {Number} [progress.current]\n\t * current dowloaded content\n\t * @param {Number} [progress.total]\n\t * total content to be downloaded\n\t */\n\tEvents.PLAYBACK_PROGRESS = 'playback:progress';\n\t/**\n\t * Fired when the time is updated on playback\n\t *\n\t * @event PLAYBACK_TIMEUPDATE\n\t * @param {Object} progress Data\n\t * progress object\n\t * @param {Number} [progress.current]\n\t * current time\n\t * @param {Number} [progress.total]\n\t * total time\n\t */\n\tEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate';\n\t/**\n\t * Fired when playback is ready\n\t *\n\t * @event PLAYBACK_READY\n\t */\n\tEvents.PLAYBACK_READY = 'playback:ready';\n\t/**\n\t * Fired when the playback starts having to buffer because\n\t * playback can currently not be smooth.\n\t *\n\t * This corresponds to the playback `buffering` property being\n\t * `true`.\n\t *\n\t * @event PLAYBACK_BUFFERING\n\t */\n\tEvents.PLAYBACK_BUFFERING = 'playback:buffering';\n\t/**\n\t * Fired when the playback has enough in the buffer to be\n\t * able to play smoothly, after previously being unable to\n\t * do this.\n\t *\n\t * This corresponds to the playback `buffering` property being\n\t * `false`.\n\t *\n\t * @event PLAYBACK_BUFFERFULL\n\t */\n\tEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull';\n\t/**\n\t * Fired when playback changes any settings (volume, seek and etc)\n\t *\n\t * @event PLAYBACK_SETTINGSUPDATE\n\t */\n\tEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate';\n\t/**\n\t * Fired when playback loaded its metadata\n\t *\n\t * @event PLAYBACK_LOADEDMETADATA\n\t * @param {Object} metadata Data\n\t * settings object\n\t * @param {Number} [metadata.duration]\n\t * the playback duration\n\t * @param {Object} [metadata.data]\n\t * extra meta data\n\t */\n\tEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata';\n\t/**\n\t * Fired when playback updates its video quality\n\t *\n\t * @event PLAYBACK_HIGHDEFINITIONUPDATE\n\t * @param {Boolean} isHD\n\t * true when is on HD, false otherwise\n\t */\n\tEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate';\n\t/**\n\t * Fired when playback updates its bitrate\n\t *\n\t * @event PLAYBACK_BITRATE\n\t * @param {Object} bitrate Data\n\t * bitrate object\n\t * @param {Number} [bitrate.bandwidth]\n\t * bitrate bandwidth when it's available\n\t * @param {Number} [bitrate.width]\n\t * playback width (ex: 720, 640, 1080)\n\t * @param {Number} [bitrate.height]\n\t * playback height (ex: 240, 480, 720)\n\t * @param {Number} [bitrate.level]\n\t * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n\t */\n\tEvents.PLAYBACK_BITRATE = 'playback:bitrate';\n\t/**\n\t * Fired when the playback has its levels\n\t *\n\t * @event PLAYBACK_LEVELS_AVAILABLE\n\t * @param {Array} levels\n\t * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0\n\t * @param {Number} initial\n\t * the initial level otherwise -1 (AUTO)\n\t */\n\tEvents.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available';\n\t/**\n\t * Fired when the playback starts to switch level\n\t *\n\t * @event PLAYBACK_LEVEL_SWITCH_START\n\t *\n\t */\n\tEvents.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start';\n\t/**\n\t * Fired when the playback ends the level switch\n\t *\n\t * @event PLAYBACK_LEVEL_SWITCH_END\n\t *\n\t */\n\tEvents.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end';\n\t\n\t/**\n\t * Fired when playback internal state changes\n\t *\n\t * @event PLAYBACK_PLAYBACKSTATE\n\t * @param {Object} state Data\n\t * state object\n\t * @param {String} [state.type]\n\t * the playback type\n\t */\n\tEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate';\n\t/**\n\t * Fired when DVR becomes enabled/disabled.\n\t *\n\t * @event PLAYBACK_DVR\n\t * @param {boolean} state true if dvr enabled \n\t */\n\tEvents.PLAYBACK_DVR = 'playback:dvr';\n\t// TODO doc\n\tEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable';\n\t// TODO doc\n\tEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable';\n\t/**\n\t * Fired when the media for a playback ends.\n\t *\n\t * @event PLAYBACK_ENDED\n\t * @param {String} name the name of the playback\n\t */\n\tEvents.PLAYBACK_ENDED = 'playback:ended';\n\t/**\n\t * Fired when the media for a playback starts playing.\n\t * This is not necessarily when the user requests `play()`\n\t * The media may have to buffer first.\n\t * I.e. `isPlaying()` might return `true` before this event is fired,\n\t * because `isPlaying()` represents the intended state.\n\t *\n\t * @event PLAYBACK_PLAY\n\t */\n\tEvents.PLAYBACK_PLAY = 'playback:play';\n\t/**\n\t * Fired when the media for a playback pauses.\n\t *\n\t * @event PLAYBACK_PAUSE\n\t */\n\tEvents.PLAYBACK_PAUSE = 'playback:pause';\n\t/**\n\t * Fired when the media for a playback is stopped.\n\t *\n\t * @event PLAYBACK_STOP\n\t */\n\tEvents.PLAYBACK_STOP = 'playback:stop';\n\t/**\n\t * Fired if an error occurs in the playback.\n\t *\n\t * @event PLAYBACK_ERROR\n\t * @param {Object} error An object containing the error details\n\t * @param {String} name Playback name\n\t */\n\tEvents.PLAYBACK_ERROR = 'playback:error';\n\t// TODO doc\n\tEvents.PLAYBACK_STATS_ADD = 'playback:stats:add';\n\t// TODO doc\n\tEvents.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded';\n\t// TODO doc\n\tEvents.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch';\n\t\n\t/**\n\t * Fired when the options were changed for the core\n\t *\n\t * @event CORE_OPTIONS_CHANGE\n\t */\n\tEvents.CORE_OPTIONS_CHANGE = 'core:options:change';\n\t/**\n\t * Fired after creating containers, when the core is ready\n\t *\n\t * @event CORE_READY\n\t */\n\tEvents.CORE_READY = 'core:ready';\n\t\n\t// Container Events\n\t/**\n\t * Fired when the container internal state changes\n\t *\n\t * @event CONTAINER_PLAYBACKSTATE\n\t * @param {Object} state Data\n\t * state object\n\t * @param {String} [state.type]\n\t * the playback type\n\t */\n\tEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate';\n\tEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr';\n\t/**\n\t * Fired when the container updates its bitrate\n\t *\n\t * @event CONTAINER_BITRATE\n\t * @param {Object} bitrate Data\n\t * bitrate object\n\t * @param {Number} [bitrate.bandwidth]\n\t * bitrate bandwidth when it's available\n\t * @param {Number} [bitrate.width]\n\t * playback width (ex: 720, 640, 1080)\n\t * @param {Number} [bitrate.height]\n\t * playback height (ex: 240, 480, 720)\n\t * @param {Number} [bitrate.level]\n\t * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n\t */\n\tEvents.CONTAINER_BITRATE = 'container:bitrate';\n\tEvents.CONTAINER_STATS_REPORT = 'container:stats:report';\n\tEvents.CONTAINER_DESTROYED = 'container:destroyed';\n\t/**\n\t * Fired when the container is ready\n\t *\n\t * @event CONTAINER_READY\n\t */\n\tEvents.CONTAINER_READY = 'container:ready';\n\tEvents.CONTAINER_ERROR = 'container:error';\n\t/**\n\t * Fired when the container loaded its metadata\n\t *\n\t * @event CONTAINER_LOADEDMETADATA\n\t * @param {Object} metadata Data\n\t * settings object\n\t * @param {Number} [metadata.duration]\n\t * the playback duration\n\t * @param {Object} [metadata.data]\n\t * extra meta data\n\t */\n\tEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata';\n\t/**\n\t * Fired when the time is updated on container\n\t *\n\t * @event CONTAINER_TIMEUPDATE\n\t * @param {Object} progress Data\n\t * progress object\n\t * @param {Number} [progress.current]\n\t * current time\n\t * @param {Number} [progress.total]\n\t * total time\n\t */\n\tEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate';\n\t/**\n\t * Fired when the container is downloading the media\n\t *\n\t * @event CONTAINER_PROGRESS\n\t * @param {Object} progress Data\n\t * progress object\n\t * @param {Number} [progress.start]\n\t * initial downloaded content\n\t * @param {Number} [progress.current]\n\t * current dowloaded content\n\t * @param {Number} [progress.total]\n\t * total content to be downloaded\n\t */\n\tEvents.CONTAINER_PROGRESS = 'container:progress';\n\tEvents.CONTAINER_PLAY = 'container:play';\n\tEvents.CONTAINER_STOP = 'container:stop';\n\tEvents.CONTAINER_PAUSE = 'container:pause';\n\tEvents.CONTAINER_ENDED = 'container:ended';\n\tEvents.CONTAINER_CLICK = 'container:click';\n\tEvents.CONTAINER_DBLCLICK = 'container:dblclick';\n\tEvents.CONTAINER_CONTEXTMENU = 'container:contextmenu';\n\tEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter';\n\tEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave';\n\t/**\n\t * Fired when the container seeks the video\n\t *\n\t * @event CONTAINER_SEEK\n\t * @param {Number} time the current time in seconds\n\t */\n\tEvents.CONTAINER_SEEK = 'container:seek';\n\tEvents.CONTAINER_VOLUME = 'container:volume';\n\tEvents.CONTAINER_FULLSCREEN = 'container:fullscreen';\n\t/**\n\t * Fired when container is buffering\n\t *\n\t * @event CONTAINER_STATE_BUFFERING\n\t */\n\tEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering';\n\t/**\n\t * Fired when the container filled the buffer\n\t *\n\t * @event CONTAINER_STATE_BUFFERFULL\n\t */\n\tEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull';\n\t/**\n\t * Fired when the container changes any settings (volume, seek and etc)\n\t *\n\t * @event CONTAINER_SETTINGSUPDATE\n\t */\n\tEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate';\n\t/**\n\t * Fired when container updates its video quality\n\t *\n\t * @event CONTAINER_HIGHDEFINITIONUPDATE\n\t * @param {Boolean} isHD\n\t * true when is on HD, false otherwise\n\t */\n\tEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate';\n\t\n\t/**\n\t * Fired when the media control shows\n\t *\n\t * @event CONTAINER_MEDIACONTROL_SHOW\n\t */\n\tEvents.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show';\n\t/**\n\t * Fired when the media control hides\n\t *\n\t * @event CONTAINER_MEDIACONTROL_HIDE\n\t */\n\tEvents.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide';\n\t\n\tEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable';\n\tEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable';\n\tEvents.CONTAINER_STATS_ADD = 'container:stats:add';\n\t/**\n\t * Fired when the options were changed for the container\n\t *\n\t * @event CONTAINER_OPTIONS_CHANGE\n\t */\n\tEvents.CONTAINER_OPTIONS_CHANGE = 'container:options:change';\n\t\n\t// MediaControl Events\n\tEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered';\n\t/**\n\t * Fired when the player enters/exit on fullscreen\n\t *\n\t * @event MEDIACONTROL_FULLSCREEN\n\t */\n\tEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen';\n\t/**\n\t * Fired when the media control shows\n\t *\n\t * @event MEDIACONTROL_SHOW\n\t */\n\tEvents.MEDIACONTROL_SHOW = 'mediacontrol:show';\n\t/**\n\t * Fired when the media control hides\n\t *\n\t * @event MEDIACONTROL_HIDE\n\t */\n\tEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide';\n\t/**\n\t * Fired when mouse enters on the seekbar\n\t *\n\t * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR\n\t * @param {Object} event\n\t * the javascript event\n\t */\n\tEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar';\n\t/**\n\t * Fired when mouse leaves the seekbar\n\t *\n\t * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR\n\t * @param {Object} event\n\t * the javascript event\n\t */\n\tEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar';\n\t/**\n\t * Fired when the media is being played\n\t *\n\t * @event MEDIACONTROL_PLAYING\n\t */\n\tEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing';\n\t/**\n\t * Fired when the media is not being played\n\t *\n\t * @event MEDIACONTROL_NOTPLAYING\n\t */\n\tEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying';\n\t/**\n\t * Fired when the container was changed\n\t *\n\t * @event MEDIACONTROL_CONTAINERCHANGED\n\t */\n\tEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged';\n\t\n\t// Core Events\n\tEvents.CORE_CONTAINERS_CREATED = 'core:containers:created';\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/*!***************************!*\\\n !*** ./src/base/utils.js ***!\n \\***************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t/*jshint -W079 */\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\texports.extend = extend;\n\texports.formatTime = formatTime;\n\texports.seekStringToSeconds = seekStringToSeconds;\n\texports.uniqueId = uniqueId;\n\texports.isNumber = isNumber;\n\texports.currentScriptUrl = currentScriptUrl;\n\texports.getBrowserLanguage = getBrowserLanguage;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tfunction extend(parent, properties) {\n\t var pluginName = properties.name || \"\";\n\t\n\t var MergedPlugin = (function (_parent) {\n\t _inherits(MergedPlugin, _parent);\n\t\n\t function MergedPlugin(args) {\n\t _classCallCheck(this, MergedPlugin);\n\t\n\t _get(Object.getPrototypeOf(MergedPlugin.prototype), 'constructor', this).call(this, args);\n\t if (properties.initialize) {\n\t properties.initialize.apply(this, Array.prototype.slice.apply(arguments));\n\t }\n\t }\n\t\n\t _createClass(MergedPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return pluginName;\n\t }\n\t }]);\n\t\n\t return MergedPlugin;\n\t })(parent);\n\t\n\t delete properties.name;\n\t _clapprZepto2['default'].extend(MergedPlugin.prototype, properties);\n\t return MergedPlugin;\n\t}\n\t\n\tfunction formatTime(time, paddedHours) {\n\t if (!isFinite(time)) {\n\t return \"--:--\";\n\t }\n\t time = time * 1000;\n\t time = parseInt(time / 1000);\n\t var seconds = time % 60;\n\t time = parseInt(time / 60);\n\t var minutes = time % 60;\n\t time = parseInt(time / 60);\n\t var hours = time % 24;\n\t var days = parseInt(time / 24);\n\t var out = \"\";\n\t if (days && days > 0) {\n\t out += days + \":\";\n\t if (hours < 1) {\n\t out += \"00:\";\n\t }\n\t }\n\t if (hours && hours > 0 || paddedHours) {\n\t out += (\"0\" + hours).slice(-2) + \":\";\n\t }\n\t out += (\"0\" + minutes).slice(-2) + \":\";\n\t out += (\"0\" + seconds).slice(-2);\n\t return out.trim();\n\t}\n\t\n\tvar Fullscreen = {\n\t isFullscreen: function isFullscreen() {\n\t return document.webkitFullscreenElement || document.webkitIsFullScreen || document.mozFullScreen || !!document.msFullscreenElement;\n\t },\n\t requestFullscreen: function requestFullscreen(el) {\n\t if (el.requestFullscreen) {\n\t el.requestFullscreen();\n\t } else if (el.webkitRequestFullscreen) {\n\t el.webkitRequestFullscreen();\n\t } else if (el.mozRequestFullScreen) {\n\t el.mozRequestFullScreen();\n\t } else if (el.msRequestFullscreen) {\n\t el.msRequestFullscreen();\n\t } else if (el.querySelector && el.querySelector(\"video\") && el.querySelector(\"video\").webkitEnterFullScreen) {\n\t el.querySelector(\"video\").webkitEnterFullScreen();\n\t }\n\t },\n\t cancelFullscreen: function cancelFullscreen() {\n\t if (document.exitFullscreen) {\n\t document.exitFullscreen();\n\t } else if (document.webkitCancelFullScreen) {\n\t document.webkitCancelFullScreen();\n\t } else if (document.webkitExitFullscreen) {\n\t document.webkitExitFullscreen();\n\t } else if (document.mozCancelFullScreen) {\n\t document.mozCancelFullScreen();\n\t } else if (document.msExitFullscreen) {\n\t document.msExitFullscreen();\n\t }\n\t }\n\t};\n\t\n\texports.Fullscreen = Fullscreen;\n\t\n\tvar Config = (function () {\n\t function Config() {\n\t _classCallCheck(this, Config);\n\t }\n\t\n\t _createClass(Config, null, [{\n\t key: '_defaultConfig',\n\t value: function _defaultConfig() {\n\t return {\n\t volume: {\n\t value: 100,\n\t parse: parseInt\n\t }\n\t };\n\t }\n\t }, {\n\t key: '_defaultValueFor',\n\t value: function _defaultValueFor(key) {\n\t try {\n\t return this._defaultConfig()[key].parse(this._defaultConfig()[key].value);\n\t } catch (e) {\n\t return undefined;\n\t }\n\t }\n\t }, {\n\t key: '_createKeyspace',\n\t value: function _createKeyspace(key) {\n\t return 'clappr.' + document.domain + '.' + key;\n\t }\n\t }, {\n\t key: 'restore',\n\t value: function restore(key) {\n\t if (_componentsBrowser2['default'].hasLocalstorage && localStorage[this._createKeyspace(key)]) {\n\t return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)]);\n\t }\n\t return this._defaultValueFor(key);\n\t }\n\t }, {\n\t key: 'persist',\n\t value: function persist(key, value) {\n\t if (_componentsBrowser2['default'].hasLocalstorage) {\n\t try {\n\t localStorage[this._createKeyspace(key)] = value;\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return Config;\n\t})();\n\t\n\texports.Config = Config;\n\t\n\tfunction seekStringToSeconds(url) {\n\t var parts = url.match(/t=([0-9]*)(&|\\/|$)/);\n\t if (parts && parts.length > 0) {\n\t return parseInt(parts[1], 10);\n\t } else {\n\t var seconds = 0;\n\t var factor = { 'h': 3600, 'm': 60, 's': 1 };\n\t parts = url.match(/[0-9]+[hms]+/g) || [];\n\t parts.forEach(function (el) {\n\t if (el) {\n\t var suffix = el[el.length - 1];\n\t var time = parseInt(el.slice(0, el.length - 1), 10);\n\t seconds += time * factor[suffix];\n\t }\n\t });\n\t return seconds;\n\t }\n\t}\n\t\n\tvar idsCounter = {};\n\t\n\tfunction uniqueId(prefix) {\n\t idsCounter[prefix] || (idsCounter[prefix] = 0);\n\t var id = ++idsCounter[prefix];\n\t return prefix + id;\n\t}\n\t\n\tfunction isNumber(value) {\n\t return value - parseFloat(value) + 1 >= 0;\n\t}\n\t\n\tfunction currentScriptUrl() {\n\t var scripts = document.getElementsByTagName('script');\n\t return scripts[scripts.length - 1].src;\n\t}\n\t\n\tvar requestAnimationFrame = (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {\n\t window.setTimeout(fn, 1000 / 60);\n\t}).bind(window);\n\t\n\texports.requestAnimationFrame = requestAnimationFrame;\n\tvar cancelAnimationFrame = (window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout).bind(window);\n\t\n\texports.cancelAnimationFrame = cancelAnimationFrame;\n\t\n\tfunction getBrowserLanguage() {\n\t if (window.navigator && window.navigator.language) {\n\t return window.navigator.language.toLowerCase();\n\t }\n\t return null;\n\t}\n\t\n\texports['default'] = {\n\t Config: Config,\n\t Fullscreen: Fullscreen,\n\t extend: extend,\n\t formatTime: formatTime,\n\t seekStringToSeconds: seekStringToSeconds,\n\t uniqueId: uniqueId,\n\t currentScriptUrl: currentScriptUrl,\n\t isNumber: isNumber,\n\t requestAnimationFrame: requestAnimationFrame,\n\t cancelAnimationFrame: cancelAnimationFrame,\n\t getBrowserLanguage: getBrowserLanguage\n\t};\n\n/***/ },\n/* 3 */\n/*!*************************************!*\\\n !*** ./~/clappr-zepto/zepto.min.js ***!\n \\*************************************/\n/***/ function(module, exports) {\n\n\t/* Zepto v1.1.4-80-ga9184b2 - zepto event ajax callbacks deferred touch selector ie - zeptojs.com/license */\n\t\"use strict\";\n\t\n\tvar Zepto = (function () {\n\t function D(t) {\n\t return null == t ? String(t) : j[S.call(t)] || \"object\";\n\t }function L(t) {\n\t return \"function\" == D(t);\n\t }function k(t) {\n\t return null != t && t == t.window;\n\t }function Z(t) {\n\t return null != t && t.nodeType == t.DOCUMENT_NODE;\n\t }function $(t) {\n\t return \"object\" == D(t);\n\t }function F(t) {\n\t return $(t) && !k(t) && Object.getPrototypeOf(t) == Object.prototype;\n\t }function R(t) {\n\t return \"number\" == typeof t.length;\n\t }function q(t) {\n\t return s.call(t, function (t) {\n\t return null != t;\n\t });\n\t }function W(t) {\n\t return t.length > 0 ? n.fn.concat.apply([], t) : t;\n\t }function z(t) {\n\t return t.replace(/::/g, \"/\").replace(/([A-Z]+)([A-Z][a-z])/g, \"$1_$2\").replace(/([a-z\\d])([A-Z])/g, \"$1_$2\").replace(/_/g, \"-\").toLowerCase();\n\t }function H(t) {\n\t return t in c ? c[t] : c[t] = new RegExp(\"(^|\\\\s)\" + t + \"(\\\\s|$)\");\n\t }function _(t, e) {\n\t return \"number\" != typeof e || l[z(t)] ? e : e + \"px\";\n\t }function I(t) {\n\t var e, n;return f[t] || (e = u.createElement(t), u.body.appendChild(e), n = getComputedStyle(e, \"\").getPropertyValue(\"display\"), e.parentNode.removeChild(e), \"none\" == n && (n = \"block\"), f[t] = n), f[t];\n\t }function U(t) {\n\t return \"children\" in t ? a.call(t.children) : n.map(t.childNodes, function (t) {\n\t return 1 == t.nodeType ? t : void 0;\n\t });\n\t }function X(t, e) {\n\t var n,\n\t i = t ? t.length : 0;for (n = 0; i > n; n++) this[n] = t[n];this.length = i, this.selector = e || \"\";\n\t }function B(n, i, r) {\n\t for (e in i) r && (F(i[e]) || A(i[e])) ? (F(i[e]) && !F(n[e]) && (n[e] = {}), A(i[e]) && !A(n[e]) && (n[e] = []), B(n[e], i[e], r)) : i[e] !== t && (n[e] = i[e]);\n\t }function V(t, e) {\n\t return null == e ? n(t) : n(t).filter(e);\n\t }function Y(t, e, n, i) {\n\t return L(e) ? e.call(t, n, i) : e;\n\t }function J(t, e, n) {\n\t null == n ? t.removeAttribute(e) : t.setAttribute(e, n);\n\t }function G(e, n) {\n\t var i = e.className || \"\",\n\t r = i && i.baseVal !== t;return n === t ? r ? i.baseVal : i : void (r ? i.baseVal = n : e.className = n);\n\t }function K(t) {\n\t try {\n\t return t ? \"true\" == t || (\"false\" == t ? !1 : \"null\" == t ? null : +t + \"\" == t ? +t : /^[\\[\\{]/.test(t) ? n.parseJSON(t) : t) : t;\n\t } catch (e) {\n\t return t;\n\t }\n\t }function Q(t, e) {\n\t e(t);for (var n = 0, i = t.childNodes.length; i > n; n++) Q(t.childNodes[n], e);\n\t }var t,\n\t e,\n\t n,\n\t i,\n\t N,\n\t P,\n\t r = [],\n\t o = r.concat,\n\t s = r.filter,\n\t a = r.slice,\n\t u = window.document,\n\t f = {},\n\t c = {},\n\t l = { \"column-count\": 1, columns: 1, \"font-weight\": 1, \"line-height\": 1, opacity: 1, \"z-index\": 1, zoom: 1 },\n\t h = /^\\s*<(\\w+|!)[^>]*>/,\n\t p = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\t d = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\t m = /^(?:body|html)$/i,\n\t g = /([A-Z])/g,\n\t v = [\"val\", \"css\", \"html\", \"text\", \"data\", \"width\", \"height\", \"offset\"],\n\t y = [\"after\", \"prepend\", \"before\", \"append\"],\n\t w = u.createElement(\"table\"),\n\t x = u.createElement(\"tr\"),\n\t b = { tr: u.createElement(\"tbody\"), tbody: w, thead: w, tfoot: w, td: x, th: x, \"*\": u.createElement(\"div\") },\n\t E = /complete|loaded|interactive/,\n\t T = /^[\\w-]*$/,\n\t j = {},\n\t S = j.toString,\n\t C = {},\n\t O = u.createElement(\"div\"),\n\t M = { tabindex: \"tabIndex\", readonly: \"readOnly\", \"for\": \"htmlFor\", \"class\": \"className\", maxlength: \"maxLength\", cellspacing: \"cellSpacing\", cellpadding: \"cellPadding\", rowspan: \"rowSpan\", colspan: \"colSpan\", usemap: \"useMap\", frameborder: \"frameBorder\", contenteditable: \"contentEditable\" },\n\t A = Array.isArray || function (t) {\n\t return t instanceof Array;\n\t };return C.matches = function (t, e) {\n\t if (!e || !t || 1 !== t.nodeType) return !1;var n = t.webkitMatchesSelector || t.mozMatchesSelector || t.oMatchesSelector || t.matchesSelector;if (n) return n.call(t, e);var i,\n\t r = t.parentNode,\n\t o = !r;return o && (r = O).appendChild(t), i = ~C.qsa(r, e).indexOf(t), o && O.removeChild(t), i;\n\t }, N = function (t) {\n\t return t.replace(/-+(.)?/g, function (t, e) {\n\t return e ? e.toUpperCase() : \"\";\n\t });\n\t }, P = function (t) {\n\t return s.call(t, function (e, n) {\n\t return t.indexOf(e) == n;\n\t });\n\t }, C.fragment = function (e, i, r) {\n\t var o, s, f;return p.test(e) && (o = n(u.createElement(RegExp.$1))), o || (e.replace && (e = e.replace(d, \"<$1>$2>\")), i === t && (i = h.test(e) && RegExp.$1), i in b || (i = \"*\"), f = b[i], f.innerHTML = \"\" + e, o = n.each(a.call(f.childNodes), function () {\n\t f.removeChild(this);\n\t })), F(r) && (s = n(o), n.each(r, function (t, e) {\n\t v.indexOf(t) > -1 ? s[t](e) : s.attr(t, e);\n\t })), o;\n\t }, C.Z = function (t, e) {\n\t return new X(t, e);\n\t }, C.isZ = function (t) {\n\t return t instanceof C.Z;\n\t }, C.init = function (e, i) {\n\t var r;if (!e) return C.Z();if (\"string\" == typeof e) if ((e = e.trim(), \"<\" == e[0] && h.test(e))) r = C.fragment(e, RegExp.$1, i), e = null;else {\n\t if (i !== t) return n(i).find(e);r = C.qsa(u, e);\n\t } else {\n\t if (L(e)) return n(u).ready(e);if (C.isZ(e)) return e;if (A(e)) r = q(e);else if ($(e)) r = [e], e = null;else if (h.test(e)) r = C.fragment(e.trim(), RegExp.$1, i), e = null;else {\n\t if (i !== t) return n(i).find(e);r = C.qsa(u, e);\n\t }\n\t }return C.Z(r, e);\n\t }, n = function (t, e) {\n\t return C.init(t, e);\n\t }, n.extend = function (t) {\n\t var e,\n\t n = a.call(arguments, 1);return \"boolean\" == typeof t && (e = t, t = n.shift()), n.forEach(function (n) {\n\t B(t, n, e);\n\t }), t;\n\t }, C.qsa = function (t, e) {\n\t var n,\n\t i = \"#\" == e[0],\n\t r = !i && \".\" == e[0],\n\t o = i || r ? e.slice(1) : e,\n\t s = T.test(o);return t.getElementById && s && i ? (n = t.getElementById(o)) ? [n] : [] : 1 !== t.nodeType && 9 !== t.nodeType && 11 !== t.nodeType ? [] : a.call(s && !i && t.getElementsByClassName ? r ? t.getElementsByClassName(o) : t.getElementsByTagName(e) : t.querySelectorAll(e));\n\t }, n.contains = u.documentElement.contains ? function (t, e) {\n\t return t !== e && t.contains(e);\n\t } : function (t, e) {\n\t for (; e && (e = e.parentNode);) if (e === t) return !0;return !1;\n\t }, n.type = D, n.isFunction = L, n.isWindow = k, n.isArray = A, n.isPlainObject = F, n.isEmptyObject = function (t) {\n\t var e;for (e in t) return !1;return !0;\n\t }, n.inArray = function (t, e, n) {\n\t return r.indexOf.call(e, t, n);\n\t }, n.camelCase = N, n.trim = function (t) {\n\t return null == t ? \"\" : String.prototype.trim.call(t);\n\t }, n.uuid = 0, n.support = {}, n.expr = {}, n.noop = function () {}, n.map = function (t, e) {\n\t var n,\n\t r,\n\t o,\n\t i = [];if (R(t)) for (r = 0; r < t.length; r++) n = e(t[r], r), null != n && i.push(n);else for (o in t) n = e(t[o], o), null != n && i.push(n);return W(i);\n\t }, n.each = function (t, e) {\n\t var n, i;if (R(t)) {\n\t for (n = 0; n < t.length; n++) if (e.call(t[n], n, t[n]) === !1) return t;\n\t } else for (i in t) if (e.call(t[i], i, t[i]) === !1) return t;return t;\n\t }, n.grep = function (t, e) {\n\t return s.call(t, e);\n\t }, window.JSON && (n.parseJSON = JSON.parse), n.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function (t, e) {\n\t j[\"[object \" + e + \"]\"] = e.toLowerCase();\n\t }), n.fn = { constructor: C.Z, length: 0, forEach: r.forEach, reduce: r.reduce, push: r.push, sort: r.sort, splice: r.splice, indexOf: r.indexOf, concat: function concat() {\n\t var t,\n\t e,\n\t n = [];for (t = 0; t < arguments.length; t++) e = arguments[t], n[t] = C.isZ(e) ? e.toArray() : e;return o.apply(C.isZ(this) ? this.toArray() : this, n);\n\t }, map: function map(t) {\n\t return n(n.map(this, function (e, n) {\n\t return t.call(e, n, e);\n\t }));\n\t }, slice: function slice() {\n\t return n(a.apply(this, arguments));\n\t }, ready: function ready(t) {\n\t return E.test(u.readyState) && u.body ? t(n) : u.addEventListener(\"DOMContentLoaded\", function () {\n\t t(n);\n\t }, !1), this;\n\t }, get: function get(e) {\n\t return e === t ? a.call(this) : this[e >= 0 ? e : e + this.length];\n\t }, toArray: function toArray() {\n\t return this.get();\n\t }, size: function size() {\n\t return this.length;\n\t }, remove: function remove() {\n\t return this.each(function () {\n\t null != this.parentNode && this.parentNode.removeChild(this);\n\t });\n\t }, each: function each(t) {\n\t return r.every.call(this, function (e, n) {\n\t return t.call(e, n, e) !== !1;\n\t }), this;\n\t }, filter: function filter(t) {\n\t return L(t) ? this.not(this.not(t)) : n(s.call(this, function (e) {\n\t return C.matches(e, t);\n\t }));\n\t }, add: function add(t, e) {\n\t return n(P(this.concat(n(t, e))));\n\t }, is: function is(t) {\n\t return this.length > 0 && C.matches(this[0], t);\n\t }, not: function not(e) {\n\t var i = [];if (L(e) && e.call !== t) this.each(function (t) {\n\t e.call(this, t) || i.push(this);\n\t });else {\n\t var r = \"string\" == typeof e ? this.filter(e) : R(e) && L(e.item) ? a.call(e) : n(e);this.forEach(function (t) {\n\t r.indexOf(t) < 0 && i.push(t);\n\t });\n\t }return n(i);\n\t }, has: function has(t) {\n\t return this.filter(function () {\n\t return $(t) ? n.contains(this, t) : n(this).find(t).size();\n\t });\n\t }, eq: function eq(t) {\n\t return -1 === t ? this.slice(t) : this.slice(t, +t + 1);\n\t }, first: function first() {\n\t var t = this[0];return t && !$(t) ? t : n(t);\n\t }, last: function last() {\n\t var t = this[this.length - 1];return t && !$(t) ? t : n(t);\n\t }, find: function find(t) {\n\t var e,\n\t i = this;return e = t ? \"object\" == typeof t ? n(t).filter(function () {\n\t var t = this;return r.some.call(i, function (e) {\n\t return n.contains(e, t);\n\t });\n\t }) : 1 == this.length ? n(C.qsa(this[0], t)) : this.map(function () {\n\t return C.qsa(this, t);\n\t }) : n();\n\t }, closest: function closest(t, e) {\n\t var i = this[0],\n\t r = !1;for (\"object\" == typeof t && (r = n(t)); i && !(r ? r.indexOf(i) >= 0 : C.matches(i, t));) i = i !== e && !Z(i) && i.parentNode;return n(i);\n\t }, parents: function parents(t) {\n\t for (var e = [], i = this; i.length > 0;) i = n.map(i, function (t) {\n\t return (t = t.parentNode) && !Z(t) && e.indexOf(t) < 0 ? (e.push(t), t) : void 0;\n\t });return V(e, t);\n\t }, parent: function parent(t) {\n\t return V(P(this.pluck(\"parentNode\")), t);\n\t }, children: function children(t) {\n\t return V(this.map(function () {\n\t return U(this);\n\t }), t);\n\t }, contents: function contents() {\n\t return this.map(function () {\n\t return this.contentDocument || a.call(this.childNodes);\n\t });\n\t }, siblings: function siblings(t) {\n\t return V(this.map(function (t, e) {\n\t return s.call(U(e.parentNode), function (t) {\n\t return t !== e;\n\t });\n\t }), t);\n\t }, empty: function empty() {\n\t return this.each(function () {\n\t this.innerHTML = \"\";\n\t });\n\t }, pluck: function pluck(t) {\n\t return n.map(this, function (e) {\n\t return e[t];\n\t });\n\t }, show: function show() {\n\t return this.each(function () {\n\t \"none\" == this.style.display && (this.style.display = \"\"), \"none\" == getComputedStyle(this, \"\").getPropertyValue(\"display\") && (this.style.display = I(this.nodeName));\n\t });\n\t }, replaceWith: function replaceWith(t) {\n\t return this.before(t).remove();\n\t }, wrap: function wrap(t) {\n\t var e = L(t);if (this[0] && !e) var i = n(t).get(0),\n\t r = i.parentNode || this.length > 1;return this.each(function (o) {\n\t n(this).wrapAll(e ? t.call(this, o) : r ? i.cloneNode(!0) : i);\n\t });\n\t }, wrapAll: function wrapAll(t) {\n\t if (this[0]) {\n\t n(this[0]).before(t = n(t));for (var e; (e = t.children()).length;) t = e.first();n(t).append(this);\n\t }return this;\n\t }, wrapInner: function wrapInner(t) {\n\t var e = L(t);return this.each(function (i) {\n\t var r = n(this),\n\t o = r.contents(),\n\t s = e ? t.call(this, i) : t;o.length ? o.wrapAll(s) : r.append(s);\n\t });\n\t }, unwrap: function unwrap() {\n\t return this.parent().each(function () {\n\t n(this).replaceWith(n(this).children());\n\t }), this;\n\t }, clone: function clone() {\n\t return this.map(function () {\n\t return this.cloneNode(!0);\n\t });\n\t }, hide: function hide() {\n\t return this.css(\"display\", \"none\");\n\t }, toggle: function toggle(e) {\n\t return this.each(function () {\n\t var i = n(this);(e === t ? \"none\" == i.css(\"display\") : e) ? i.show() : i.hide();\n\t });\n\t }, prev: function prev(t) {\n\t return n(this.pluck(\"previousElementSibling\")).filter(t || \"*\");\n\t }, next: function next(t) {\n\t return n(this.pluck(\"nextElementSibling\")).filter(t || \"*\");\n\t }, html: function html(t) {\n\t return 0 in arguments ? this.each(function (e) {\n\t var i = this.innerHTML;n(this).empty().append(Y(this, t, e, i));\n\t }) : 0 in this ? this[0].innerHTML : null;\n\t }, text: function text(t) {\n\t return 0 in arguments ? this.each(function (e) {\n\t var n = Y(this, t, e, this.textContent);this.textContent = null == n ? \"\" : \"\" + n;\n\t }) : 0 in this ? this[0].textContent : null;\n\t }, attr: function attr(n, i) {\n\t var r;return \"string\" != typeof n || 1 in arguments ? this.each(function (t) {\n\t if (1 === this.nodeType) if ($(n)) for (e in n) J(this, e, n[e]);else J(this, n, Y(this, i, t, this.getAttribute(n)));\n\t }) : this.length && 1 === this[0].nodeType ? !(r = this[0].getAttribute(n)) && n in this[0] ? this[0][n] : r : t;\n\t }, removeAttr: function removeAttr(t) {\n\t return this.each(function () {\n\t 1 === this.nodeType && t.split(\" \").forEach(function (t) {\n\t J(this, t);\n\t }, this);\n\t });\n\t }, prop: function prop(t, e) {\n\t return t = M[t] || t, 1 in arguments ? this.each(function (n) {\n\t this[t] = Y(this, e, n, this[t]);\n\t }) : this[0] && this[0][t];\n\t }, data: function data(e, n) {\n\t var i = \"data-\" + e.replace(g, \"-$1\").toLowerCase(),\n\t r = 1 in arguments ? this.attr(i, n) : this.attr(i);return null !== r ? K(r) : t;\n\t }, val: function val(t) {\n\t return 0 in arguments ? this.each(function (e) {\n\t this.value = Y(this, t, e, this.value);\n\t }) : this[0] && (this[0].multiple ? n(this[0]).find(\"option\").filter(function () {\n\t return this.selected;\n\t }).pluck(\"value\") : this[0].value);\n\t }, offset: function offset(t) {\n\t if (t) return this.each(function (e) {\n\t var i = n(this),\n\t r = Y(this, t, e, i.offset()),\n\t o = i.offsetParent().offset(),\n\t s = { top: r.top - o.top, left: r.left - o.left };\"static\" == i.css(\"position\") && (s.position = \"relative\"), i.css(s);\n\t });if (!this.length) return null;if (!n.contains(u.documentElement, this[0])) return { top: 0, left: 0 };var e = this[0].getBoundingClientRect();return { left: e.left + window.pageXOffset, top: e.top + window.pageYOffset, width: Math.round(e.width), height: Math.round(e.height) };\n\t }, css: function css(t, i) {\n\t if (arguments.length < 2) {\n\t var r,\n\t o = this[0];if (!o) return;if ((r = getComputedStyle(o, \"\"), \"string\" == typeof t)) return o.style[N(t)] || r.getPropertyValue(t);if (A(t)) {\n\t var s = {};return n.each(t, function (t, e) {\n\t s[e] = o.style[N(e)] || r.getPropertyValue(e);\n\t }), s;\n\t }\n\t }var a = \"\";if (\"string\" == D(t)) i || 0 === i ? a = z(t) + \":\" + _(t, i) : this.each(function () {\n\t this.style.removeProperty(z(t));\n\t });else for (e in t) t[e] || 0 === t[e] ? a += z(e) + \":\" + _(e, t[e]) + \";\" : this.each(function () {\n\t this.style.removeProperty(z(e));\n\t });return this.each(function () {\n\t this.style.cssText += \";\" + a;\n\t });\n\t }, index: function index(t) {\n\t return t ? this.indexOf(n(t)[0]) : this.parent().children().indexOf(this[0]);\n\t }, hasClass: function hasClass(t) {\n\t return t ? r.some.call(this, function (t) {\n\t return this.test(G(t));\n\t }, H(t)) : !1;\n\t }, addClass: function addClass(t) {\n\t return t ? this.each(function (e) {\n\t if (\"className\" in this) {\n\t i = [];var r = G(this),\n\t o = Y(this, t, e, r);o.split(/\\s+/g).forEach(function (t) {\n\t n(this).hasClass(t) || i.push(t);\n\t }, this), i.length && G(this, r + (r ? \" \" : \"\") + i.join(\" \"));\n\t }\n\t }) : this;\n\t }, removeClass: function removeClass(e) {\n\t return this.each(function (n) {\n\t if (\"className\" in this) {\n\t if (e === t) return G(this, \"\");i = G(this), Y(this, e, n, i).split(/\\s+/g).forEach(function (t) {\n\t i = i.replace(H(t), \" \");\n\t }), G(this, i.trim());\n\t }\n\t });\n\t }, toggleClass: function toggleClass(e, i) {\n\t return e ? this.each(function (r) {\n\t var o = n(this),\n\t s = Y(this, e, r, G(this));s.split(/\\s+/g).forEach(function (e) {\n\t (i === t ? !o.hasClass(e) : i) ? o.addClass(e) : o.removeClass(e);\n\t });\n\t }) : this;\n\t }, scrollTop: function scrollTop(e) {\n\t if (this.length) {\n\t var n = (\"scrollTop\" in this[0]);return e === t ? n ? this[0].scrollTop : this[0].pageYOffset : this.each(n ? function () {\n\t this.scrollTop = e;\n\t } : function () {\n\t this.scrollTo(this.scrollX, e);\n\t });\n\t }\n\t }, scrollLeft: function scrollLeft(e) {\n\t if (this.length) {\n\t var n = (\"scrollLeft\" in this[0]);return e === t ? n ? this[0].scrollLeft : this[0].pageXOffset : this.each(n ? function () {\n\t this.scrollLeft = e;\n\t } : function () {\n\t this.scrollTo(e, this.scrollY);\n\t });\n\t }\n\t }, position: function position() {\n\t if (this.length) {\n\t var t = this[0],\n\t e = this.offsetParent(),\n\t i = this.offset(),\n\t r = m.test(e[0].nodeName) ? { top: 0, left: 0 } : e.offset();return i.top -= parseFloat(n(t).css(\"margin-top\")) || 0, i.left -= parseFloat(n(t).css(\"margin-left\")) || 0, r.top += parseFloat(n(e[0]).css(\"border-top-width\")) || 0, r.left += parseFloat(n(e[0]).css(\"border-left-width\")) || 0, { top: i.top - r.top, left: i.left - r.left };\n\t }\n\t }, offsetParent: function offsetParent() {\n\t return this.map(function () {\n\t for (var t = this.offsetParent || u.body; t && !m.test(t.nodeName) && \"static\" == n(t).css(\"position\");) t = t.offsetParent;return t;\n\t });\n\t } }, n.fn.detach = n.fn.remove, [\"width\", \"height\"].forEach(function (e) {\n\t var i = e.replace(/./, function (t) {\n\t return t[0].toUpperCase();\n\t });n.fn[e] = function (r) {\n\t var o,\n\t s = this[0];return r === t ? k(s) ? s[\"inner\" + i] : Z(s) ? s.documentElement[\"scroll\" + i] : (o = this.offset()) && o[e] : this.each(function (t) {\n\t s = n(this), s.css(e, Y(this, r, t, s[e]()));\n\t });\n\t };\n\t }), y.forEach(function (t, e) {\n\t var i = e % 2;n.fn[t] = function () {\n\t var t,\n\t o,\n\t r = n.map(arguments, function (e) {\n\t return t = D(e), \"object\" == t || \"array\" == t || null == e ? e : C.fragment(e);\n\t }),\n\t s = this.length > 1;return r.length < 1 ? this : this.each(function (t, a) {\n\t o = i ? a : a.parentNode, a = 0 == e ? a.nextSibling : 1 == e ? a.firstChild : 2 == e ? a : null;var f = n.contains(u.documentElement, o);r.forEach(function (t) {\n\t if (s) t = t.cloneNode(!0);else if (!o) return n(t).remove();o.insertBefore(t, a), f && Q(t, function (t) {\n\t null == t.nodeName || \"SCRIPT\" !== t.nodeName.toUpperCase() || t.type && \"text/javascript\" !== t.type || t.src || window.eval.call(window, t.innerHTML);\n\t });\n\t });\n\t });\n\t }, n.fn[i ? t + \"To\" : \"insert\" + (e ? \"Before\" : \"After\")] = function (e) {\n\t return n(e)[t](this), this;\n\t };\n\t }), C.Z.prototype = X.prototype = n.fn, C.uniq = P, C.deserializeValue = K, n.zepto = C, n;\n\t})();window.Zepto = Zepto, void 0 === window.$ && (window.$ = Zepto), (function (t) {\n\t function l(t) {\n\t return t._zid || (t._zid = e++);\n\t }function h(t, e, n, i) {\n\t if ((e = p(e), e.ns)) var r = d(e.ns);return (s[l(t)] || []).filter(function (t) {\n\t return !(!t || e.e && t.e != e.e || e.ns && !r.test(t.ns) || n && l(t.fn) !== l(n) || i && t.sel != i);\n\t });\n\t }function p(t) {\n\t var e = (\"\" + t).split(\".\");return { e: e[0], ns: e.slice(1).sort().join(\" \") };\n\t }function d(t) {\n\t return new RegExp(\"(?:^| )\" + t.replace(\" \", \" .* ?\") + \"(?: |$)\");\n\t }function m(t, e) {\n\t return t.del && !u && t.e in f || !!e;\n\t }function g(t) {\n\t return c[t] || u && f[t] || t;\n\t }function v(e, i, r, o, a, u, f) {\n\t var h = l(e),\n\t d = s[h] || (s[h] = []);i.split(/\\s/).forEach(function (i) {\n\t if (\"ready\" == i) return t(document).ready(r);var s = p(i);s.fn = r, s.sel = a, s.e in c && (r = function (e) {\n\t var n = e.relatedTarget;return !n || n !== this && !t.contains(this, n) ? s.fn.apply(this, arguments) : void 0;\n\t }), s.del = u;var l = u || r;s.proxy = function (t) {\n\t if ((t = T(t), !t.isImmediatePropagationStopped())) {\n\t t.data = o;var i = l.apply(e, t._args == n ? [t] : [t].concat(t._args));return i === !1 && (t.preventDefault(), t.stopPropagation()), i;\n\t }\n\t }, s.i = d.length, d.push(s), \"addEventListener\" in e && e.addEventListener(g(s.e), s.proxy, m(s, f));\n\t });\n\t }function y(t, e, n, i, r) {\n\t var o = l(t);(e || \"\").split(/\\s/).forEach(function (e) {\n\t h(t, e, n, i).forEach(function (e) {\n\t delete s[o][e.i], \"removeEventListener\" in t && t.removeEventListener(g(e.e), e.proxy, m(e, r));\n\t });\n\t });\n\t }function T(e, i) {\n\t return (i || !e.isDefaultPrevented) && (i || (i = e), t.each(E, function (t, n) {\n\t var r = i[t];e[t] = function () {\n\t return this[n] = w, r && r.apply(i, arguments);\n\t }, e[n] = x;\n\t }), (i.defaultPrevented !== n ? i.defaultPrevented : \"returnValue\" in i ? i.returnValue === !1 : i.getPreventDefault && i.getPreventDefault()) && (e.isDefaultPrevented = w)), e;\n\t }function j(t) {\n\t var e,\n\t i = { originalEvent: t };for (e in t) b.test(e) || t[e] === n || (i[e] = t[e]);return T(i, t);\n\t }var n,\n\t e = 1,\n\t i = Array.prototype.slice,\n\t r = t.isFunction,\n\t o = function o(t) {\n\t return \"string\" == typeof t;\n\t },\n\t s = {},\n\t a = {},\n\t u = (\"onfocusin\" in window),\n\t f = { focus: \"focusin\", blur: \"focusout\" },\n\t c = { mouseenter: \"mouseover\", mouseleave: \"mouseout\" };a.click = a.mousedown = a.mouseup = a.mousemove = \"MouseEvents\", t.event = { add: v, remove: y }, t.proxy = function (e, n) {\n\t var s = 2 in arguments && i.call(arguments, 2);if (r(e)) {\n\t var a = function a() {\n\t return e.apply(n, s ? s.concat(i.call(arguments)) : arguments);\n\t };return a._zid = l(e), a;\n\t }if (o(n)) return s ? (s.unshift(e[n], e), t.proxy.apply(null, s)) : t.proxy(e[n], e);throw new TypeError(\"expected function\");\n\t }, t.fn.bind = function (t, e, n) {\n\t return this.on(t, e, n);\n\t }, t.fn.unbind = function (t, e) {\n\t return this.off(t, e);\n\t }, t.fn.one = function (t, e, n, i) {\n\t return this.on(t, e, n, i, 1);\n\t };var w = function w() {\n\t return !0;\n\t },\n\t x = function x() {\n\t return !1;\n\t },\n\t b = /^([A-Z]|returnValue$|layer[XY]$)/,\n\t E = { preventDefault: \"isDefaultPrevented\", stopImmediatePropagation: \"isImmediatePropagationStopped\", stopPropagation: \"isPropagationStopped\" };t.fn.delegate = function (t, e, n) {\n\t return this.on(e, t, n);\n\t }, t.fn.undelegate = function (t, e, n) {\n\t return this.off(e, t, n);\n\t }, t.fn.live = function (e, n) {\n\t return t(document.body).delegate(this.selector, e, n), this;\n\t }, t.fn.die = function (e, n) {\n\t return t(document.body).undelegate(this.selector, e, n), this;\n\t }, t.fn.on = function (e, s, a, u, f) {\n\t var c,\n\t l,\n\t h = this;return e && !o(e) ? (t.each(e, function (t, e) {\n\t h.on(t, s, a, e, f);\n\t }), h) : (o(s) || r(u) || u === !1 || (u = a, a = s, s = n), (u === n || a === !1) && (u = a, a = n), u === !1 && (u = x), h.each(function (n, r) {\n\t f && (c = function (t) {\n\t return y(r, t.type, u), u.apply(this, arguments);\n\t }), s && (l = function (e) {\n\t var n,\n\t o = t(e.target).closest(s, r).get(0);return o && o !== r ? (n = t.extend(j(e), { currentTarget: o, liveFired: r }), (c || u).apply(o, [n].concat(i.call(arguments, 1)))) : void 0;\n\t }), v(r, e, u, a, s, l || c);\n\t }));\n\t }, t.fn.off = function (e, i, s) {\n\t var a = this;return e && !o(e) ? (t.each(e, function (t, e) {\n\t a.off(t, i, e);\n\t }), a) : (o(i) || r(s) || s === !1 || (s = i, i = n), s === !1 && (s = x), a.each(function () {\n\t y(this, e, s, i);\n\t }));\n\t }, t.fn.trigger = function (e, n) {\n\t return e = o(e) || t.isPlainObject(e) ? t.Event(e) : T(e), e._args = n, this.each(function () {\n\t e.type in f && \"function\" == typeof this[e.type] ? this[e.type]() : \"dispatchEvent\" in this ? this.dispatchEvent(e) : t(this).triggerHandler(e, n);\n\t });\n\t }, t.fn.triggerHandler = function (e, n) {\n\t var i, r;return this.each(function (s, a) {\n\t i = j(o(e) ? t.Event(e) : e), i._args = n, i.target = a, t.each(h(a, e.type || e), function (t, e) {\n\t return r = e.proxy(i), i.isImmediatePropagationStopped() ? !1 : void 0;\n\t });\n\t }), r;\n\t }, \"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function (e) {\n\t t.fn[e] = function (t) {\n\t return 0 in arguments ? this.bind(e, t) : this.trigger(e);\n\t };\n\t }), t.Event = function (t, e) {\n\t o(t) || (e = t, t = e.type);var n = document.createEvent(a[t] || \"Events\"),\n\t i = !0;if (e) for (var r in e) \"bubbles\" == r ? i = !!e[r] : n[r] = e[r];return n.initEvent(t, i, !0), T(n);\n\t };\n\t})(Zepto), (function (t) {\n\t function h(e, n, i) {\n\t var r = t.Event(n);return t(e).trigger(r, i), !r.isDefaultPrevented();\n\t }function p(t, e, i, r) {\n\t return t.global ? h(e || n, i, r) : void 0;\n\t }function d(e) {\n\t e.global && 0 === t.active++ && p(e, null, \"ajaxStart\");\n\t }function m(e) {\n\t e.global && ! --t.active && p(e, null, \"ajaxStop\");\n\t }function g(t, e) {\n\t var n = e.context;return e.beforeSend.call(n, t, e) === !1 || p(e, n, \"ajaxBeforeSend\", [t, e]) === !1 ? !1 : void p(e, n, \"ajaxSend\", [t, e]);\n\t }function v(t, e, n, i) {\n\t var r = n.context,\n\t o = \"success\";n.success.call(r, t, o, e), i && i.resolveWith(r, [t, o, e]), p(n, r, \"ajaxSuccess\", [e, n, t]), w(o, e, n);\n\t }function y(t, e, n, i, r) {\n\t var o = i.context;i.error.call(o, n, e, t), r && r.rejectWith(o, [n, e, t]), p(i, o, \"ajaxError\", [n, i, t || e]), w(e, n, i);\n\t }function w(t, e, n) {\n\t var i = n.context;n.complete.call(i, e, t), p(n, i, \"ajaxComplete\", [e, n]), m(n);\n\t }function x() {}function b(t) {\n\t return t && (t = t.split(\";\", 2)[0]), t && (t == f ? \"html\" : t == u ? \"json\" : s.test(t) ? \"script\" : a.test(t) && \"xml\") || \"text\";\n\t }function E(t, e) {\n\t return \"\" == e ? t : (t + \"&\" + e).replace(/[&?]{1,2}/, \"?\");\n\t }function T(e) {\n\t e.processData && e.data && \"string\" != t.type(e.data) && (e.data = t.param(e.data, e.traditional)), !e.data || e.type && \"GET\" != e.type.toUpperCase() || (e.url = E(e.url, e.data), e.data = void 0);\n\t }function j(e, n, i, r) {\n\t return t.isFunction(n) && (r = i, i = n, n = void 0), t.isFunction(i) || (r = i, i = void 0), { url: e, data: n, success: i, dataType: r };\n\t }function C(e, n, i, r) {\n\t var o,\n\t s = t.isArray(n),\n\t a = t.isPlainObject(n);t.each(n, function (n, u) {\n\t o = t.type(u), r && (n = i ? r : r + \"[\" + (a || \"object\" == o || \"array\" == o ? n : \"\") + \"]\"), !r && s ? e.add(u.name, u.value) : \"array\" == o || !i && \"object\" == o ? C(e, u, i, n) : e.add(n, u);\n\t });\n\t }var i,\n\t r,\n\t e = 0,\n\t n = window.document,\n\t o = /\n\t * \n\t * ```\n\t * Now, create the player:\n\t * ```html\n\t * \n\t *
\n\t * \n\t * \n\t * ```\n\t */\n\t\n\tvar Player = (function (_BaseObject) {\n\t _inherits(Player, _BaseObject);\n\t\n\t _createClass(Player, [{\n\t key: 'loader',\n\t set: function set(loader) {\n\t this._loader = loader;\n\t },\n\t get: function get() {\n\t return this._loader = this._loader || new _componentsLoader2['default'](this.options.plugins || {}, this.options.playerId);\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.core.mediaControl.container.ended;\n\t }\n\t\n\t /**\n\t * Determine if the playback is having to buffer in order for\n\t * playback to be smooth.\n\t * (i.e if a live stream is playing smoothly, this will be false)\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return this.core.mediaControl.container.buffering;\n\t }\n\t\n\t /*\n\t * determine if the player is ready.\n\t * @property isReady\n\t * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n\t */\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return !!this.ready;\n\t }\n\t\n\t /**\n\t * ## Player's constructor\n\t *\n\t * You might pass the options object to build the player.\n\t * ```javascript\n\t * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n\t * var player = new Clappr.Player(options);\n\t * ```\n\t *\n\t * @method constructor\n\t * @param {Object} options Data\n\t * options to build a player instance\n\t * @param {Number} [options.width]\n\t * player's width **default**: `640`\n\t * @param {Number} [options.height]\n\t * player's height **default**: `360`\n\t * @param {String} [options.parentId]\n\t * the id of the element on the page that the player should be inserted into\n\t * @param {Object} [options.parent]\n\t * a reference to a dom element that the player should be inserted into\n\t * @param {String} [options.source]\n\t * The media source URL, or {source: <>, mimeType: <>}\n\t * @param {Object} [options.sources]\n\t * An array of media source URL's, or an array of {source: <>, mimeType: <>}\n\t * @param {Boolean} [options.autoPlay]\n\t * automatically play after page load **default**: `false`\n\t * @param {Boolean} [options.loop]\n\t * automatically replay after it ends **default**: `false`\n\t * @param {Boolean} [options.chromeless]\n\t * player acts in chromeless mode **default**: `false`\n\t * @param {Boolean} [options.muted]\n\t * start the video muted **default**: `false`\n\t * @param {String} [options.mimeType]\n\t * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n\t * @param {String} [options.actualLiveTime]\n\t * show duration and seek time relative to actual time.\n\t * @param {String} [options.actualLiveServerTime]\n\t * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n\t * @param {Boolean} [options.persistConfig]\n\t * persist player's settings (volume) through the same domain **default**: `true`\n\t * @param {String} [options.preload]\n\t * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n\t * @param {Number} [options.maxBufferLength]\n\t * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD. This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks. To change this behavior use `maxBufferLength` where **value is in seconds**.\n\t * @param {String} [options.gaAccount]\n\t * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n\t * @param {String} [options.gaTrackerName]\n\t * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n\t * @param {Object} [options.mediacontrol]\n\t * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n\t * @param {Boolean} [options.hideMediaControl]\n\t * control media control auto hide **default**: `true`\n\t * @param {Boolean} [options.hideVolumeBar]\n\t * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n\t * @param {String} [options.watermark]\n\t * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video. You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n\t * @param {String} [options.watermarkLink]\n\t * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable. \n\t * @param {Boolean} [options.disableVideoTagContextMenu]\n\t * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n\t * @param {Boolean} [options.autoSeekFromUrl]\n\t * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n\t * @param {String} [options.poster]\n\t * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n\t * @param {String} [options.playbackNotSupportedMessage]\n\t * define a custom message to be displayed when a playback is not supported.\n\t * @param {Object} [options.events]\n\t * Specify listeners which will be registered with their corresponding player events.\n\t * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n\t */\n\t }]);\n\t\n\t function Player(options) {\n\t _classCallCheck(this, Player);\n\t\n\t _get(Object.getPrototypeOf(Player.prototype), 'constructor', this).call(this, options);\n\t var defaultOptions = { playerId: (0, _baseUtils.uniqueId)(\"\"), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl };\n\t this.options = _clapprZepto2['default'].extend(defaultOptions, options);\n\t this.options.sources = this.normalizeSources(options);\n\t this.registerOptionEventListeners();\n\t this.coreFactory = new _componentsCore_factory2['default'](this);\n\t this.playerInfo = _componentsPlayer_info2['default'].getInstance(this.options.playerId);\n\t this.playerInfo.currentSize = { width: options.width, height: options.height };\n\t this.playerInfo.options = this.options;\n\t if (this.options.parentId) {\n\t this.setParentId(this.options.parentId);\n\t } else if (this.options.parent) {\n\t this.attachTo(this.options.parent);\n\t }\n\t }\n\t\n\t /**\n\t * Specify a `parentId` to the player.\n\t * @method setParentId\n\t * @param {String} parentId the element parent id.\n\t */\n\t\n\t _createClass(Player, [{\n\t key: 'setParentId',\n\t value: function setParentId(parentId) {\n\t var el = document.querySelector(parentId);\n\t if (el) {\n\t this.attachTo(el);\n\t }\n\t }\n\t\n\t /**\n\t * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n\t * @method attachTo\n\t * @param {Object} element a given element.\n\t */\n\t }, {\n\t key: 'attachTo',\n\t value: function attachTo(element) {\n\t this.options.parentElement = element;\n\t this.core = this.coreFactory.create();\n\t this.addEventListeners();\n\t }\n\t }, {\n\t key: 'addEventListeners',\n\t value: function addEventListeners() {\n\t if (!this.core.isReady) {\n\t this.listenToOnce(this.core, _baseEvents2['default'].CORE_READY, this.onReady);\n\t } else {\n\t this.onReady();\n\t }\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t }\n\t }, {\n\t key: 'addContainerEventListeners',\n\t value: function addContainerEventListeners() {\n\t var container = this.core.mediaControl.container;\n\t if (!!container) {\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_PAUSE, this.onPause);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_SEEK, this.onSeek);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ERROR, this.onError);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.onTimeUpdate);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_VOLUME, this.onVolumeUpdate);\n\t }\n\t }\n\t }, {\n\t key: 'registerOptionEventListeners',\n\t value: function registerOptionEventListeners() {\n\t var _this = this;\n\t\n\t var eventsMapping = {\n\t \"onReady\": _baseEvents2['default'].PLAYER_READY,\n\t \"onResize\": _baseEvents2['default'].PLAYER_RESIZE,\n\t \"onPlay\": _baseEvents2['default'].PLAYER_PLAY,\n\t \"onPause\": _baseEvents2['default'].PLAYER_PAUSE,\n\t \"onStop\": _baseEvents2['default'].PLAYER_STOP,\n\t \"onEnded\": _baseEvents2['default'].PLAYER_ENDED,\n\t \"onSeek\": _baseEvents2['default'].PLAYER_SEEK,\n\t \"onError\": _baseEvents2['default'].PLAYER_ERROR,\n\t \"onTimeUpdate\": _baseEvents2['default'].PLAYER_TIMEUPDATE,\n\t \"onVolumeUpdate\": _baseEvents2['default'].PLAYER_VOLUMEUPDATE\n\t };\n\t var userEvents = this.options.events || {};\n\t\n\t Object.keys(userEvents).forEach(function (userEvent) {\n\t var eventType = eventsMapping[userEvent];\n\t if (eventType) {\n\t var eventFunction = userEvents[userEvent];\n\t eventFunction = typeof eventFunction === \"function\" && eventFunction;\n\t eventFunction && _this.listenTo(_this, eventType, eventFunction);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.addEventListeners();\n\t }\n\t }, {\n\t key: 'onReady',\n\t value: function onReady() {\n\t this.ready = true;\n\t this.addContainerEventListeners();\n\t this.trigger(_baseEvents2['default'].PLAYER_READY);\n\t }\n\t }, {\n\t key: 'onVolumeUpdate',\n\t value: function onVolumeUpdate(volume) {\n\t this.trigger(_baseEvents2['default'].PLAYER_VOLUMEUPDATE, volume);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.trigger(_baseEvents2['default'].PLAYER_PLAY);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.trigger(_baseEvents2['default'].PLAYER_PAUSE);\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.trigger(_baseEvents2['default'].PLAYER_STOP, this.getCurrentTime());\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.trigger(_baseEvents2['default'].PLAYER_ENDED);\n\t }\n\t }, {\n\t key: 'onSeek',\n\t value: function onSeek(time) {\n\t this.trigger(_baseEvents2['default'].PLAYER_SEEK, time);\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate(timeProgress) {\n\t this.trigger(_baseEvents2['default'].PLAYER_TIMEUPDATE, timeProgress);\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError(error) {\n\t this.trigger(_baseEvents2['default'].PLAYER_ERROR, error);\n\t }\n\t }, {\n\t key: 'is',\n\t value: function is(value, type) {\n\t return value.constructor === type;\n\t }\n\t }, {\n\t key: 'normalizeSources',\n\t value: function normalizeSources(options) {\n\t var sources = options.sources || (options.source !== undefined ? [options.source] : []);\n\t return sources.length === 0 ? [{ source: \"\", mimeType: \"\" }] : sources;\n\t }\n\t\n\t /**\n\t * resizes the current player canvas.\n\t * @method resize\n\t * @param {Object} size should be a literal object with `height` and `width`.\n\t * @example\n\t * ```javascript\n\t * player.resize({height: 360, width: 640})\n\t * ```\n\t */\n\t }, {\n\t key: 'resize',\n\t value: function resize(size) {\n\t this.core.resize(size);\n\t }\n\t\n\t /**\n\t * loads a new source.\n\t * @method load\n\t * @param {Object} sources source or sources of video.\n\t * sources can be a string or {source: <>, mimeType: <>}\n\t * @param {Object} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n\t *\n\t */\n\t }, {\n\t key: 'load',\n\t value: function load(sources, mimeType) {\n\t this.core.load(sources, mimeType);\n\t }\n\t\n\t /**\n\t * destroys the current player and removes it from the DOM.\n\t * @method destroy\n\t */\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.core.destroy();\n\t }\n\t\n\t /**\n\t * plays the current video (`source`).\n\t * @method play\n\t */\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t this.core.mediaControl.container.play();\n\t }\n\t\n\t /**\n\t * pauses the current video (`source`).\n\t * @method pause\n\t */\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.core.mediaControl.container.pause();\n\t }\n\t\n\t /**\n\t * stops the current video (`source`).\n\t * @method stop\n\t */\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.core.mediaControl.container.stop();\n\t }\n\t\n\t /**\n\t * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n\t * @method seek\n\t * @param {Number} time should be a number between 0 and the video duration.\n\t */\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t this.core.mediaControl.container.seek(time);\n\t }\n\t\n\t /**\n\t * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n\t * @method seekPercentage\n\t * @param {Number} time should be a number between 0 and 100.\n\t */\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t this.core.mediaControl.container.seekPercentage(percentage);\n\t }\n\t\n\t /**\n\t * Set the volume for the current video (`source`).\n\t * @method setVolume\n\t * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n\t */\n\t }, {\n\t key: 'setVolume',\n\t value: function setVolume(volume) {\n\t this.core.mediaControl.container.setVolume(volume);\n\t }\n\t\n\t /**\n\t * Get the volume for the current video\n\t * @method getVolume\n\t * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n\t */\n\t }, {\n\t key: 'getVolume',\n\t value: function getVolume() {\n\t return this.core.mediaControl.container.volume;\n\t }\n\t\n\t /**\n\t * mutes the current video (`source`).\n\t * @method mute\n\t */\n\t }, {\n\t key: 'mute',\n\t value: function mute() {\n\t this.core.mediaControl.container.setVolume(0);\n\t }\n\t\n\t /**\n\t * unmutes the current video (`source`).\n\t * @method unmute\n\t */\n\t }, {\n\t key: 'unmute',\n\t value: function unmute() {\n\t this.core.mediaControl.container.setVolume(100);\n\t }\n\t\n\t /**\n\t * checks if the player is playing.\n\t * @method isPlaying\n\t * @return {Boolean} `true` if the current source is playing, otherwise `false`\n\t */\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return this.core.mediaControl.container.isPlaying();\n\t }\n\t\n\t /**\n\t * enables to configure a player after its creation\n\t * @method configure\n\t * @param {Object} options all the options to change in form of a javascript object\n\t */\n\t }, {\n\t key: 'configure',\n\t value: function configure(options) {\n\t this.core.configure(options);\n\t }\n\t\n\t /**\n\t * get a plugin by its name.\n\t * @method getPlugin\n\t * @param {String} name of the plugin.\n\t * @return {Object} the plugin instance\n\t * @example\n\t * ```javascript\n\t * var poster = player.getPlugin('poster');\n\t * poster.hidePlayButton();\n\t * ```\n\t */\n\t }, {\n\t key: 'getPlugin',\n\t value: function getPlugin(name) {\n\t var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins);\n\t return (0, _lodashFind2['default'])(plugins, function (plugin) {\n\t return plugin.name === name;\n\t });\n\t }\n\t\n\t /**\n\t * the current time in seconds.\n\t * @method getCurrentTime\n\t * @return {Number} current time (in seconds) of the current source\n\t */\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.core.mediaControl.container.getCurrentTime();\n\t }\n\t\n\t /**\n\t * the duration time in seconds.\n\t * @method getDuration\n\t * @return {Number} duration time (in seconds) of the current source\n\t */\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.core.mediaControl.container.getDuration();\n\t }\n\t }]);\n\t\n\t return Player;\n\t})(_baseBase_object2['default']);\n\t\n\texports['default'] = Player;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 105 */\n/*!******************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/base_flash_playback.js ***!\n \\******************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2015 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar _publicFlashHtml = __webpack_require__(/*! ./public/flash.html */ 147);\n\t\n\tvar _publicFlashHtml2 = _interopRequireDefault(_publicFlashHtml);\n\t\n\tvar _publicFlashScss = __webpack_require__(/*! ./public/flash.scss */ 137);\n\t\n\tvar _publicFlashScss2 = _interopRequireDefault(_publicFlashScss);\n\t\n\tvar IE_CLASSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';\n\t\n\tvar BaseFlashPlayback = (function (_Playback) {\n\t _inherits(BaseFlashPlayback, _Playback);\n\t\n\t function BaseFlashPlayback() {\n\t _classCallCheck(this, BaseFlashPlayback);\n\t\n\t _get(Object.getPrototypeOf(BaseFlashPlayback.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(BaseFlashPlayback, [{\n\t key: 'setElement',\n\t value: function setElement(element) {\n\t this.$el = element;\n\t this.el = element[0];\n\t }\n\t }, {\n\t key: 'setupFirefox',\n\t value: function setupFirefox() {\n\t var $el = this.$('embed');\n\t $el.attr('data-flash-playback', this.name);\n\t $el.addClass(this.attributes['class']);\n\t this.setElement($el);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.html(this.template({\n\t cid: this.cid,\n\t swfPath: this.swfPath,\n\t baseUrl: this.baseUrl,\n\t playbackId: this.uniqueId,\n\t wmode: this.wmode,\n\t callbackName: 'window.Clappr.flashlsCallbacks.' + this.cid }));\n\t\n\t if (_componentsBrowser2['default'].isIE) {\n\t this.$('embed').remove();\n\t\n\t if (_componentsBrowser2['default'].isLegacyIE) {\n\t this.$el.attr('classid', IE_CLASSID);\n\t }\n\t }\n\t\n\t if (_componentsBrowser2['default'].isFirefox) {\n\t this.setupFirefox();\n\t }\n\t\n\t this.el.id = this.cid;\n\t this.$el.append(_baseStyler2['default'].getStyleFor(_publicFlashScss2['default']));\n\t\n\t return this;\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'object';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return '';\n\t }\n\t }, {\n\t key: 'wmode',\n\t get: function get() {\n\t return 'transparent';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicFlashHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t var type = 'application/x-shockwave-flash';\n\t\n\t if (_componentsBrowser2['default'].isLegacyIE) {\n\t type = '';\n\t }\n\t\n\t return {\n\t 'class': 'clappr-flash-playback',\n\t type: type,\n\t width: '100%',\n\t height: '100%',\n\t 'data-flash-playback': this.name\n\t };\n\t }\n\t }]);\n\t\n\t return BaseFlashPlayback;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = BaseFlashPlayback;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 106 */\n/*!**************************************!*\\\n !*** ./src/playbacks/flash/flash.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _playbacksBase_flash_playback = __webpack_require__(/*! playbacks/base_flash_playback */ 26);\n\t\n\tvar _playbacksBase_flash_playback2 = _interopRequireDefault(_playbacksBase_flash_playback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 16);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _publicPlayerSwf = __webpack_require__(/*! ./public/Player.swf */ 155);\n\t\n\tvar _publicPlayerSwf2 = _interopRequireDefault(_publicPlayerSwf);\n\t\n\tvar MAX_ATTEMPTS = 60;\n\t\n\tvar Flash = (function (_BaseFlashPlayback) {\n\t _inherits(Flash, _BaseFlashPlayback);\n\t\n\t _createClass(Flash, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'flash';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicPlayerSwf2['default'])({ baseUrl: this.baseUrl });\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.currentState === \"ENDED\";\n\t }\n\t\n\t /**\n\t * Determine if the playback is buffering.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return !!this.bufferingState && this.currentState !== \"ENDED\";\n\t }\n\t }]);\n\t\n\t function Flash(options) {\n\t _classCallCheck(this, Flash);\n\t\n\t _get(Object.getPrototypeOf(Flash.prototype), 'constructor', this).call(this, options);\n\t this.src = options.src;\n\t this.baseUrl = options.baseUrl;\n\t this.autoPlay = options.autoPlay;\n\t this.settings = { 'default': ['seekbar'] };\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.right = [\"fullscreen\", \"volume\"];\n\t this.settings.seekEnabled = true;\n\t this.isReadyState = false;\n\t this.addListeners();\n\t }\n\t\n\t _createClass(Flash, [{\n\t key: 'bootstrap',\n\t value: function bootstrap() {\n\t var _this = this;\n\t\n\t if (this.el.playerPlay) {\n\t this.el.width = \"100%\";\n\t this.el.height = \"100%\";\n\t if (this.currentState === 'PLAYING') {\n\t this.firstPlay();\n\t } else {\n\t this.currentState = \"IDLE\";\n\t this.autoPlay && this.play();\n\t }\n\t (0, _clapprZepto2['default'])('
').insertAfter(this.$el);\n\t if (this.getDuration() > 0) {\n\t this.metadataLoaded();\n\t } else {\n\t _componentsMediator2['default'].once(this.uniqueId + ':timeupdate', this.metadataLoaded, this);\n\t }\n\t } else {\n\t this._attempts = this._attempts || 0;\n\t if (++this._attempts <= MAX_ATTEMPTS) {\n\t setTimeout(function () {\n\t return _this.bootstrap();\n\t }, 50);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { message: \"Max number of attempts reached\" }, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'metadataLoaded',\n\t value: function metadataLoaded() {\n\t this.isReadyState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE, this.name);\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].VOD;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return false;\n\t }\n\t }, {\n\t key: 'updateTime',\n\t value: function updateTime() {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.el.getPosition(), total: this.el.getDuration() }, this.name);\n\t }\n\t }, {\n\t key: 'addListeners',\n\t value: function addListeners() {\n\t _componentsMediator2['default'].on(this.uniqueId + ':progress', this.progress, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':timeupdate', this.updateTime, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':statechanged', this.checkState, this);\n\t _componentsMediator2['default'].on(this.uniqueId + ':flashready', this.bootstrap, this);\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(Flash.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.uniqueId + ':progress');\n\t _componentsMediator2['default'].off(this.uniqueId + ':timeupdate');\n\t _componentsMediator2['default'].off(this.uniqueId + ':statechanged');\n\t _componentsMediator2['default'].off(this.uniqueId + ':flashready');\n\t }\n\t }, {\n\t key: 'checkState',\n\t value: function checkState() {\n\t if (this.isIdle || this.currentState === \"PAUSED\") {\n\t return;\n\t } else if (this.currentState !== \"PLAYING_BUFFERING\" && this.el.getState() === \"PLAYING_BUFFERING\") {\n\t this.bufferingState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t this.currentState = \"PLAYING_BUFFERING\";\n\t } else if (this.el.getState() === \"PLAYING\") {\n\t this.bufferingState = false;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t this.currentState = \"PLAYING\";\n\t } else if (this.el.getState() === \"IDLE\") {\n\t this.currentState = \"IDLE\";\n\t } else if (this.el.getState() === \"ENDED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: this.el.getDuration() }, this.name);\n\t this.currentState = \"ENDED\";\n\t this.isIdle = true;\n\t }\n\t }\n\t }, {\n\t key: 'progress',\n\t value: function progress() {\n\t if (this.currentState !== \"IDLE\" && this.currentState !== \"ENDED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: 0,\n\t current: this.el.getBytesLoaded(),\n\t total: this.el.getBytesTotal()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'firstPlay',\n\t value: function firstPlay() {\n\t var _this2 = this;\n\t\n\t if (this.el.playerPlay) {\n\t this.isIdle = false;\n\t this.el.playerPlay(this.src);\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this2.checkInitialSeek();\n\t });\n\t this.currentState = \"PLAYING\";\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_READY, this.firstPlay);\n\t }\n\t }\n\t }, {\n\t key: 'checkInitialSeek',\n\t value: function checkInitialSeek() {\n\t var seekTime = (0, _baseUtils.seekStringToSeconds)(window.location.href);\n\t if (seekTime !== 0) {\n\t this.seekSeconds(seekTime);\n\t }\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (this.currentState === 'PAUSED' || this.currentState === 'PLAYING_BUFFERING') {\n\t this.currentState = \"PLAYING\";\n\t this.el.playerResume();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t } else if (this.currentState !== 'PLAYING') {\n\t this.firstPlay();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t var _this3 = this;\n\t\n\t if (this.isReady) {\n\t this.el.playerVolume(value);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this3.volume(value);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.currentState = \"PAUSED\";\n\t this.el.playerPause();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE, this.name);\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.el.playerStop();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return !!(this.isReady && this.currentState.indexOf(\"PLAYING\") > -1);\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.el.getDuration();\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var _this4 = this;\n\t\n\t if (this.el.getDuration() > 0) {\n\t var seekSeconds = this.el.getDuration() * (percentage / 100);\n\t this.seek(seekSeconds);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this4.seekPercentage(percentage);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t var _this5 = this;\n\t\n\t if (this.isReady && this.el.playerSeek) {\n\t this.el.playerSeek(time);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: this.el.getDuration() }, this.name);\n\t if (this.currentState === \"PAUSED\") {\n\t this.el.playerPause();\n\t }\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this5.seek(time);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t clearInterval(this.bootstrapId);\n\t _get(Object.getPrototypeOf(Flash.prototype), 'stopListening', this).call(this);\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return Flash;\n\t})(_playbacksBase_flash_playback2['default']);\n\t\n\texports['default'] = Flash;\n\t\n\tFlash.canPlay = function (resource) {\n\t if (!_componentsBrowser2['default'].hasFlash || !resource || resource.constructor !== String) {\n\t return false;\n\t } else {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t return resourceParts.length > 1 && !_componentsBrowser2['default'].isMobile && resourceParts[1].match(/^(mp4|mov|f4v|3gpp|3gp)$/);\n\t }\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 107 */\n/*!******************************************!*\\\n !*** ./src/playbacks/flashls/flashls.js ***!\n \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _playbacksBase_flash_playback = __webpack_require__(/*! playbacks/base_flash_playback */ 26);\n\t\n\tvar _playbacksBase_flash_playback2 = _interopRequireDefault(_playbacksBase_flash_playback);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 16);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _flashls_events = __webpack_require__(/*! ./flashls_events */ 108);\n\t\n\tvar _flashls_events2 = _interopRequireDefault(_flashls_events);\n\t\n\tvar _publicHLSPlayerSwf = __webpack_require__(/*! ./public/HLSPlayer.swf */ 156);\n\t\n\tvar _publicHLSPlayerSwf2 = _interopRequireDefault(_publicHLSPlayerSwf);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar MAX_ATTEMPTS = 60;\n\tvar AUTO = -1;\n\t\n\tvar FlasHLS = (function (_BaseFlashPlayback) {\n\t _inherits(FlasHLS, _BaseFlashPlayback);\n\t\n\t _createClass(FlasHLS, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'flashls';\n\t }\n\t }, {\n\t key: 'swfPath',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicHLSPlayerSwf2['default'])({ baseUrl: this.baseUrl });\n\t }\n\t }, {\n\t key: 'levels',\n\t get: function get() {\n\t return this._levels || [];\n\t }\n\t }, {\n\t key: 'currentLevel',\n\t get: function get() {\n\t return this._currentLevel || AUTO;\n\t },\n\t set: function set(id) {\n\t this._currentLevel = id;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_START);\n\t this.el.playerSetCurrentLevel(id);\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.hasEnded;\n\t }\n\t\n\t /**\n\t * Determine if the playback is buffering.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return !!this.bufferingState && !this.hasEnded;\n\t }\n\t }]);\n\t\n\t function FlasHLS(options) {\n\t _classCallCheck(this, FlasHLS);\n\t\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'constructor', this).call(this, options);\n\t this.src = options.src;\n\t this.baseUrl = options.baseUrl;\n\t this.initHlsParameters(options);\n\t this.highDefinition = false;\n\t this.autoPlay = options.autoPlay;\n\t this.loop = options.loop;\n\t this.defaultSettings = {\n\t left: [\"playstop\"],\n\t 'default': ['seekbar'],\n\t right: [\"fullscreen\", \"volume\", \"hd-indicator\"],\n\t seekEnabled: false\n\t };\n\t this.settings = _clapprZepto2['default'].extend({}, this.defaultSettings);\n\t this.playbackType = _basePlayback2['default'].LIVE;\n\t this.hasEnded = false;\n\t this.addListeners();\n\t }\n\t\n\t _createClass(FlasHLS, [{\n\t key: 'initHlsParameters',\n\t value: function initHlsParameters(options) {\n\t this.autoStartLoad = options.autoStartLoad === undefined ? true : options.autoStartLoad;\n\t this.capLevelToStage = options.capLevelToStage === undefined ? false : options.capLevelToStage;\n\t this.maxLevelCappingMode = options.maxLevelCappingMode === undefined ? \"downscale\" : options.maxLevelCappingMode;\n\t this.minBufferLength = options.minBufferLength === undefined ? -1 : options.minBufferLength;\n\t this.minBufferLengthCapping = options.minBufferLengthCapping === undefined ? -1 : options.minBufferLengthCapping;\n\t this.maxBufferLength = options.maxBufferLength === undefined ? 120 : options.maxBufferLength;\n\t this.maxBackBufferLength = options.maxBackBufferLength === undefined ? 30 : options.maxBackBufferLength;\n\t this.lowBufferLength = options.lowBufferLength === undefined ? 3 : options.lowBufferLength;\n\t this.mediaTimePeriod = options.mediaTimePeriod === undefined ? 100 : options.mediaTimePeriod;\n\t this.fpsDroppedMonitoringPeriod = options.fpsDroppedMonitoringPeriod === undefined ? 5000 : options.fpsDroppedMonitoringPeriod;\n\t this.fpsDroppedMonitoringThreshold = options.fpsDroppedMonitoringThreshold === undefined ? 0.2 : options.fpsDroppedMonitoringThreshold;\n\t this.capLevelonFPSDrop = options.capLevelonFPSDrop === undefined ? false : options.capLevelonFPSDrop;\n\t this.smoothAutoSwitchonFPSDrop = options.smoothAutoSwitchonFPSDrop === undefined ? this.capLevelonFPSDrop : options.smoothAutoSwitchonFPSDrop;\n\t this.switchDownOnLevelError = options.switchDownOnLevelError === undefined ? true : options.switchDownOnLevelError;\n\t this.seekMode = options.seekMode === undefined ? \"ACCURATE\" : options.seekMode;\n\t this.keyLoadMaxRetry = options.keyLoadMaxRetry === undefined ? 3 : options.keyLoadMaxRetry;\n\t this.keyLoadMaxRetryTimeout = options.keyLoadMaxRetryTimeout === undefined ? 64000 : options.keyLoadMaxRetryTimeout;\n\t this.fragmentLoadMaxRetry = options.fragmentLoadMaxRetry === undefined ? 3 : options.fragmentLoadMaxRetry;\n\t this.fragmentLoadMaxRetryTimeout = options.fragmentLoadMaxRetryTimeout === undefined ? 4000 : options.fragmentLoadMaxRetryTimeout;\n\t this.fragmentLoadSkipAfterMaxRetry = options.fragmentLoadSkipAfterMaxRetry === undefined ? true : options.fragmentLoadSkipAfterMaxRetry;\n\t this.maxSkippedFragments = options.maxSkippedFragments === undefined ? 5 : options.maxSkippedFragments;\n\t this.flushLiveURLCache = options.flushLiveURLCache === undefined ? false : options.flushLiveURLCache;\n\t this.initialLiveManifestSize = options.initialLiveManifestSize === undefined ? 1 : options.initialLiveManifestSize;\n\t this.manifestLoadMaxRetry = options.manifestLoadMaxRetry === undefined ? 3 : options.manifestLoadMaxRetry;\n\t this.manifestLoadMaxRetryTimeout = options.manifestLoadMaxRetryTimeout === undefined ? 64000 : options.manifestLoadMaxRetryTimeout;\n\t this.manifestRedundantLoadmaxRetry = options.manifestRedundantLoadmaxRetry === undefined ? 3 : options.manifestRedundantLoadmaxRetry;\n\t this.startFromBitrate = options.startFromBitrate === undefined ? -1 : options.startFromBitrate;\n\t this.startFromLevel = options.startFromLevel === undefined ? -1 : options.startFromLevel;\n\t this.autoStartMaxDuration = options.autoStartMaxDuration === undefined ? -1 : options.autoStartMaxDuration;\n\t this.seekFromLevel = options.seekFromLevel === undefined ? -1 : options.seekFromLevel;\n\t this.useHardwareVideoDecoder = options.useHardwareVideoDecoder === undefined ? false : options.useHardwareVideoDecoder;\n\t this.hlsLogEnabled = options.hlsLogEnabled === undefined ? true : options.hlsLogEnabled;\n\t this.logDebug = options.logDebug === undefined ? false : options.logDebug;\n\t this.logDebug2 = options.logDebug2 === undefined ? false : options.logDebug2;\n\t this.logWarn = options.logWarn === undefined ? true : options.logWarn;\n\t this.logError = options.logError === undefined ? true : options.logError;\n\t this.hlsMinimumDvrSize = options.hlsMinimumDvrSize === undefined ? 60 : options.hlsMinimumDvrSize;\n\t }\n\t }, {\n\t key: 'addListeners',\n\t value: function addListeners() {\n\t var _this = this;\n\t\n\t _componentsMediator2['default'].on(this.cid + ':flashready', function () {\n\t return _this.bootstrap();\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':timeupdate', function (timeMetrics) {\n\t return _this.updateTime(timeMetrics);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':playbackstate', function (state) {\n\t return _this.setPlaybackState(state);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':levelchanged', function (level) {\n\t return _this.levelChanged(level);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':error', function (code, url, message) {\n\t return _this.flashPlaybackError(code, url, message);\n\t });\n\t _componentsMediator2['default'].on(this.cid + ':fragmentloaded', function (loadmetrics) {\n\t return _this.onFragmentLoaded(loadmetrics);\n\t });\n\t _componentsMediator2['default'].once(this.cid + ':manifestloaded', function (duration, loadmetrics) {\n\t return _this.manifestLoaded(duration, loadmetrics);\n\t });\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.cid + ':flashready');\n\t _componentsMediator2['default'].off(this.cid + ':timeupdate');\n\t _componentsMediator2['default'].off(this.cid + ':playbackstate');\n\t _componentsMediator2['default'].off(this.cid + ':levelchanged');\n\t _componentsMediator2['default'].off(this.cid + ':playbackerror');\n\t _componentsMediator2['default'].off(this.cid + ':fragmentloaded');\n\t _componentsMediator2['default'].off(this.cid + ':manifestloaded');\n\t }\n\t }, {\n\t key: 'bootstrap',\n\t value: function bootstrap() {\n\t var _this2 = this;\n\t\n\t if (this.el.playerLoad) {\n\t this.el.width = \"100%\";\n\t this.el.height = \"100%\";\n\t this.isReadyState = true;\n\t this.srcLoaded = false;\n\t this.currentState = \"IDLE\";\n\t this.setFlashSettings();\n\t this.updatePlaybackType();\n\t if (this.autoPlay || this._shouldPlayOnBootstrap) {\n\t this.play();\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t } else {\n\t this._bootstrapAttempts = this._bootstrapAttempts || 0;\n\t if (++this._bootstrapAttempts <= MAX_ATTEMPTS) {\n\t setTimeout(function () {\n\t return _this2.bootstrap();\n\t }, 50);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { message: \"Max number of attempts reached\" }, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'setFlashSettings',\n\t value: function setFlashSettings() {\n\t this.el.playerSetAutoStartLoad(this.autoStartLoad);\n\t this.el.playerSetCapLevelToStage(this.capLevelToStage);\n\t this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode);\n\t this.el.playerSetMinBufferLength(this.minBufferLength);\n\t this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping);\n\t this.el.playerSetMaxBufferLength(this.maxBufferLength);\n\t this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength);\n\t this.el.playerSetLowBufferLength(this.lowBufferLength);\n\t this.el.playerSetMediaTimePeriod(this.mediaTimePeriod);\n\t this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod);\n\t this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold);\n\t this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop);\n\t this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop);\n\t this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError);\n\t this.el.playerSetSeekMode(this.seekMode);\n\t this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry);\n\t this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout);\n\t this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry);\n\t this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout);\n\t this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry);\n\t this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments);\n\t this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache);\n\t this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize);\n\t this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry);\n\t this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout);\n\t this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry);\n\t this.el.playerSetStartFromBitrate(this.startFromBitrate);\n\t this.el.playerSetStartFromLevel(this.startFromLevel);\n\t this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration);\n\t this.el.playerSetSeekFromLevel(this.seekFromLevel);\n\t this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder);\n\t this.el.playerSetLogInfo(this.hlsLogEnabled);\n\t this.el.playerSetLogDebug(this.logDebug);\n\t this.el.playerSetLogDebug2(this.logDebug2);\n\t this.el.playerSetLogWarn(this.logWarn);\n\t this.el.playerSetLogError(this.logError);\n\t }\n\t }, {\n\t key: 'setAutoStartLoad',\n\t value: function setAutoStartLoad(autoStartLoad) {\n\t this.autoStartLoad = autoStartLoad;\n\t this.el.playerSetAutoStartLoad(this.autoStartLoad);\n\t }\n\t }, {\n\t key: 'setCapLevelToStage',\n\t value: function setCapLevelToStage(capLevelToStage) {\n\t this.capLevelToStage = capLevelToStage;\n\t this.el.playerSetCapLevelToStage(this.capLevelToStage);\n\t }\n\t }, {\n\t key: 'setMaxLevelCappingMode',\n\t value: function setMaxLevelCappingMode(maxLevelCappingMode) {\n\t this.maxLevelCappingMode = maxLevelCappingMode;\n\t this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode);\n\t }\n\t }, {\n\t key: 'setSetMinBufferLength',\n\t value: function setSetMinBufferLength(minBufferLength) {\n\t this.minBufferLength = minBufferLength;\n\t this.el.playerSetMinBufferLength(this.minBufferLength);\n\t }\n\t }, {\n\t key: 'setMinBufferLengthCapping',\n\t value: function setMinBufferLengthCapping(minBufferLengthCapping) {\n\t this.minBufferLengthCapping = minBufferLengthCapping;\n\t this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping);\n\t }\n\t }, {\n\t key: 'setMaxBufferLength',\n\t value: function setMaxBufferLength(maxBufferLength) {\n\t this.maxBufferLength = maxBufferLength;\n\t this.el.playerSetMaxBufferLength(this.maxBufferLength);\n\t }\n\t }, {\n\t key: 'setMaxBackBufferLength',\n\t value: function setMaxBackBufferLength(maxBackBufferLength) {\n\t this.maxBackBufferLength = maxBackBufferLength;\n\t this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength);\n\t }\n\t }, {\n\t key: 'setLowBufferLength',\n\t value: function setLowBufferLength(lowBufferLength) {\n\t this.lowBufferLength = lowBufferLength;\n\t this.el.playerSetLowBufferLength(this.lowBufferLength);\n\t }\n\t }, {\n\t key: 'setMediaTimePeriod',\n\t value: function setMediaTimePeriod(mediaTimePeriod) {\n\t this.mediaTimePeriod = mediaTimePeriod;\n\t this.el.playerSetMediaTimePeriod(this.mediaTimePeriod);\n\t }\n\t }, {\n\t key: 'setFpsDroppedMonitoringPeriod',\n\t value: function setFpsDroppedMonitoringPeriod(fpsDroppedMonitoringPeriod) {\n\t this.fpsDroppedMonitoringPeriod = fpsDroppedMonitoringPeriod;\n\t this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod);\n\t }\n\t }, {\n\t key: 'setFpsDroppedMonitoringThreshold',\n\t value: function setFpsDroppedMonitoringThreshold(fpsDroppedMonitoringThreshold) {\n\t this.fpsDroppedMonitoringThreshold = fpsDroppedMonitoringThreshold;\n\t this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold);\n\t }\n\t }, {\n\t key: 'setCapLevelonFPSDrop',\n\t value: function setCapLevelonFPSDrop(capLevelonFPSDrop) {\n\t this.capLevelonFPSDrop = capLevelonFPSDrop;\n\t this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop);\n\t }\n\t }, {\n\t key: 'setSmoothAutoSwitchonFPSDrop',\n\t value: function setSmoothAutoSwitchonFPSDrop(smoothAutoSwitchonFPSDrop) {\n\t this.smoothAutoSwitchonFPSDrop = smoothAutoSwitchonFPSDrop;\n\t this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop);\n\t }\n\t }, {\n\t key: 'setSwitchDownOnLevelError',\n\t value: function setSwitchDownOnLevelError(switchDownOnLevelError) {\n\t this.switchDownOnLevelError = switchDownOnLevelError;\n\t this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError);\n\t }\n\t }, {\n\t key: 'setSeekMode',\n\t value: function setSeekMode(seekMode) {\n\t this.seekMode = seekMode;\n\t this.el.playerSetSeekMode(this.seekMode);\n\t }\n\t }, {\n\t key: 'setKeyLoadMaxRetry',\n\t value: function setKeyLoadMaxRetry(keyLoadMaxRetry) {\n\t this.keyLoadMaxRetry = keyLoadMaxRetry;\n\t this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setKeyLoadMaxRetryTimeout',\n\t value: function setKeyLoadMaxRetryTimeout(keyLoadMaxRetryTimeout) {\n\t this.keyLoadMaxRetryTimeout = keyLoadMaxRetryTimeout;\n\t this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setFragmentLoadMaxRetry',\n\t value: function setFragmentLoadMaxRetry(fragmentLoadMaxRetry) {\n\t this.fragmentLoadMaxRetry = fragmentLoadMaxRetry;\n\t this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setFragmentLoadMaxRetryTimeout',\n\t value: function setFragmentLoadMaxRetryTimeout(fragmentLoadMaxRetryTimeout) {\n\t this.fragmentLoadMaxRetryTimeout = fragmentLoadMaxRetryTimeout;\n\t this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setFragmentLoadSkipAfterMaxRetry',\n\t value: function setFragmentLoadSkipAfterMaxRetry(fragmentLoadSkipAfterMaxRetry) {\n\t this.fragmentLoadSkipAfterMaxRetry = fragmentLoadSkipAfterMaxRetry;\n\t this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry);\n\t }\n\t }, {\n\t key: 'setMaxSkippedFragments',\n\t value: function setMaxSkippedFragments(maxSkippedFragments) {\n\t this.maxSkippedFragments = maxSkippedFragments;\n\t this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments);\n\t }\n\t }, {\n\t key: 'setFlushLiveURLCache',\n\t value: function setFlushLiveURLCache(flushLiveURLCache) {\n\t this.flushLiveURLCache = flushLiveURLCache;\n\t this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache);\n\t }\n\t }, {\n\t key: 'setInitialLiveManifestSize',\n\t value: function setInitialLiveManifestSize(initialLiveManifestSize) {\n\t this.initialLiveManifestSize = initialLiveManifestSize;\n\t this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize);\n\t }\n\t }, {\n\t key: 'setManifestLoadMaxRetry',\n\t value: function setManifestLoadMaxRetry(manifestLoadMaxRetry) {\n\t this.manifestLoadMaxRetry = manifestLoadMaxRetry;\n\t this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry);\n\t }\n\t }, {\n\t key: 'setManifestLoadMaxRetryTimeout',\n\t value: function setManifestLoadMaxRetryTimeout(manifestLoadMaxRetryTimeout) {\n\t this.manifestLoadMaxRetryTimeout = manifestLoadMaxRetryTimeout;\n\t this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout);\n\t }\n\t }, {\n\t key: 'setManifestRedundantLoadmaxRetry',\n\t value: function setManifestRedundantLoadmaxRetry(manifestRedundantLoadmaxRetry) {\n\t this.manifestRedundantLoadmaxRetry = manifestRedundantLoadmaxRetry;\n\t this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry);\n\t }\n\t }, {\n\t key: 'setStartFromBitrate',\n\t value: function setStartFromBitrate(startFromBitrate) {\n\t this.startFromBitrate = startFromBitrate;\n\t this.el.playerSetStartFromBitrate(this.startFromBitrate);\n\t }\n\t }, {\n\t key: 'setStartFromLevel',\n\t value: function setStartFromLevel(startFromLevel) {\n\t this.startFromLevel = startFromLevel;\n\t this.el.playerSetStartFromLevel(this.startFromLevel);\n\t }\n\t }, {\n\t key: 'setAutoStartMaxDuration',\n\t value: function setAutoStartMaxDuration(autoStartMaxDuration) {\n\t this.autoStartMaxDuration = autoStartMaxDuration;\n\t this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration);\n\t }\n\t }, {\n\t key: 'setSeekFromLevel',\n\t value: function setSeekFromLevel(seekFromLevel) {\n\t this.seekFromLevel = seekFromLevel;\n\t this.el.playerSetSeekFromLevel(this.seekFromLevel);\n\t }\n\t }, {\n\t key: 'setUseHardwareVideoDecoder',\n\t value: function setUseHardwareVideoDecoder(useHardwareVideoDecoder) {\n\t this.useHardwareVideoDecoder = useHardwareVideoDecoder;\n\t this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder);\n\t }\n\t }, {\n\t key: 'setSetLogInfo',\n\t value: function setSetLogInfo(hlsLogEnabled) {\n\t this.hlsLogEnabled = hlsLogEnabled;\n\t this.el.playerSetLogInfo(this.hlsLogEnabled);\n\t }\n\t }, {\n\t key: 'setLogDebug',\n\t value: function setLogDebug(logDebug) {\n\t this.logDebug = logDebug;\n\t this.el.playerSetLogDebug(this.logDebug);\n\t }\n\t }, {\n\t key: 'setLogDebug2',\n\t value: function setLogDebug2(logDebug2) {\n\t this.logDebug2 = logDebug2;\n\t this.el.playerSetLogDebug2(this.logDebug2);\n\t }\n\t }, {\n\t key: 'setLogWarn',\n\t value: function setLogWarn(logWarn) {\n\t this.logWarn = logWarn;\n\t this.el.playerSetLogWarn(this.logWarn);\n\t }\n\t }, {\n\t key: 'setLogError',\n\t value: function setLogError(logError) {\n\t this.logError = logError;\n\t this.el.playerSetLogError(this.logError);\n\t }\n\t }, {\n\t key: 'levelChanged',\n\t value: function levelChanged(level) {\n\t var currentLevel = this.el.getLevels()[level];\n\t if (currentLevel) {\n\t this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BITRATE, {\n\t height: currentLevel.height,\n\t width: currentLevel.width,\n\t bandwidth: currentLevel.bandwidth,\n\t bitrate: currentLevel.bitrate,\n\t level: level\n\t });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_END);\n\t }\n\t }\n\t }, {\n\t key: 'updateTime',\n\t value: function updateTime(timeMetrics) {\n\t if (this.currentState === 'IDLE') {\n\t return;\n\t }\n\t\n\t var duration = this.normalizeDuration(timeMetrics.duration);\n\t var position = Math.min(Math.max(timeMetrics.position, 0), duration);\n\t var previousDVRStatus = this.dvrEnabled;\n\t var livePlayback = this.playbackType === _basePlayback2['default'].LIVE;\n\t this.dvrEnabled = livePlayback && duration > this.hlsMinimumDvrSize;\n\t\n\t if (duration === 100 || livePlayback === undefined) {\n\t return;\n\t }\n\t\n\t if (this.dvrEnabled !== previousDVRStatus) {\n\t this.updateSettings();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE, this.name);\n\t }\n\t\n\t if (livePlayback && (!this.dvrEnabled || !this.dvrInUse)) {\n\t position = duration;\n\t }\n\t\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: position, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (this.currentState === 'PAUSED') {\n\t this.el.playerResume();\n\t } else if (!this.srcLoaded && this.currentState !== \"PLAYING\") {\n\t this.firstPlay();\n\t } else {\n\t this.el.playerPlay();\n\t }\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return this.playbackType ? this.playbackType : null;\n\t }\n\t }, {\n\t key: 'getCurrentLevelIndex',\n\t value: function getCurrentLevelIndex() {\n\t return this.currentLevel;\n\t }\n\t }, {\n\t key: 'getCurrentLevel',\n\t value: function getCurrentLevel() {\n\t return this.levels[this.currentLevel];\n\t }\n\t }, {\n\t key: 'getCurrentBitrate',\n\t value: function getCurrentBitrate() {\n\t return this.levels[this.currentLevel].bitrate;\n\t }\n\t }, {\n\t key: 'setCurrentLevel',\n\t value: function setCurrentLevel(level) {\n\t this.currentLevel = level;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return this.highDefinition;\n\t }\n\t }, {\n\t key: 'getLevels',\n\t value: function getLevels() {\n\t return this.levels;\n\t }\n\t }, {\n\t key: 'setPlaybackState',\n\t value: function setPlaybackState(state) {\n\t if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\"].indexOf(state) >= 0) {\n\t this.bufferingState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t this.updateCurrentState(state);\n\t } else if ([\"PLAYING\", \"PAUSED\"].indexOf(state) >= 0) {\n\t if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\", \"IDLE\"].indexOf(this.currentState) >= 0) {\n\t this.bufferingState = false;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t }\n\t this.updateCurrentState(state);\n\t } else if (state === \"IDLE\") {\n\t this.srcLoaded = false;\n\t if (this.loop && [\"PLAYING_BUFFERING\", \"PLAYING\"].indexOf(this.currentState) >= 0) {\n\t this.play();\n\t this.seek(0);\n\t } else {\n\t this.updateCurrentState(state);\n\t this.hasEnded = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: this.el.getDuration() }, this.name);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'updateCurrentState',\n\t value: function updateCurrentState(state) {\n\t this.currentState = state;\n\t if (state !== \"IDLE\") {\n\t this.hasEnded = false;\n\t }\n\t this.updatePlaybackType();\n\t if (state === \"PLAYING\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY, this.name);\n\t } else if (state === \"PAUSED\") {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'updatePlaybackType',\n\t value: function updatePlaybackType() {\n\t this.playbackType = this.el.getType();\n\t if (this.playbackType) {\n\t this.playbackType = this.playbackType.toLowerCase();\n\t if (this.playbackType === _basePlayback2['default'].VOD) {\n\t this.startReportingProgress();\n\t } else {\n\t this.stopReportingProgress();\n\t }\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAYBACKSTATE, { type: this.playbackType });\n\t }\n\t }, {\n\t key: 'startReportingProgress',\n\t value: function startReportingProgress() {\n\t if (!this.reportingProgress) {\n\t this.reportingProgress = true;\n\t }\n\t }\n\t }, {\n\t key: 'stopReportingProgress',\n\t value: function stopReportingProgress() {\n\t this.reportingProgress = false;\n\t }\n\t }, {\n\t key: 'onFragmentLoaded',\n\t value: function onFragmentLoaded(loadmetrics) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_FRAGMENT_LOADED, loadmetrics);\n\t if (this.reportingProgress && this.el.getPosition) {\n\t var buffered = this.el.getPosition() + this.el.getbufferLength();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: this.el.getPosition(),\n\t current: buffered,\n\t total: this.el.getDuration()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'firstPlay',\n\t value: function firstPlay() {\n\t var _this3 = this;\n\t\n\t if (this.el.playerLoad) {\n\t this.setFlashSettings(); //ensure flushLiveURLCache will work (#327)\n\t this.el.playerLoad(this.src);\n\t _componentsMediator2['default'].once(this.cid + ':manifestloaded', function () {\n\t return _this3.el.playerPlay();\n\t });\n\t this.srcLoaded = true;\n\t } else {\n\t this._shouldPlayOnBootstrap = true;\n\t }\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t var _this4 = this;\n\t\n\t if (this.isReady) {\n\t this.el.playerVolume(value);\n\t } else {\n\t this.listenToOnce(this, _baseEvents2['default'].PLAYBACK_BUFFERFULL, function () {\n\t return _this4.volume(value);\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t if (this.playbackType !== _basePlayback2['default'].LIVE || this.dvrEnabled) {\n\t this.el.playerPause();\n\t if (this.playbackType === _basePlayback2['default'].LIVE && this.dvrEnabled) {\n\t this.updateDvr(true);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.srcLoaded = false;\n\t this.el.playerStop();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 0, total: 0 }, this.name);\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t if (this.currentState) {\n\t return !!this.currentState.match(/playing/i);\n\t }\n\t return false;\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.normalizeDuration(this.el.getDuration());\n\t }\n\t }, {\n\t key: 'normalizeDuration',\n\t value: function normalizeDuration(duration) {\n\t if (this.playbackType === _basePlayback2['default'].LIVE) {\n\t // estimate 10 seconds of buffer time for live streams for seek positions\n\t duration = duration - 10;\n\t }\n\t return duration;\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var duration = this.el.getDuration();\n\t var time = 0;\n\t if (percentage > 0) {\n\t time = duration * percentage / 100;\n\t }\n\t this.seek(time);\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t var duration = this.el.getDuration();\n\t if (this.playbackType === _basePlayback2['default'].LIVE) {\n\t // seek operations to a time within 5 seconds from live stream will position playhead back to live\n\t var dvrInUse = time >= 0 && duration - time > 5;\n\t if (!dvrInUse) {\n\t time = -1;\n\t }\n\t this.updateDvr(dvrInUse);\n\t }\n\t this.el.playerSeek(time);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'updateDvr',\n\t value: function updateDvr(dvrInUse) {\n\t var previousDvrInUse = !!this.dvrInUse;\n\t this.dvrInUse = dvrInUse;\n\t if (this.dvrInUse !== previousDvrInUse) {\n\t this.updateSettings();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_DVR, this.dvrInUse);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STATS_ADD, { 'dvr': this.dvrInUse });\n\t }\n\t }\n\t }, {\n\t key: 'flashPlaybackError',\n\t value: function flashPlaybackError(code, url, message) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, { code: code, url: url, message: message });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t }\n\t }, {\n\t key: 'manifestLoaded',\n\t value: function manifestLoaded(duration, loadmetrics) {\n\t var levels = this.el.getLevels();\n\t var levelsLength = levels.length;\n\t this._levels = [];\n\t\n\t for (var index = 0; index < levelsLength; index++) {\n\t this._levels.push({ id: index, label: levels[index].height + 'p' });\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVELS_AVAILABLE, this._levels);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LOADEDMETADATA, { duration: duration, data: loadmetrics });\n\t }\n\t }, {\n\t key: 'timeUpdate',\n\t value: function timeUpdate(time, duration) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: time, total: duration }, this.name);\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.stopListening();\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t this.settings = _clapprZepto2['default'].extend({}, this.defaultSettings);\n\t if (this.playbackType === _basePlayback2['default'].VOD || this.dvrInUse) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.seekEnabled = true;\n\t } else if (this.dvrEnabled) {\n\t this.settings.left = [\"playpause\"];\n\t this.settings.seekEnabled = true;\n\t } else {\n\t this.settings.seekEnabled = false;\n\t }\n\t }\n\t }, {\n\t key: 'createCallbacks',\n\t value: function createCallbacks() {\n\t var _this5 = this;\n\t\n\t if (!window.Clappr) {\n\t window.Clappr = {};\n\t }\n\t if (!window.Clappr.flashlsCallbacks) {\n\t window.Clappr.flashlsCallbacks = {};\n\t }\n\t this.flashlsEvents = new _flashls_events2['default'](this.cid);\n\t window.Clappr.flashlsCallbacks[this.cid] = function (eventName, args) {\n\t _this5.flashlsEvents[eventName].apply(_this5.flashlsEvents, args);\n\t };\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t _get(Object.getPrototypeOf(FlasHLS.prototype), 'render', this).call(this);\n\t this.createCallbacks();\n\t return this;\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return FlasHLS;\n\t})(_playbacksBase_flash_playback2['default']);\n\t\n\texports['default'] = FlasHLS;\n\t\n\tFlasHLS.canPlay = function (resource, mimeType) {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t return _componentsBrowser2['default'].hasFlash && (resourceParts.length > 1 && resourceParts[1] === \"m3u8\" || mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl');\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 108 */\n/*!*************************************************!*\\\n !*** ./src/playbacks/flashls/flashls_events.js ***!\n \\*************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _componentsMediator = __webpack_require__(/*! ../../components/mediator */ 16);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar HLSEvents = (function () {\n\t function HLSEvents(instanceId) {\n\t _classCallCheck(this, HLSEvents);\n\t\n\t this.instanceId = instanceId;\n\t }\n\t\n\t _createClass(HLSEvents, [{\n\t key: 'ready',\n\t value: function ready() {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':flashready');\n\t }\n\t }, {\n\t key: 'videoSize',\n\t value: function videoSize(width, height) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':videosizechanged', width, height);\n\t }\n\t }, {\n\t key: 'complete',\n\t value: function complete() {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':complete');\n\t }\n\t }, {\n\t key: 'error',\n\t value: function error(code, url, message) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':error', code, url, message);\n\t }\n\t }, {\n\t key: 'manifest',\n\t value: function manifest(duration, loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':manifestloaded', duration, loadmetrics);\n\t }\n\t }, {\n\t key: 'audioLevelLoaded',\n\t value: function audioLevelLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiolevelloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'levelLoaded',\n\t value: function levelLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':levelloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'fragmentLoaded',\n\t value: function fragmentLoaded(loadmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':fragmentloaded', loadmetrics);\n\t }\n\t }, {\n\t key: 'fragmentPlaying',\n\t value: function fragmentPlaying(playmetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':fragmentplaying', playmetrics);\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(timemetrics) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':timeupdate', timemetrics);\n\t }\n\t }, {\n\t key: 'state',\n\t value: function state(newState) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':playbackstate', newState);\n\t }\n\t }, {\n\t key: 'seekState',\n\t value: function seekState(newState) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':seekstate', newState);\n\t }\n\t }, {\n\t key: 'switch',\n\t value: function _switch(newLevel) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':levelchanged', newLevel);\n\t }\n\t }, {\n\t key: 'audioTracksListChange',\n\t value: function audioTracksListChange(trackList) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiotracklistchanged', trackList);\n\t }\n\t }, {\n\t key: 'audioTrackChange',\n\t value: function audioTrackChange(trackId) {\n\t _componentsMediator2['default'].trigger(this.instanceId + ':audiotrackchanged', trackId);\n\t }\n\t }]);\n\t\n\t return HLSEvents;\n\t})();\n\t\n\texports['default'] = HLSEvents;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 109 */\n/*!**********************************!*\\\n !*** ./src/playbacks/hls/hls.js ***!\n \\**********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _playbacksHtml5_video = __webpack_require__(/*! playbacks/html5_video */ 22);\n\t\n\tvar _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);\n\t\n\tvar _hlsJs = __webpack_require__(/*! hls.js */ 64);\n\t\n\tvar _hlsJs2 = _interopRequireDefault(_hlsJs);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _pluginsLog = __webpack_require__(/*! plugins/log */ 27);\n\t\n\tvar _pluginsLog2 = _interopRequireDefault(_pluginsLog);\n\t\n\tvar AUTO = -1;\n\t\n\tvar HLS = (function (_HTML5VideoPlayback) {\n\t _inherits(HLS, _HTML5VideoPlayback);\n\t\n\t _createClass(HLS, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'hls';\n\t }\n\t }, {\n\t key: 'levels',\n\t get: function get() {\n\t return this._levels || [];\n\t }\n\t }, {\n\t key: 'currentLevel',\n\t get: function get() {\n\t return this._currentLevel || AUTO;\n\t },\n\t set: function set(id) {\n\t this._currentLevel = id;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_START);\n\t this.hls.currentLevel = this._currentLevel;\n\t }\n\t }]);\n\t\n\t function HLS(options) {\n\t _classCallCheck(this, HLS);\n\t\n\t _get(Object.getPrototypeOf(HLS.prototype), 'constructor', this).call(this, options);\n\t this.minDvrSize = options.hlsMinimumDvrSize ? options.hlsMinimumDvrSize : 60;\n\t this.playbackType = _basePlayback2['default'].VOD;\n\t // for hls streams which have dvr with a sliding window,\n\t // the content at the start of the playlist is removed as new\n\t // content is appended at the end.\n\t // this means the actual playable start time will increase as the\n\t // start content is deleted\n\t // For streams with dvr where the entire recording is kept from the\n\t // beginning this should stay as 0\n\t this.playableRegionStartTime = 0;\n\t // if content is removed from the beginning then this empty area should\n\t // be ignored. \"playableRegionDuration\" does not consider this\n\t this.playableRegionDuration = 0;\n\t options.autoPlay && this.setupHls();\n\t }\n\t\n\t _createClass(HLS, [{\n\t key: 'setupHls',\n\t value: function setupHls() {\n\t var _this = this;\n\t\n\t this.hls = new _hlsJs2['default'](this.options.hlsjsConfig || {});\n\t this.hls.on(_hlsJs2['default'].Events.MEDIA_ATTACHED, function () {\n\t return _this.hls.loadSource(_this.options.src);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_LOADED, function (evt, data) {\n\t return _this.updatePlaybackType(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_UPDATED, function (evt, data) {\n\t return _this.updateDuration(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.LEVEL_SWITCH, function (evt, data) {\n\t return _this.onLevelSwitch(evt, data);\n\t });\n\t this.hls.on(_hlsJs2['default'].Events.FRAG_LOADED, function (evt, data) {\n\t return _this.onFragmentLoaded(evt, data);\n\t });\n\t this.hls.attachMedia(this.el);\n\t }\n\t\n\t // override\n\t }, {\n\t key: 'setupSrc',\n\t value: function setupSrc(srcUrl) {}\n\t // this playback manages the src on the video element itself\n\t\n\t // the duration on the video element itself should not be used\n\t // as this does not necesarily represent the duration of the stream\n\t // https://github.com/clappr/clappr/issues/668#issuecomment-157036678\n\t\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.playableRegionDuration;\n\t }\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.el.currentTime - this.playableRegionStartTime;\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var seekTo = this.playableRegionDuration;\n\t if (percentage > 0) {\n\t seekTo = this.playableRegionDuration * (percentage / 100);\n\t }\n\t this.seek(seekTo);\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t if (time < 0) {\n\t _pluginsLog2['default'].warn(\"Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.\");\n\t time = this.getDuration();\n\t }\n\t // assume live if time within 3 seconds of end of stream\n\t this.dvrEnabled && this.updateDvr(time < this.getDuration() - 3);\n\t time += this.playableRegionStartTime;\n\t _get(Object.getPrototypeOf(HLS.prototype), 'seek', this).call(this, time);\n\t }\n\t }, {\n\t key: 'seekToLivePoint',\n\t value: function seekToLivePoint() {\n\t this.seek(this.getDuration());\n\t }\n\t }, {\n\t key: 'updateDvr',\n\t value: function updateDvr(status) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_DVR, status);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STATS_ADD, { 'dvr': status });\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t if (this.playbackType === _basePlayback2['default'].VOD) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t } else if (this.dvrEnabled) {\n\t this.settings.left = [\"playpause\"];\n\t } else {\n\t this.settings.left = [\"playstop\"];\n\t }\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate() {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.getCurrentTime(), total: this.getDuration() }, this.name);\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t if (!this.hls) {\n\t this.setupHls();\n\t }\n\t _get(Object.getPrototypeOf(HLS.prototype), 'play', this).call(this);\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t _get(Object.getPrototypeOf(HLS.prototype), 'pause', this).call(this);\n\t if (this.dvrEnabled) {\n\t this.updateDvr(true);\n\t }\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t _get(Object.getPrototypeOf(HLS.prototype), 'stop', this).call(this);\n\t if (this.hls) {\n\t this.hls.destroy();\n\t delete this.hls;\n\t }\n\t }\n\t }, {\n\t key: 'updatePlaybackType',\n\t value: function updatePlaybackType(evt, data) {\n\t this.playbackType = data.details.live ? _basePlayback2['default'].LIVE : _basePlayback2['default'].VOD;\n\t this.fillLevels();\n\t }\n\t }, {\n\t key: 'fillLevels',\n\t value: function fillLevels() {\n\t this._levels = this.hls.levels.map(function (level, index) {\n\t return { id: index, label: level.height + 'p' };\n\t });\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVELS_AVAILABLE, this._levels);\n\t }\n\t }, {\n\t key: 'updateDuration',\n\t value: function updateDuration(evt, data) {\n\t var fragments = data.details.fragments;\n\t if (fragments.length > 0) {\n\t this.playableRegionStartTime = fragments[0].start;\n\t }\n\t this.playableRegionDuration = data.details.totalduration;\n\t this.onDurationChange();\n\t }\n\t }, {\n\t key: 'onFragmentLoaded',\n\t value: function onFragmentLoaded(evt, data) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_FRAGMENT_LOADED, data);\n\t }\n\t }, {\n\t key: 'onLevelSwitch',\n\t value: function onLevelSwitch(evt, data) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH_END);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LEVEL_SWITCH, data);\n\t var currentLevel = this.hls.levels[data.level];\n\t if (currentLevel) {\n\t this.highDefinition = currentLevel.height >= 720 || currentLevel.bitrate / 1000 >= 2000;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition);\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BITRATE, {\n\t height: currentLevel.height,\n\t width: currentLevel.width,\n\t bandwidth: currentLevel.bandwidth,\n\t bitrate: currentLevel.bitrate,\n\t level: data.level\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return this.playbackType;\n\t }\n\t }, {\n\t key: 'isSeekEnabled',\n\t value: function isSeekEnabled() {\n\t return this.playbackType === _basePlayback2['default'].VOD || this.dvrEnabled;\n\t }\n\t }, {\n\t key: 'dvrEnabled',\n\t get: function get() {\n\t return this.playableRegionDuration >= this.minDvrSize && this.getPlaybackType() === _basePlayback2['default'].LIVE;\n\t }\n\t }]);\n\t\n\t return HLS;\n\t})(_playbacksHtml5_video2['default']);\n\t\n\texports['default'] = HLS;\n\t\n\tHLS.canPlay = function (resource, mimeType) {\n\t var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\" || mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl';\n\t\n\t return !!(_hlsJs2['default'].isSupported() && isHls && !_componentsBrowser2['default'].isSafari);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 110 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_audio/html5_audio.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _playbacksHtml5_video = __webpack_require__(/*! playbacks/html5_video */ 22);\n\t\n\tvar _playbacksHtml5_video2 = _interopRequireDefault(_playbacksHtml5_video);\n\t\n\tvar _lodashFind = __webpack_require__(/*! lodash.find */ 14);\n\t\n\tvar _lodashFind2 = _interopRequireDefault(_lodashFind);\n\t\n\tvar HTML5Audio = (function (_HTML5Video) {\n\t _inherits(HTML5Audio, _HTML5Video);\n\t\n\t function HTML5Audio() {\n\t _classCallCheck(this, HTML5Audio);\n\t\n\t _get(Object.getPrototypeOf(HTML5Audio.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(HTML5Audio, [{\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].AOD;\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'html5_audio';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'audio';\n\t }\n\t }]);\n\t\n\t return HTML5Audio;\n\t})(_playbacksHtml5_video2['default']);\n\t\n\texports['default'] = HTML5Audio;\n\t\n\tHTML5Audio.canPlay = function (resourceUrl, mimeType) {\n\t var mimetypes = {\n\t 'wav': ['audio/wav'],\n\t 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n\t 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n\t 'oga': ['audio/ogg']\n\t };\n\t return _playbacksHtml5_video2['default']._canPlay('audio', mimetypes, resourceUrl, mimeType);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 111 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html5_video/html5_video.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 138);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar _publicIndexHtml = __webpack_require__(/*! ./public/index.html */ 148);\n\t\n\tvar _publicIndexHtml2 = _interopRequireDefault(_publicIndexHtml);\n\t\n\tvar _lodashFind = __webpack_require__(/*! lodash.find */ 14);\n\t\n\tvar _lodashFind2 = _interopRequireDefault(_lodashFind);\n\t\n\tvar MIMETYPES = {\n\t 'mp4': [\"avc1.42E01E\", \"avc1.58A01E\", \"avc1.4D401E\", \"avc1.64001E\", \"mp4v.20.8\", \"mp4v.20.240\", \"mp4a.40.2\"].map(function (codec) {\n\t return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"';\n\t }),\n\t 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n\t '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n\t 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n\t 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n\t 'm3u8': ['application/x-mpegurl']\n\t};\n\tMIMETYPES['ogv'] = MIMETYPES['ogg'];\n\tMIMETYPES['3gp'] = MIMETYPES['3gpp'];\n\t\n\tvar HTML5Video = (function (_Playback) {\n\t _inherits(HTML5Video, _Playback);\n\t\n\t _createClass(HTML5Video, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'html5_video';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'video';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicIndexHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-html5-video': ''\n\t };\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'canplay': 'onCanPlay',\n\t 'canplaythrough': 'handleBufferingEvents',\n\t 'durationchange': 'onDurationChange',\n\t 'ended': 'onEnded',\n\t 'error': 'onError',\n\t 'loadeddata': 'onLoadedData',\n\t 'loadedmetadata': 'onLoadedMetadata',\n\t 'pause': 'onPause',\n\t 'playing': 'onPlaying',\n\t 'progress': 'onProgress',\n\t 'seeked': 'handleBufferingEvents',\n\t 'seeking': 'handleBufferingEvents',\n\t 'stalled': 'handleBufferingEvents',\n\t 'timeupdate': 'onTimeUpdate',\n\t 'waiting': 'onWaiting'\n\t };\n\t }\n\t\n\t /**\n\t * Determine if the playback has ended.\n\t * @property ended\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'ended',\n\t get: function get() {\n\t return this.el.ended;\n\t }\n\t\n\t /**\n\t * Determine if the playback is having to buffer in order for\n\t * playback to be smooth.\n\t * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n\t * @property buffering\n\t * @type Boolean\n\t */\n\t }, {\n\t key: 'buffering',\n\t get: function get() {\n\t return !!this.bufferingState;\n\t }\n\t }]);\n\t\n\t function HTML5Video(options) {\n\t _classCallCheck(this, HTML5Video);\n\t\n\t _get(Object.getPrototypeOf(HTML5Video.prototype), 'constructor', this).call(this, options);\n\t this.loadStarted = false;\n\t this.playheadMoving = false;\n\t this.playheadMovingTimer = null;\n\t this.stopped = false;\n\t this.options = options;\n\t this.setupSrc(options.src);\n\t this.el.loop = options.loop;\n\t if (options.poster) {\n\t this.$el.attr(\"poster\", options.poster);\n\t }\n\t this.el.autoplay = options.autoPlay;\n\t if (_componentsBrowser2['default'].isSafari) {\n\t this.setupSafari();\n\t } else {\n\t this.el.preload = options.preload ? options.preload : 'metadata';\n\t this.settings.seekEnabled = true;\n\t }\n\t this.settings = { 'default': ['seekbar'] };\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t this.settings.right = [\"fullscreen\", \"volume\", \"hd-indicator\"];\n\t }\n\t\n\t /**\n\t * Sets the source url on the element, and also the 'src' property.\n\t * @method setupSrc\n\t * @param {String} srcUrl The source URL.\n\t */\n\t\n\t _createClass(HTML5Video, [{\n\t key: 'setupSrc',\n\t value: function setupSrc(srcUrl) {\n\t this.src = srcUrl;\n\t this.el.src = srcUrl;\n\t }\n\t }, {\n\t key: 'setupSafari',\n\t value: function setupSafari() {\n\t this.el.preload = 'auto';\n\t }\n\t }, {\n\t key: 'onLoadedMetadata',\n\t value: function onLoadedMetadata(e) {\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_LOADEDMETADATA, { duration: e.target.duration, data: e });\n\t this.updateSettings();\n\t var autoSeekFromUrl = typeof this.options.autoSeekFromUrl === \"undefined\" || this.options.autoSeekFromUrl;\n\t if (this.getPlaybackType() !== _basePlayback2['default'].LIVE && autoSeekFromUrl) {\n\t this.checkInitialSeek();\n\t }\n\t }\n\t }, {\n\t key: 'onDurationChange',\n\t value: function onDurationChange() {\n\t this.updateSettings();\n\t this.onTimeUpdate();\n\t }\n\t }, {\n\t key: 'updateSettings',\n\t value: function updateSettings() {\n\t // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n\t // that's why we check it again and update media control accordingly.\n\t if (this.getPlaybackType() === _basePlayback2['default'].VOD) {\n\t this.settings.left = [\"playpause\", \"position\", \"duration\"];\n\t } else {\n\t this.settings.left = [\"playstop\"];\n\t }\n\t this.settings.seekEnabled = this.isSeekEnabled();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_SETTINGSUPDATE);\n\t }\n\t }, {\n\t key: 'isSeekEnabled',\n\t value: function isSeekEnabled() {\n\t return isFinite(this.getDuration());\n\t }\n\t }, {\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? _basePlayback2['default'].LIVE : _basePlayback2['default'].VOD;\n\t }\n\t }, {\n\t key: 'isHighDefinitionInUse',\n\t value: function isHighDefinitionInUse() {\n\t return false;\n\t }\n\t }, {\n\t key: 'play',\n\t value: function play() {\n\t this.stopped = false;\n\t this.handleBufferingEvents();\n\t this.el.play();\n\t }\n\t }, {\n\t key: 'pause',\n\t value: function pause() {\n\t this.el.pause();\n\t }\n\t }, {\n\t key: 'stop',\n\t value: function stop() {\n\t this.pause();\n\t this.stopped = true;\n\t this.el.currentTime = 0;\n\t this.stopPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_STOP);\n\t }\n\t }, {\n\t key: 'volume',\n\t value: function volume(value) {\n\t this.el.volume = value / 100;\n\t }\n\t }, {\n\t key: 'mute',\n\t value: function mute() {\n\t this.el.volume = 0;\n\t }\n\t }, {\n\t key: 'unmute',\n\t value: function unmute() {\n\t this.el.volume = 1;\n\t }\n\t }, {\n\t key: 'isMuted',\n\t value: function isMuted() {\n\t return !!this.el.volume;\n\t }\n\t }, {\n\t key: 'isPlaying',\n\t value: function isPlaying() {\n\t return !this.el.paused && !this.el.ended;\n\t }\n\t }, {\n\t key: 'startPlayheadMovingChecks',\n\t value: function startPlayheadMovingChecks() {\n\t if (this.playheadMovingTimer !== null) {\n\t return;\n\t }\n\t this.playheadMovingTimeOnCheck = null;\n\t this.determineIfPlayheadMoving();\n\t this.playheadMovingTimer = setInterval(this.determineIfPlayheadMoving.bind(this), 500);\n\t }\n\t }, {\n\t key: 'stopPlayheadMovingChecks',\n\t value: function stopPlayheadMovingChecks() {\n\t if (this.playheadMovingTimer === null) {\n\t return;\n\t }\n\t clearInterval(this.playheadMovingTimer);\n\t this.playheadMovingTimer = null;\n\t this.playheadMoving = false;\n\t }\n\t }, {\n\t key: 'determineIfPlayheadMoving',\n\t value: function determineIfPlayheadMoving() {\n\t var before = this.playheadMovingTimeOnCheck;\n\t var now = this.el.currentTime;\n\t this.playheadMoving = before !== now;\n\t this.playheadMovingTimeOnCheck = now;\n\t this.handleBufferingEvents();\n\t }\n\t\n\t // this seems to happen when the user is having to wait\n\t // for something to happen AFTER A USER INTERACTION\n\t // e.g the player might be buffering, but when `play()` is called\n\t // only at this point will this be called.\n\t // Or the user may seek somewhere but the new area requires buffering,\n\t // so it will fire then as well.\n\t // On devices where playing is blocked until requested with a user action,\n\t // buffering may start, but never finish until the user initiates a play,\n\t // but this only happens when play is actually requested\n\t }, {\n\t key: 'onWaiting',\n\t value: function onWaiting() {\n\t this.loadStarted = true;\n\t this.handleBufferingEvents();\n\t }\n\t\n\t // called after the first frame has loaded\n\t // note this doesn't fire on ios before the user has requested play\n\t // ideally the \"loadstart\" event would be used instead, but this fires\n\t // before a user has requested play on iOS, and also this is always fired\n\t // even if the preload setting is \"none\". In both these cases this causes\n\t // infinite buffering until the user does something which isn't great.\n\t }, {\n\t key: 'onLoadedData',\n\t value: function onLoadedData() {\n\t this.loadStarted = true;\n\t this.handleBufferingEvents();\n\t }\n\t\n\t // note this doesn't fire on ios before user has requested play\n\t }, {\n\t key: 'onCanPlay',\n\t value: function onCanPlay() {\n\t this.handleBufferingEvents();\n\t }\n\t }, {\n\t key: 'onPlaying',\n\t value: function onPlaying() {\n\t this.startPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PLAY);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.stopPlayheadMovingChecks();\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PAUSE);\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.handleBufferingEvents();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ENDED, this.name);\n\t }\n\t\n\t // The playback should be classed as buffering if the following are true:\n\t // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n\t // - the media hasn't \"ended\",\n\t // - the media hasn't been stopped\n\t // - loading has started\n\t }, {\n\t key: 'handleBufferingEvents',\n\t value: function handleBufferingEvents() {\n\t var playheadShouldBeMoving = !this.el.ended && !this.el.paused;\n\t var buffering = this.loadStarted && !this.el.ended && !this.stopped && (playheadShouldBeMoving && !this.playheadMoving || this.el.readyState < this.el.HAVE_FUTURE_DATA);\n\t if (this.bufferingState !== buffering) {\n\t this.bufferingState = buffering;\n\t if (buffering) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERING, this.name);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_BUFFERFULL, this.name);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError(event) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_ERROR, this.el.error, this.name);\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t this.stop();\n\t this.el.src = '';\n\t this.src = null;\n\t this.$el.remove();\n\t }\n\t }, {\n\t key: 'seek',\n\t value: function seek(time) {\n\t this.el.currentTime = time;\n\t }\n\t }, {\n\t key: 'seekPercentage',\n\t value: function seekPercentage(percentage) {\n\t var time = this.el.duration * (percentage / 100);\n\t this.seek(time);\n\t }\n\t }, {\n\t key: 'checkInitialSeek',\n\t value: function checkInitialSeek() {\n\t var seekTime = (0, _baseUtils.seekStringToSeconds)(window.location.href);\n\t if (seekTime !== 0) {\n\t this.seek(seekTime);\n\t }\n\t }\n\t }, {\n\t key: 'getCurrentTime',\n\t value: function getCurrentTime() {\n\t return this.el.currentTime;\n\t }\n\t }, {\n\t key: 'getDuration',\n\t value: function getDuration() {\n\t return this.el.duration;\n\t }\n\t }, {\n\t key: 'onTimeUpdate',\n\t value: function onTimeUpdate() {\n\t this.handleBufferingEvents();\n\t if (this.getPlaybackType() === _basePlayback2['default'].LIVE) {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: 1, total: 1 }, this.name);\n\t } else {\n\t this.trigger(_baseEvents2['default'].PLAYBACK_TIMEUPDATE, { current: this.el.currentTime, total: this.el.duration }, this.name);\n\t }\n\t }\n\t }, {\n\t key: 'onProgress',\n\t value: function onProgress() {\n\t if (!this.el.buffered.length) {\n\t return;\n\t }\n\t var bufferedPos = 0;\n\t for (var i = 0; i < this.el.buffered.length; i++) {\n\t if (this.el.currentTime >= this.el.buffered.start(i) && this.el.currentTime <= this.el.buffered.end(i)) {\n\t bufferedPos = i;\n\t break;\n\t }\n\t }\n\t this.trigger(_baseEvents2['default'].PLAYBACK_PROGRESS, {\n\t start: this.el.buffered.start(bufferedPos),\n\t current: this.el.buffered.end(bufferedPos),\n\t total: this.el.duration\n\t });\n\t }\n\t }, {\n\t key: 'typeFor',\n\t value: function typeFor(src) {\n\t var resourceParts = src.split('?')[0].match(/.*\\.(.*)$/) || [];\n\t var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\";\n\t return isHls ? 'application/vnd.apple.mpegurl' : 'video/mp4';\n\t }\n\t }, {\n\t key: 'ready',\n\t value: function ready() {\n\t if (this.isReadyState) {\n\t return;\n\t }\n\t this.isReadyState = true;\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t\n\t this.src && this.$el.html(this.template({ src: this.src, type: this.typeFor(this.src) }));\n\t\n\t if (this.options.useVideoTagDefaultControls) {\n\t this.$el.attr('controls', 'controls');\n\t }\n\t\n\t if (this.options.disableVideoTagContextMenu) {\n\t this.$el.on(\"contextmenu\", function () {\n\t return false;\n\t });\n\t }\n\t\n\t this.$el.append(style);\n\t this.ready();\n\t return this;\n\t }\n\t }, {\n\t key: 'isReady',\n\t get: function get() {\n\t return this.isReadyState;\n\t }\n\t }]);\n\t\n\t return HTML5Video;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = HTML5Video;\n\t\n\tHTML5Video._canPlay = function (type, mimeTypesByExtension, resourceUrl, mimeType) {\n\t var extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1];\n\t var mimeTypes = mimeType || mimeTypesByExtension[extension] || [];\n\t mimeTypes = mimeTypes.constructor === Array ? mimeTypes : [mimeTypes];\n\t\n\t var media = document.createElement(type);\n\t return !!(0, _lodashFind2['default'])(mimeTypes, function (mediaType) {\n\t return !!media.canPlayType(mediaType).replace(/no/, '');\n\t });\n\t};\n\t\n\tHTML5Video.canPlay = function (resourceUrl, mimeType) {\n\t return HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType);\n\t};\n\t\n\tmodule.exports = HTML5Video;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 112 */\n/*!********************************************!*\\\n !*** ./src/playbacks/html_img/html_img.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 139);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar HTMLImg = (function (_Playback) {\n\t _inherits(HTMLImg, _Playback);\n\t\n\t _createClass(HTMLImg, [{\n\t key: 'getPlaybackType',\n\t value: function getPlaybackType() {\n\t return _basePlayback2['default'].NO_OP;\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'html_img';\n\t }\n\t }, {\n\t key: 'tagName',\n\t get: function get() {\n\t return 'img';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-html-img': ''\n\t };\n\t }\n\t }]);\n\t\n\t function HTMLImg(params) {\n\t _classCallCheck(this, HTMLImg);\n\t\n\t _get(Object.getPrototypeOf(HTMLImg.prototype), 'constructor', this).call(this, params);\n\t this.el.src = params.src;\n\t }\n\t\n\t _createClass(HTMLImg, [{\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t this.$el.append(style);\n\t return this;\n\t }\n\t }]);\n\t\n\t return HTMLImg;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = HTMLImg;\n\t\n\tHTMLImg.canPlay = function (resource) {\n\t return !!resource.match(/(.*).(png|jpg|jpeg|gif|bmp)/);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 113 */\n/*!**************************************!*\\\n !*** ./src/playbacks/no_op/no_op.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicStyleScss = __webpack_require__(/*! ./public/style.scss */ 140);\n\t\n\tvar _publicStyleScss2 = _interopRequireDefault(_publicStyleScss);\n\t\n\tvar _publicErrorHtml = __webpack_require__(/*! ./public/error.html */ 149);\n\t\n\tvar _publicErrorHtml2 = _interopRequireDefault(_publicErrorHtml);\n\t\n\tvar NoOp = (function (_Playback) {\n\t _inherits(NoOp, _Playback);\n\t\n\t _createClass(NoOp, [{\n\t key: 'getNoOpMessage',\n\t value: function getNoOpMessage() {\n\t var messages = {\n\t 'en': 'Your browser does not support the playback of this video. Please try using a different browser.',\n\t 'es': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.',\n\t 'pt': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.'\n\t };\n\t messages['en-us'] = messages['en'];\n\t messages['es-419'] = messages['es'];\n\t messages['pt-br'] = messages['pt'];\n\t return messages[(0, _baseUtils.getBrowserLanguage)()] || messages['en'];\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'no_op';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicErrorHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return { 'data-no-op': '' };\n\t }\n\t }]);\n\t\n\t function NoOp(options) {\n\t _classCallCheck(this, NoOp);\n\t\n\t _get(Object.getPrototypeOf(NoOp.prototype), 'constructor', this).call(this, options);\n\t this.options = options;\n\t }\n\t\n\t _createClass(NoOp, [{\n\t key: 'render',\n\t value: function render() {\n\t var style = _baseStyler2['default'].getStyleFor(_publicStyleScss2['default']);\n\t this.$el.html(this.template({ message: this.options.playbackNotSupportedMessage || this.getNoOpMessage() }));\n\t this.$el.append(style);\n\t this.animate();\n\t this.trigger(_baseEvents2['default'].PLAYBACK_READY, this.name);\n\t return this;\n\t }\n\t }, {\n\t key: 'noise',\n\t value: function noise() {\n\t var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height);\n\t\n\t try {\n\t var buffer32 = new Uint32Array(idata.data.buffer);\n\t } catch (err) {\n\t var buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4);\n\t var data = idata.data;\n\t for (var i = 0; i < data.length; i++) {\n\t buffer32[i] = data[i];\n\t }\n\t }\n\t\n\t var len = buffer32.length;\n\t var run = 0;\n\t var color = 0;\n\t var m = Math.random() * 6 + 4;\n\t\n\t for (var i = 0; i < len;) {\n\t if (run < 0) {\n\t run = m * Math.random();\n\t var p = Math.pow(Math.random(), 0.4);\n\t color = 255 * p << 24;\n\t }\n\t run -= 1;\n\t buffer32[i++] = color;\n\t }\n\t this.context.putImageData(idata, 0, 0);\n\t }\n\t }, {\n\t key: 'loop',\n\t value: function loop() {\n\t var _this = this;\n\t\n\t if (this.stop === true) {\n\t return;\n\t }\n\t this.noise();\n\t this.animationHandle = (0, _baseUtils.requestAnimationFrame)(function () {\n\t return _this.loop();\n\t });\n\t }\n\t }, {\n\t key: 'destroy',\n\t value: function destroy() {\n\t if (this.animationHandle) {\n\t (0, _baseUtils.cancelAnimationFrame)(this.animationHandle);\n\t this.stop = true;\n\t }\n\t }\n\t }, {\n\t key: 'animate',\n\t value: function animate() {\n\t this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0];\n\t this.context = this.canvas.getContext('2d');\n\t this.loop();\n\t }\n\t }]);\n\t\n\t return NoOp;\n\t})(_basePlayback2['default']);\n\t\n\texports['default'] = NoOp;\n\t\n\tNoOp.canPlay = function (source) {\n\t return true;\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 114 */\n/*!******************************************************!*\\\n !*** ./src/plugins/click_to_pause/click_to_pause.js ***!\n \\******************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t//Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _componentsBrowser = __webpack_require__(/*! components/browser */ 11);\n\t\n\tvar _componentsBrowser2 = _interopRequireDefault(_componentsBrowser);\n\t\n\tvar ClickToPausePlugin = (function (_ContainerPlugin) {\n\t _inherits(ClickToPausePlugin, _ContainerPlugin);\n\t\n\t _createClass(ClickToPausePlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'click_to_pause';\n\t }\n\t }]);\n\t\n\t function ClickToPausePlugin(container) {\n\t _classCallCheck(this, ClickToPausePlugin);\n\t\n\t _get(Object.getPrototypeOf(ClickToPausePlugin.prototype), 'constructor', this).call(this, container);\n\t }\n\t\n\t _createClass(ClickToPausePlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t if (!this.options.chromeless && !_componentsBrowser2['default'].isMobile) {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_CLICK, this.click);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_SETTINGSUPDATE, this.settingsUpdate);\n\t }\n\t }\n\t }, {\n\t key: 'click',\n\t value: function click() {\n\t if (this.container.getPlaybackType() !== _basePlayback2['default'].LIVE || this.container.isDvrEnabled()) {\n\t if (this.container.isPlaying()) {\n\t this.container.pause();\n\t } else {\n\t this.container.play();\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'settingsUpdate',\n\t value: function settingsUpdate() {\n\t this.container.$el.removeClass('pointer-enabled');\n\t if (this.container.getPlaybackType() !== _basePlayback2['default'].LIVE || this.container.isDvrEnabled()) {\n\t this.container.$el.addClass('pointer-enabled');\n\t }\n\t }\n\t }]);\n\t\n\t return ClickToPausePlugin;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = ClickToPausePlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 115 */\n/*!*********************************************!*\\\n !*** ./src/plugins/click_to_pause/index.js ***!\n \\*********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./click_to_pause */ 114);\n\n/***/ },\n/* 116 */\n/*!**************************************************!*\\\n !*** ./src/plugins/dvr_controls/dvr_controls.js ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_core_plugin = __webpack_require__(/*! base/ui_core_plugin */ 25);\n\t\n\tvar _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _publicDvr_controlsScss = __webpack_require__(/*! ./public/dvr_controls.scss */ 141);\n\t\n\tvar _publicDvr_controlsScss2 = _interopRequireDefault(_publicDvr_controlsScss);\n\t\n\tvar _publicIndexHtml = __webpack_require__(/*! ./public/index.html */ 150);\n\t\n\tvar _publicIndexHtml2 = _interopRequireDefault(_publicIndexHtml);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar DVRControls = (function (_UICorePlugin) {\n\t _inherits(DVRControls, _UICorePlugin);\n\t\n\t _createClass(DVRControls, [{\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicIndexHtml2['default']);\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'dvr_controls';\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'click .live-button': 'click'\n\t };\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'dvr-controls',\n\t 'data-dvr-controls': ''\n\t };\n\t }\n\t }]);\n\t\n\t function DVRControls(core) {\n\t _classCallCheck(this, DVRControls);\n\t\n\t _get(Object.getPrototypeOf(DVRControls.prototype), 'constructor', this).call(this, core);\n\t this.core = core;\n\t this.settingsUpdate();\n\t }\n\t\n\t _createClass(DVRControls, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_RENDERED, this.settingsUpdate);\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.render);\n\t if (this.core.getCurrentContainer()) {\n\t this.listenToOnce(this.core.getCurrentContainer(), _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.render);\n\t this.listenTo(this.core.getCurrentContainer(), _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'dvrChanged',\n\t value: function dvrChanged(dvrEnabled) {\n\t this.settingsUpdate();\n\t this.core.mediaControl.$el.addClass('live');\n\t if (dvrEnabled) {\n\t this.core.mediaControl.$el.addClass('dvr');\n\t this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide();\n\t } else {\n\t this.core.mediaControl.$el.removeClass('dvr');\n\t }\n\t }\n\t }, {\n\t key: 'click',\n\t value: function click() {\n\t var mediaControl = this.core.mediaControl;\n\t var container = mediaControl.container;\n\t if (!container.isPlaying()) {\n\t container.play();\n\t }\n\t if (mediaControl.$el.hasClass('dvr')) {\n\t container.seek(container.getDuration());\n\t }\n\t }\n\t }, {\n\t key: 'settingsUpdate',\n\t value: function settingsUpdate() {\n\t var _this = this;\n\t\n\t this.stopListening();\n\t if (this.shouldRender()) {\n\t this.render();\n\t this.$el.click(function () {\n\t return _this.click();\n\t });\n\t }\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'shouldRender',\n\t value: function shouldRender() {\n\t var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls;\n\t return useDvrControls && this.core.getPlaybackType() === _basePlayback2['default'].LIVE;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.style = this.style || _baseStyler2['default'].getStyleFor(_publicDvr_controlsScss2['default'], { baseUrl: this.core.options.baseUrl });\n\t this.$el.html(this.template());\n\t this.$el.append(this.style);\n\t if (this.shouldRender()) {\n\t this.core.mediaControl.$el.addClass('live');\n\t this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el);\n\t }\n\t return this;\n\t }\n\t }]);\n\t\n\t return DVRControls;\n\t})(_baseUi_core_plugin2['default']);\n\t\n\texports['default'] = DVRControls;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 117 */\n/*!*******************************************!*\\\n !*** ./src/plugins/dvr_controls/index.js ***!\n \\*******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./dvr_controls */ 116);\n\n/***/ },\n/* 118 */\n/*!**********************************!*\\\n !*** ./src/plugins/end_video.js ***!\n \\**********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar EndVideo = (function (_CorePlugin) {\n\t _inherits(EndVideo, _CorePlugin);\n\t\n\t function EndVideo() {\n\t _classCallCheck(this, EndVideo);\n\t\n\t _get(Object.getPrototypeOf(EndVideo.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(EndVideo, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t var container = this.core.getCurrentContainer();\n\t if (container) {\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_ENDED, this.ended);\n\t this.listenTo(container, _baseEvents2['default'].CONTAINER_STOP, this.ended);\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'ended',\n\t value: function ended() {\n\t if (_baseUtils.Fullscreen.isFullscreen()) {\n\t this.core.toggleFullscreen();\n\t }\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'end_video';\n\t }\n\t }]);\n\t\n\t return EndVideo;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = EndVideo;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 119 */\n/*!****************************************!*\\\n !*** ./src/plugins/favicon/favicon.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar Favicon = (function (_CorePlugin) {\n\t _inherits(Favicon, _CorePlugin);\n\t\n\t _createClass(Favicon, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'favicon';\n\t }\n\t }]);\n\t\n\t function Favicon(core) {\n\t _classCallCheck(this, Favicon);\n\t\n\t _get(Object.getPrototypeOf(Favicon.prototype), 'constructor', this).call(this, core);\n\t this.oldIcon = (0, _clapprZepto2['default'])('link[rel=\"shortcut icon\"]');\n\t this.configure();\n\t }\n\t\n\t _createClass(Favicon, [{\n\t key: 'configure',\n\t value: function configure() {\n\t if (!this.core.options.changeFavicon) {\n\t this.disable();\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.configure);\n\t } else {\n\t this.stopListening(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE);\n\t this.enable();\n\t }\n\t }\n\t }, {\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.core, _baseEvents2['default'].CORE_OPTIONS_CHANGE, this.configure);\n\t this.listenTo(this.core.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n\t if (this.core.mediaControl.container) {\n\t this.containerChanged();\n\t }\n\t }\n\t }, {\n\t key: 'containerChanged',\n\t value: function containerChanged() {\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_PLAY, this.setPlayIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_PAUSE, this.setPauseIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_STOP, this.resetIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_ENDED, this.resetIcon);\n\t this.listenTo(this.core.mediaControl.container, _baseEvents2['default'].CONTAINER_ERROR, this.resetIcon);\n\t }\n\t }, {\n\t key: 'disable',\n\t value: function disable() {\n\t _get(Object.getPrototypeOf(Favicon.prototype), 'disable', this).call(this);\n\t this.resetIcon();\n\t }\n\t }, {\n\t key: 'createIcon',\n\t value: function createIcon(charCode) {\n\t var canvas = (0, _clapprZepto2['default'])(' ');\n\t canvas[0].width = 32;\n\t canvas[0].height = 32;\n\t var ctx = canvas[0].getContext('2d');\n\t ctx.fillStyle = '#000';\n\t ctx.font = '25px Player';\n\t ctx.fillText(String.fromCharCode(charCode), 5, 26);\n\t var icon = (0, _clapprZepto2['default'])(' ');\n\t icon.attr('href', canvas[0].toDataURL('image/png'));\n\t return icon;\n\t }\n\t }, {\n\t key: 'setPlayIcon',\n\t value: function setPlayIcon() {\n\t if (!this.playIcon) {\n\t this.playIcon = this.createIcon(0xe001);\n\t }\n\t this.changeIcon(this.playIcon);\n\t }\n\t }, {\n\t key: 'setPauseIcon',\n\t value: function setPauseIcon() {\n\t if (!this.pauseIcon) {\n\t this.pauseIcon = this.createIcon(0xe002);\n\t }\n\t this.changeIcon(this.pauseIcon);\n\t }\n\t }, {\n\t key: 'resetIcon',\n\t value: function resetIcon() {\n\t if (this.currentIcon) {\n\t this.currentIcon.remove();\n\t }\n\t (0, _clapprZepto2['default'])('head').append(this.oldIcon);\n\t }\n\t }, {\n\t key: 'changeIcon',\n\t value: function changeIcon(icon) {\n\t if (icon) {\n\t this.oldIcon.remove();\n\t if (this.currentIcon) {\n\t this.currentIcon.remove();\n\t }\n\t this.currentIcon = icon;\n\t (0, _clapprZepto2['default'])('head').append(icon);\n\t }\n\t }\n\t }]);\n\t\n\t return Favicon;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = Favicon;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 120 */\n/*!**************************************!*\\\n !*** ./src/plugins/favicon/index.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./favicon.js */ 119);\n\n/***/ },\n/* 121 */\n/*!**********************************************************!*\\\n !*** ./src/plugins/google_analytics/google_analytics.js ***!\n \\**********************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar GoogleAnalytics = (function (_ContainerPlugin) {\n\t _inherits(GoogleAnalytics, _ContainerPlugin);\n\t\n\t _createClass(GoogleAnalytics, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'google_analytics';\n\t }\n\t }]);\n\t\n\t function GoogleAnalytics(container) {\n\t _classCallCheck(this, GoogleAnalytics);\n\t\n\t _get(Object.getPrototypeOf(GoogleAnalytics.prototype), 'constructor', this).call(this, container);\n\t if (this.container.options.gaAccount) {\n\t this.account = this.container.options.gaAccount;\n\t this.trackerName = this.container.options.gaTrackerName ? this.container.options.gaTrackerName + \".\" : 'Clappr.';\n\t this.domainName = this.container.options.gaDomainName;\n\t this.currentHDState = undefined;\n\t this.embedScript();\n\t }\n\t }\n\t\n\t _createClass(GoogleAnalytics, [{\n\t key: 'embedScript',\n\t value: function embedScript() {\n\t var _this = this;\n\t\n\t if (!window._gat) {\n\t var script = document.createElement('script');\n\t script.setAttribute(\"type\", \"text/javascript\");\n\t script.setAttribute(\"async\", \"async\");\n\t script.setAttribute(\"src\", \"//www.google-analytics.com/ga.js\");\n\t script.onload = function () {\n\t return _this.addEventListeners();\n\t };\n\t document.body.appendChild(script);\n\t } else {\n\t this.addEventListeners();\n\t }\n\t }\n\t }, {\n\t key: 'addEventListeners',\n\t value: function addEventListeners() {\n\t var _this2 = this;\n\t\n\t if (this.container) {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_READY, this.onReady);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PAUSE, this.onPause);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onEnded);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ERROR, this.onError);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_VOLUME, function (event) {\n\t return _this2.onVolumeChanged(event);\n\t });\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_SEEK, function (event) {\n\t return _this2.onSeek(event);\n\t });\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_FULL_SCREEN, this.onFullscreen);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_HIGHDEFINITIONUPDATE, this.onHD);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR);\n\t }\n\t _gaq.push([this.trackerName + '_setAccount', this.account]);\n\t if (!!this.domainName) _gaq.push([this.trackerName + '_setDomainName', this.domainName]);\n\t }\n\t }, {\n\t key: 'onReady',\n\t value: function onReady() {\n\t this.push([\"Video\", \"Playback\", this.container.playback.name]);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.push([\"Video\", \"Play\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.push([\"Video\", \"Stop\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onEnded',\n\t value: function onEnded() {\n\t this.push([\"Video\", \"Ended\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t this.push([\"Video\", \"Buffering\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t this.push([\"Video\", \"Bufferfull\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onError',\n\t value: function onError() {\n\t this.push([\"Video\", \"Error\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onHD',\n\t value: function onHD(isHD) {\n\t var status = isHD ? \"ON\" : \"OFF\";\n\t if (status !== this.currentHDState) {\n\t this.currentHDState = status;\n\t this.push([\"Video\", \"HD - \" + status, this.container.playback.src]);\n\t }\n\t }\n\t }, {\n\t key: 'onPlaybackChanged',\n\t value: function onPlaybackChanged(playbackState) {\n\t if (playbackState.type !== null) {\n\t this.push([\"Video\", \"Playback Type - \" + playbackState.type, this.container.playback.src]);\n\t }\n\t }\n\t }, {\n\t key: 'onDVR',\n\t value: function onDVR(dvrInUse) {\n\t var status = dvrInUse ? \"ON\" : \"OFF\";\n\t this.push([\"Interaction\", \"DVR - \" + status, this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onPause',\n\t value: function onPause() {\n\t this.push([\"Video\", \"Pause\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onSeek',\n\t value: function onSeek() {\n\t this.push([\"Video\", \"Seek\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onVolumeChanged',\n\t value: function onVolumeChanged() {\n\t this.push([\"Interaction\", \"Volume\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'onFullscreen',\n\t value: function onFullscreen() {\n\t this.push([\"Interaction\", \"Fullscreen\", this.container.playback.src]);\n\t }\n\t }, {\n\t key: 'push',\n\t value: function push(array) {\n\t var res = [this.trackerName + \"_trackEvent\"].concat(array);\n\t _gaq.push(res);\n\t }\n\t }]);\n\t\n\t return GoogleAnalytics;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = GoogleAnalytics;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 122 */\n/*!***********************************************!*\\\n !*** ./src/plugins/google_analytics/index.js ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./google_analytics */ 121);\n\n/***/ },\n/* 123 */\n/*!********************************!*\\\n !*** ./src/plugins/log/log.js ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tvar _baseKibo = __webpack_require__(/*! base/kibo */ 35);\n\t\n\tvar _baseKibo2 = _interopRequireDefault(_baseKibo);\n\t\n\tvar BOLD = 'font-weight: bold; font-size: 13px;';\n\tvar INFO = 'color: #006600;' + BOLD;\n\tvar DEBUG = 'color: #0000ff;' + BOLD;\n\tvar WARN = 'color: #ff8000;' + BOLD;\n\tvar ERROR = 'color: #ff0000;' + BOLD;\n\t\n\tvar LEVEL_DEBUG = 0;\n\tvar LEVEL_INFO = 1;\n\tvar LEVEL_WARN = 2;\n\tvar LEVEL_ERROR = 3;\n\tvar LEVEL_DISABLED = 4;\n\t\n\tvar COLORS = [DEBUG, INFO, WARN, ERROR, ERROR];\n\tvar DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled'];\n\t\n\tvar Log = (function () {\n\t function Log() {\n\t var _this = this;\n\t\n\t var level = arguments.length <= 0 || arguments[0] === undefined ? LEVEL_INFO : arguments[0];\n\t var offLevel = arguments.length <= 1 || arguments[1] === undefined ? LEVEL_DISABLED : arguments[1];\n\t\n\t _classCallCheck(this, Log);\n\t\n\t this.kibo = new _baseKibo2['default']();\n\t this.kibo.down(['ctrl shift d'], function () {\n\t return _this.onOff();\n\t });\n\t this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress'];\n\t this.level = level;\n\t this.offLevel = offLevel;\n\t }\n\t\n\t _createClass(Log, [{\n\t key: 'debug',\n\t value: function debug(klass) {\n\t this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'info',\n\t value: function info(klass) {\n\t this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'warn',\n\t value: function warn(klass) {\n\t this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'error',\n\t value: function error(klass) {\n\t this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1));\n\t }\n\t }, {\n\t key: 'onOff',\n\t value: function onOff() {\n\t if (this.level === this.offLevel) {\n\t this.level = this.previousLevel;\n\t } else {\n\t this.previousLevel = this.level;\n\t this.level = this.offLevel;\n\t }\n\t // handle instances where console.log is unavailable\n\t if (window.console && window.console.log) {\n\t console.log(\"%c[Clappr.Log] set log level to \" + DESCRIPTIONS[this.level], WARN);\n\t }\n\t }\n\t }, {\n\t key: 'level',\n\t value: function level(newLevel) {\n\t this.level = newLevel;\n\t }\n\t }, {\n\t key: 'log',\n\t value: function log(klass, level, message) {\n\t if (this.BLACKLIST.indexOf(message[0]) >= 0) return;\n\t if (level < this.level) return;\n\t\n\t if (!message) {\n\t message = klass;\n\t klass = null;\n\t }\n\t var klassDescription = \"\";\n\t var color = COLORS[level];\n\t if (klass) {\n\t klassDescription = \"[\" + klass + \"]\";\n\t }\n\t if (window.console && window.console.log) {\n\t console.log.apply(console, [\"%c[\" + DESCRIPTIONS[level] + \"]\" + klassDescription, color].concat(message));\n\t }\n\t }\n\t }]);\n\t\n\t return Log;\n\t})();\n\t\n\texports['default'] = Log;\n\t\n\tLog.LEVEL_DEBUG = LEVEL_DEBUG;\n\tLog.LEVEL_INFO = LEVEL_INFO;\n\tLog.LEVEL_WARN = LEVEL_WARN;\n\tLog.LEVEL_ERROR = LEVEL_ERROR;\n\t\n\tLog.getInstance = function () {\n\t if (this._instance === undefined) {\n\t this._instance = new this();\n\t this._instance.previousLevel = this._instance.level;\n\t this._instance.level = this._instance.offLevel;\n\t }\n\t return this._instance;\n\t};\n\t\n\tLog.setLevel = function (level) {\n\t this.getInstance().level = level;\n\t};\n\t\n\tLog.debug = function (klass) {\n\t this.getInstance().debug.apply(this.getInstance(), arguments);\n\t};\n\tLog.info = function (klass) {\n\t this.getInstance().info.apply(this.getInstance(), arguments);\n\t};\n\tLog.warn = function (klass) {\n\t this.getInstance().warn.apply(this.getInstance(), arguments);\n\t};\n\tLog.error = function (klass) {\n\t this.getInstance().error.apply(this.getInstance(), arguments);\n\t};\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 124 */\n/*!**************************************!*\\\n !*** ./src/plugins/poster/poster.js ***!\n \\**************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {//Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _componentsMediator = __webpack_require__(/*! components/mediator */ 16);\n\t\n\tvar _componentsMediator2 = _interopRequireDefault(_componentsMediator);\n\t\n\tvar _publicPosterScss = __webpack_require__(/*! ./public/poster.scss */ 142);\n\t\n\tvar _publicPosterScss2 = _interopRequireDefault(_publicPosterScss);\n\t\n\tvar _publicPosterHtml = __webpack_require__(/*! ./public/poster.html */ 151);\n\t\n\tvar _publicPosterHtml2 = _interopRequireDefault(_publicPosterHtml);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar PosterPlugin = (function (_UIContainerPlugin) {\n\t _inherits(PosterPlugin, _UIContainerPlugin);\n\t\n\t _createClass(PosterPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'poster';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicPosterHtml2['default']);\n\t }\n\t }, {\n\t key: 'shouldRender',\n\t get: function get() {\n\t return this.container.playback.name !== 'html_img';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'player-poster',\n\t 'data-poster': ''\n\t };\n\t }\n\t }, {\n\t key: 'events',\n\t get: function get() {\n\t return {\n\t 'click': 'clicked'\n\t };\n\t }\n\t }]);\n\t\n\t function PosterPlugin(container) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, PosterPlugin);\n\t\n\t _get(Object.getPrototypeOf(PosterPlugin.prototype), 'constructor', this).call(this, container);\n\t this.hasStartedPlaying = false;\n\t this.playRequested = false;\n\t this.render();\n\t process.nextTick(function () {\n\t return _this.update();\n\t });\n\t }\n\t\n\t _createClass(PosterPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.update);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.update);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_OPTIONS_CHANGE, this.render);\n\t _componentsMediator2['default'].on(this.options.playerId + ':' + _baseEvents2['default'].PLAYER_RESIZE, this.updateSize, this);\n\t }\n\t }, {\n\t key: 'stopListening',\n\t value: function stopListening() {\n\t _get(Object.getPrototypeOf(PosterPlugin.prototype), 'stopListening', this).call(this);\n\t _componentsMediator2['default'].off(this.options.playerId + ':' + _baseEvents2['default'].PLAYER_RESIZE, this.updateSize, this);\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.hasStartedPlaying = true;\n\t this.update();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.hasStartedPlaying = false;\n\t this.playRequested = false;\n\t this.update();\n\t }\n\t }, {\n\t key: 'showPlayButton',\n\t value: function showPlayButton(show) {\n\t if (!this.options.chromeless) {\n\t if (show) {\n\t this.$playButton.show();\n\t this.$el.addClass(\"clickable\");\n\t this.updateSize();\n\t } else {\n\t this.$playButton.hide();\n\t this.$el.removeClass(\"clickable\");\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'clicked',\n\t value: function clicked() {\n\t if (!this.options.chromeless) {\n\t this.playRequested = true;\n\t this.update();\n\t this.container.play();\n\t }\n\t return false;\n\t }\n\t }, {\n\t key: 'updateSize',\n\t value: function updateSize() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t var height = this.$el.height();\n\t this.$el.css({ fontSize: height });\n\t if (!this.playRequested && !this.hasStartedPlaying) {\n\t this.$playWrapper.css({ marginTop: -(this.$playWrapper.height() / 2) });\n\t }\n\t }\n\t }, {\n\t key: 'shouldHideOnPlay',\n\t value: function shouldHideOnPlay() {\n\t // Audio broadcasts should keep the poster up; video should hide poster while playing.\n\t return !(this.container.playback.name == 'html5_audio' || this.options.audioOnly);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t if (!this.hasStartedPlaying) {\n\t this.container.disableMediaControl();\n\t this.$el.show();\n\t var showPlayButton = !this.playRequested && !this.container.buffering;\n\t this.showPlayButton(showPlayButton);\n\t } else {\n\t this.container.enableMediaControl();\n\t if (this.shouldHideOnPlay()) {\n\t this.$el.hide();\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t if (!this.shouldRender) {\n\t return;\n\t }\n\t var style = _baseStyler2['default'].getStyleFor(_publicPosterScss2['default'], { baseUrl: this.options.baseUrl });\n\t this.$el.html(this.template());\n\t this.$el.append(style);\n\t if (this.options.poster) {\n\t var imgEl = (0, _clapprZepto2['default'])('
');\n\t imgEl.css({ 'background-image': 'url(' + this.options.poster + ')' });\n\t this.$el.prepend(imgEl);\n\t }\n\t this.container.$el.append(this.el);\n\t this.$playButton = this.$el.find('.poster-icon');\n\t this.$playWrapper = this.$el.find('.play-wrapper');\n\t if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n\t var buttonsColor = this.options.mediacontrol.buttons;\n\t this.$playButton.css('color', buttonsColor);\n\t }\n\t this.update();\n\t return this;\n\t }\n\t }]);\n\t\n\t return PosterPlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = PosterPlugin;\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./~/process/browser.js */ 34)))\n\n/***/ },\n/* 125 */\n/*!****************************************!*\\\n !*** ./src/plugins/seek_time/index.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./seek_time */ 126);\n\n/***/ },\n/* 126 */\n/*!********************************************!*\\\n !*** ./src/plugins/seek_time/seek_time.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUtils = __webpack_require__(/*! base/utils */ 2);\n\t\n\tvar _baseUi_core_plugin = __webpack_require__(/*! base/ui_core_plugin */ 25);\n\t\n\tvar _baseUi_core_plugin2 = _interopRequireDefault(_baseUi_core_plugin);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _basePlayback = __webpack_require__(/*! base/playback */ 6);\n\t\n\tvar _basePlayback2 = _interopRequireDefault(_basePlayback);\n\t\n\tvar _publicSeek_timeScss = __webpack_require__(/*! ./public/seek_time.scss */ 143);\n\t\n\tvar _publicSeek_timeScss2 = _interopRequireDefault(_publicSeek_timeScss);\n\t\n\tvar _publicSeek_timeHtml = __webpack_require__(/*! ./public/seek_time.html */ 152);\n\t\n\tvar _publicSeek_timeHtml2 = _interopRequireDefault(_publicSeek_timeHtml);\n\t\n\tvar SeekTime = (function (_UICorePlugin) {\n\t _inherits(SeekTime, _UICorePlugin);\n\t\n\t _createClass(SeekTime, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'seek_time';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicSeek_timeHtml2['default']);\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'class': 'seek-time',\n\t 'data-seek-time': ''\n\t };\n\t }\n\t }, {\n\t key: 'mediaControl',\n\t get: function get() {\n\t return this.core.mediaControl;\n\t }\n\t }, {\n\t key: 'mediaControlContainer',\n\t get: function get() {\n\t return this.mediaControl.container;\n\t }\n\t }, {\n\t key: 'isLiveStreamWithDvr',\n\t get: function get() {\n\t return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === _basePlayback2['default'].LIVE && this.mediaControlContainer.isDvrEnabled();\n\t }\n\t }, {\n\t key: 'durationShown',\n\t get: function get() {\n\t return this.isLiveStreamWithDvr;\n\t }\n\t }, {\n\t key: 'useActualLiveTime',\n\t get: function get() {\n\t return this.actualLiveTime && this.isLiveStreamWithDvr;\n\t }\n\t }]);\n\t\n\t function SeekTime(core) {\n\t _classCallCheck(this, SeekTime);\n\t\n\t _get(Object.getPrototypeOf(SeekTime.prototype), 'constructor', this).call(this, core);\n\t this.hoveringOverSeekBar = false;\n\t this.hoverPosition = null;\n\t this.duration = null;\n\t this.actualLiveTime = !!this.mediaControl.options.actualLiveTime;\n\t if (this.actualLiveTime) {\n\t if (!!this.mediaControl.options.actualLiveServerTime) {\n\t this.actualLiveServerTimeDiff = new Date().getTime() - new Date(this.mediaControl.options.actualLiveServerTime).getTime();\n\t } else {\n\t this.actualLiveServerTimeDiff = 0;\n\t }\n\t }\n\t }\n\t\n\t _createClass(SeekTime, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_RENDERED, this.render);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime);\n\t this.listenTo(this.mediaControl, _baseEvents2['default'].MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged);\n\t if (this.mediaControlContainer) {\n\t this.listenTo(this.mediaControlContainer, _baseEvents2['default'].CONTAINER_PLAYBACKDVRSTATECHANGED, this.update);\n\t this.listenTo(this.mediaControlContainer, _baseEvents2['default'].CONTAINER_TIMEUPDATE, this.updateDuration);\n\t }\n\t }\n\t }, {\n\t key: 'onContainerChanged',\n\t value: function onContainerChanged() {\n\t this.stopListening();\n\t this.bindEvents();\n\t }\n\t }, {\n\t key: 'updateDuration',\n\t value: function updateDuration(timeProgress) {\n\t this.duration = timeProgress.total;\n\t this.update();\n\t }\n\t }, {\n\t key: 'showTime',\n\t value: function showTime(event) {\n\t this.hoveringOverSeekBar = true;\n\t this.calculateHoverPosition(event);\n\t this.update();\n\t }\n\t }, {\n\t key: 'hideTime',\n\t value: function hideTime() {\n\t this.hoveringOverSeekBar = false;\n\t this.update();\n\t }\n\t }, {\n\t key: 'calculateHoverPosition',\n\t value: function calculateHoverPosition(event) {\n\t var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left;\n\t // proportion into the seek bar that the mouse is hovered over 0-1\n\t this.hoverPosition = Math.min(1, Math.max(offset / this.mediaControl.$seekBarContainer.width(), 0));\n\t }\n\t }, {\n\t key: 'getSeekTime',\n\t value: function getSeekTime() {\n\t var seekTime = null;\n\t if (this.useActualLiveTime) {\n\t var d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff),\n\t e = new Date(d);\n\t var secondsSinceMidnight = (e - d.setHours(0, 0, 0, 0)) / 1000;\n\t seekTime = secondsSinceMidnight - this.duration + this.hoverPosition * this.duration;\n\t if (seekTime < 0) {\n\t seekTime += 86400;\n\t }\n\t } else {\n\t seekTime = this.hoverPosition * this.duration;\n\t }\n\t return { seekTime: seekTime, secondsSinceMidnight: secondsSinceMidnight };\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t if (!this.rendered) {\n\t // update() is always called after a render\n\t return;\n\t }\n\t if (!this.shouldBeVisible()) {\n\t this.$el.hide();\n\t this.$el.css('left', \"-100%\");\n\t } else {\n\t var seekTime = this.getSeekTime();\n\t var currentSeekTime = (0, _baseUtils.formatTime)(seekTime.seekTime, this.useActualLiveTime);\n\t // only update dom if necessary, ie time actually changed\n\t if (currentSeekTime !== this.displayedSeekTime) {\n\t this.$seekTimeEl.text(currentSeekTime);\n\t this.displayedSeekTime = currentSeekTime;\n\t }\n\t\n\t if (this.durationShown) {\n\t this.$durationEl.show();\n\t var currentDuration = (0, _baseUtils.formatTime)(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime);\n\t if (currentDuration !== this.displayedDuration) {\n\t this.$durationEl.text(currentDuration);\n\t this.displayedDuration = currentDuration;\n\t }\n\t } else {\n\t this.$durationEl.hide();\n\t }\n\t\n\t // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n\t this.$el.show();\n\t var containerWidth = this.mediaControl.$seekBarContainer.width();\n\t var elWidth = this.$el.width();\n\t var elLeftPos = this.hoverPosition * containerWidth;\n\t elLeftPos -= elWidth / 2;\n\t elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth));\n\t this.$el.css('left', elLeftPos);\n\t }\n\t }\n\t }, {\n\t key: 'shouldBeVisible',\n\t value: function shouldBeVisible() {\n\t return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.rendered = true;\n\t this.displayedDuration = null;\n\t this.displayedSeekTime = null;\n\t var style = _baseStyler2['default'].getStyleFor(_publicSeek_timeScss2['default']);\n\t this.$el.html(this.template());\n\t this.$el.append(style);\n\t this.$el.hide();\n\t this.mediaControl.$el.append(this.el);\n\t this.$seekTimeEl = this.$el.find('[data-seek-time]');\n\t this.$durationEl = this.$el.find('[data-duration]');\n\t this.$durationEl.hide();\n\t this.update();\n\t }\n\t }]);\n\t\n\t return SeekTime;\n\t})(_baseUi_core_plugin2['default']);\n\t\n\texports['default'] = SeekTime;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 127 */\n/*!********************************!*\\\n !*** ./src/plugins/sources.js ***!\n \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseCore_plugin = __webpack_require__(/*! base/core_plugin */ 19);\n\t\n\tvar _baseCore_plugin2 = _interopRequireDefault(_baseCore_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _lodashFind = __webpack_require__(/*! lodash.find */ 14);\n\t\n\tvar _lodashFind2 = _interopRequireDefault(_lodashFind);\n\t\n\tvar SourcesPlugin = (function (_CorePlugin) {\n\t _inherits(SourcesPlugin, _CorePlugin);\n\t\n\t function SourcesPlugin() {\n\t _classCallCheck(this, SourcesPlugin);\n\t\n\t _get(Object.getPrototypeOf(SourcesPlugin.prototype), 'constructor', this).apply(this, arguments);\n\t }\n\t\n\t _createClass(SourcesPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenToOnce(this.core, _baseEvents2['default'].CORE_CONTAINERS_CREATED, this.onContainersCreated);\n\t }\n\t }, {\n\t key: 'onContainersCreated',\n\t value: function onContainersCreated() {\n\t var _this = this;\n\t\n\t var firstValidSource = (0, _lodashFind2['default'])(this.core.containers, function (container) {\n\t return container.playback.name !== 'no_op' || _this.core.containers[0];\n\t });\n\t if (firstValidSource) {\n\t this.core.containers.forEach(function (container) {\n\t if (container !== firstValidSource) {\n\t container.destroy();\n\t }\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'name',\n\t get: function get() {\n\t return 'sources';\n\t }\n\t }]);\n\t\n\t return SourcesPlugin;\n\t})(_baseCore_plugin2['default']);\n\t\n\texports['default'] = SourcesPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 128 */\n/*!***************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/index.js ***!\n \\***************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./spinner_three_bounce */ 129);\n\n/***/ },\n/* 129 */\n/*!******************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/spinner_three_bounce.js ***!\n \\******************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _publicSpinnerHtml = __webpack_require__(/*! ./public/spinner.html */ 153);\n\t\n\tvar _publicSpinnerHtml2 = _interopRequireDefault(_publicSpinnerHtml);\n\t\n\tvar _publicSpinnerScss = __webpack_require__(/*! ./public/spinner.scss */ 144);\n\t\n\tvar _publicSpinnerScss2 = _interopRequireDefault(_publicSpinnerScss);\n\t\n\tvar SpinnerThreeBouncePlugin = (function (_UIContainerPlugin) {\n\t _inherits(SpinnerThreeBouncePlugin, _UIContainerPlugin);\n\t\n\t _createClass(SpinnerThreeBouncePlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'spinner';\n\t }\n\t }, {\n\t key: 'attributes',\n\t get: function get() {\n\t return {\n\t 'data-spinner': '',\n\t 'class': 'spinner-three-bounce'\n\t };\n\t }\n\t }]);\n\t\n\t function SpinnerThreeBouncePlugin(container) {\n\t _classCallCheck(this, SpinnerThreeBouncePlugin);\n\t\n\t _get(Object.getPrototypeOf(SpinnerThreeBouncePlugin.prototype), 'constructor', this).call(this, container);\n\t this.template = (0, _baseTemplate2['default'])(_publicSpinnerHtml2['default']);\n\t this.showTimeout = null;\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ENDED, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_ERROR, this.onStop);\n\t this.render();\n\t }\n\t\n\t _createClass(SpinnerThreeBouncePlugin, [{\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t this.show();\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t var _this = this;\n\t\n\t if (this.showTimeout === null) {\n\t this.showTimeout = setTimeout(function () {\n\t return _this.$el.show();\n\t }, 300);\n\t }\n\t }\n\t }, {\n\t key: 'hide',\n\t value: function hide() {\n\t if (this.showTimeout !== null) {\n\t clearTimeout(this.showTimeout);\n\t this.showTimeout = null;\n\t }\n\t this.$el.hide();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.html(this.template());\n\t var style = _baseStyler2['default'].getStyleFor(_publicSpinnerScss2['default']);\n\t this.container.$el.append(style);\n\t this.container.$el.append(this.$el);\n\t this.$el.hide();\n\t if (this.container.buffering) {\n\t this.onBuffering();\n\t }\n\t return this;\n\t }\n\t }]);\n\t\n\t return SpinnerThreeBouncePlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = SpinnerThreeBouncePlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 130 */\n/*!************************************!*\\\n !*** ./src/plugins/stats/index.js ***!\n \\************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./stats */ 131);\n\n/***/ },\n/* 131 */\n/*!************************************!*\\\n !*** ./src/plugins/stats/stats.js ***!\n \\************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseContainer_plugin = __webpack_require__(/*! base/container_plugin */ 18);\n\t\n\tvar _baseContainer_plugin2 = _interopRequireDefault(_baseContainer_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _clapprZepto = __webpack_require__(/*! clappr-zepto */ 3);\n\t\n\tvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\t\n\tvar StatsPlugin = (function (_ContainerPlugin) {\n\t _inherits(StatsPlugin, _ContainerPlugin);\n\t\n\t _createClass(StatsPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'stats';\n\t }\n\t }]);\n\t\n\t function StatsPlugin(container) {\n\t _classCallCheck(this, StatsPlugin);\n\t\n\t _get(Object.getPrototypeOf(StatsPlugin.prototype), 'constructor', this).call(this, container);\n\t this.setInitialAttrs();\n\t this.reportInterval = this.options.reportInterval || 5000;\n\t this.state = \"IDLE\";\n\t }\n\t\n\t _createClass(StatsPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.container.playback, _baseEvents2['default'].PLAYBACK_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_DESTROYED, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERING, this.onBuffering);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STATS_ADD, this.onStatsAdd);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_BITRATE, this.onStatsAdd);\n\t this.listenTo(this.container.playback, _baseEvents2['default'].PLAYBACK_STATS_ADD, this.onStatsAdd);\n\t }\n\t }, {\n\t key: 'setInitialAttrs',\n\t value: function setInitialAttrs() {\n\t this.firstPlay = true;\n\t this.startupTime = 0;\n\t this.rebufferingTime = 0;\n\t this.watchingTime = 0;\n\t this.rebuffers = 0;\n\t this.externalMetrics = {};\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t this.state = \"PLAYING\";\n\t this.watchingTimeInit = Date.now();\n\t if (!this.intervalId) {\n\t this.intervalId = setInterval(this.report.bind(this), this.reportInterval);\n\t }\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t clearInterval(this.intervalId);\n\t this.intervalId = undefined;\n\t this.state = \"STOPPED\";\n\t }\n\t }, {\n\t key: 'onBuffering',\n\t value: function onBuffering() {\n\t if (this.firstPlay) {\n\t this.startupTimeInit = Date.now();\n\t } else {\n\t this.rebufferingTimeInit = Date.now();\n\t }\n\t this.state = \"BUFFERING\";\n\t this.rebuffers++;\n\t }\n\t }, {\n\t key: 'onBufferFull',\n\t value: function onBufferFull() {\n\t if (this.firstPlay && !!this.startupTimeInit) {\n\t this.firstPlay = false;\n\t this.startupTime = Date.now() - this.startupTimeInit;\n\t this.watchingTimeInit = Date.now();\n\t } else if (!!this.rebufferingTimeInit) {\n\t this.rebufferingTime += this.getRebufferingTime();\n\t }\n\t this.rebufferingTimeInit = undefined;\n\t this.state = \"PLAYING\";\n\t }\n\t }, {\n\t key: 'getRebufferingTime',\n\t value: function getRebufferingTime() {\n\t return Date.now() - this.rebufferingTimeInit;\n\t }\n\t }, {\n\t key: 'getWatchingTime',\n\t value: function getWatchingTime() {\n\t var totalTime = Date.now() - this.watchingTimeInit;\n\t return totalTime - this.rebufferingTime;\n\t }\n\t }, {\n\t key: 'isRebuffering',\n\t value: function isRebuffering() {\n\t return !!this.rebufferingTimeInit;\n\t }\n\t }, {\n\t key: 'onStatsAdd',\n\t value: function onStatsAdd(metric) {\n\t _clapprZepto2['default'].extend(this.externalMetrics, metric);\n\t }\n\t }, {\n\t key: 'getStats',\n\t value: function getStats() {\n\t var metrics = {\n\t startupTime: this.startupTime,\n\t rebuffers: this.rebuffers,\n\t rebufferingTime: this.isRebuffering() ? this.rebufferingTime + this.getRebufferingTime() : this.rebufferingTime,\n\t watchingTime: this.isRebuffering() ? this.getWatchingTime() - this.getRebufferingTime() : this.getWatchingTime()\n\t };\n\t _clapprZepto2['default'].extend(metrics, this.externalMetrics);\n\t return metrics;\n\t }\n\t }, {\n\t key: 'report',\n\t value: function report() {\n\t this.container.statsReport(this.getStats());\n\t }\n\t }]);\n\t\n\t return StatsPlugin;\n\t})(_baseContainer_plugin2['default']);\n\t\n\texports['default'] = StatsPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 132 */\n/*!****************************************!*\\\n !*** ./src/plugins/watermark/index.js ***!\n \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(/*! ./watermark */ 133);\n\n/***/ },\n/* 133 */\n/*!********************************************!*\\\n !*** ./src/plugins/watermark/watermark.js ***!\n \\********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright 2014 Globo.com Player authors. All rights reserved.\n\t// Use of this source code is governed by a BSD-style\n\t// license that can be found in the LICENSE file.\n\t\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tvar _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; }; })();\n\t\n\tvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _baseUi_container_plugin = __webpack_require__(/*! base/ui_container_plugin */ 20);\n\t\n\tvar _baseUi_container_plugin2 = _interopRequireDefault(_baseUi_container_plugin);\n\t\n\tvar _baseEvents = __webpack_require__(/*! base/events */ 1);\n\t\n\tvar _baseEvents2 = _interopRequireDefault(_baseEvents);\n\t\n\tvar _baseStyler = __webpack_require__(/*! base/styler */ 7);\n\t\n\tvar _baseStyler2 = _interopRequireDefault(_baseStyler);\n\t\n\tvar _baseTemplate = __webpack_require__(/*! base/template */ 8);\n\t\n\tvar _baseTemplate2 = _interopRequireDefault(_baseTemplate);\n\t\n\tvar _publicWatermarkScss = __webpack_require__(/*! ./public/watermark.scss */ 145);\n\t\n\tvar _publicWatermarkScss2 = _interopRequireDefault(_publicWatermarkScss);\n\t\n\tvar _publicWatermarkHtml = __webpack_require__(/*! ./public/watermark.html */ 154);\n\t\n\tvar _publicWatermarkHtml2 = _interopRequireDefault(_publicWatermarkHtml);\n\t\n\tvar WaterMarkPlugin = (function (_UIContainerPlugin) {\n\t _inherits(WaterMarkPlugin, _UIContainerPlugin);\n\t\n\t _createClass(WaterMarkPlugin, [{\n\t key: 'name',\n\t get: function get() {\n\t return 'watermark';\n\t }\n\t }, {\n\t key: 'template',\n\t get: function get() {\n\t return (0, _baseTemplate2['default'])(_publicWatermarkHtml2['default']);\n\t }\n\t }]);\n\t\n\t function WaterMarkPlugin(container) {\n\t _classCallCheck(this, WaterMarkPlugin);\n\t\n\t _get(Object.getPrototypeOf(WaterMarkPlugin.prototype), 'constructor', this).call(this, container);\n\t this.configure();\n\t }\n\t\n\t _createClass(WaterMarkPlugin, [{\n\t key: 'bindEvents',\n\t value: function bindEvents() {\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_PLAY, this.onPlay);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_STOP, this.onStop);\n\t this.listenTo(this.container, _baseEvents2['default'].CONTAINER_OPTIONS_CHANGE, this.configure);\n\t }\n\t }, {\n\t key: 'configure',\n\t value: function configure() {\n\t this.position = this.options.position || \"bottom-right\";\n\t if (this.options.watermark) {\n\t this.imageUrl = this.options.watermark;\n\t this.imageLink = this.options.watermarkLink;\n\t this.render();\n\t } else {\n\t this.$el.remove();\n\t }\n\t }\n\t }, {\n\t key: 'onPlay',\n\t value: function onPlay() {\n\t if (!this.hidden) this.$el.show();\n\t }\n\t }, {\n\t key: 'onStop',\n\t value: function onStop() {\n\t this.$el.hide();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t this.$el.hide();\n\t var templateOptions = { position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink };\n\t this.$el.html(this.template(templateOptions));\n\t var style = _baseStyler2['default'].getStyleFor(_publicWatermarkScss2['default']);\n\t this.container.$el.append(style);\n\t this.container.$el.append(this.$el);\n\t return this;\n\t }\n\t }]);\n\t\n\t return WaterMarkPlugin;\n\t})(_baseUi_container_plugin2['default']);\n\t\n\texports['default'] = WaterMarkPlugin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 134 */\n/*!****************************************************!*\\\n !*** ./src/components/container/public/style.scss ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}[data-player]:not(.nocursor) .container[data-container].pointer-enabled{cursor:pointer}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 135 */\n/*!***********************************************!*\\\n !*** ./src/components/core/public/style.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:lucida grande,tahoma,verdana,arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 136 */\n/*!****************************************************************!*\\\n !*** ./src/components/media_control/public/media-control.scss ***!\n \\****************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Player;src:url(\" + __webpack_require__(/*! ./Player-Regular.eot */ 23) + \");src:url(\" + __webpack_require__(/*! ./Player-Regular.eot */ 23) + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + __webpack_require__(/*! ./Player-Regular.ttf */ 48) + \") format(\\\"truetype\\\"),url(\" + __webpack_require__(/*! ./Player-Regular.svg */ 47) + \"#player) format(\\\"svg\\\")}.media-control-notransition{-webkit-transition:none !important false;transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + __webpack_require__(/*! ./closed-hand.cur */ 49) + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + __webpack_require__(/*! ./closed-hand.cur */ 49) + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:-owg-linear-gradient(transparent,rgba(0,0,0,.9));background:-webkit-linear-gradient(transparent,rgba(0,0,0,.9));-pie-background:-pie-linear-gradient(transparent,rgba(0,0,0,.9));background:linear-gradient(transparent,rgba(0,0,0,.9));-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{font-family:Player;font-weight:400;font-style:normal;font-size:26px;line-height:32px;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;vertical-align:middle;pointer-events:auto;-webkit-transition:bottom .4s ease-out;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]:before{content:\\\"\\\\E006\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen].shrink:before{content:\\\"\\\\E007\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{cursor:default;float:right;background-color:transparent;border:0;height:100%;opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]:before{content:\\\"\\\\E008\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].playing:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].paused:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].playing:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].stopped:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin-left:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin:0 3px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:16px;height:32px;margin-right:6px;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:before{content:\\\"\\\\E004\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted{opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:hover{opacity:.7}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:before{content:\\\"\\\\E005\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;top:6px;width:42px;height:18px;padding:3px 0;overflow:hidden;-webkit-transition:width .2s ease-out;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;-webkit-transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1){padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{height:12px;top:9px;padding:0;width:0}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 137 */\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.scss ***!\n \\*************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".clappr-flash-playback[data-flash-playback]{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 138 */\n/*!*****************************************************!*\\\n !*** ./src/playbacks/html5_video/public/style.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 139 */\n/*!**************************************************!*\\\n !*** ./src/playbacks/html_img/public/style.scss ***!\n \\**************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 140 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/no_op/public/style.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-no-op]{z-index:1000;position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;top:40%;left:0;right:0;color:#fff}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 141 */\n/*!***********************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/dvr_controls.scss ***!\n \\***********************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + __webpack_require__(/*! ./Roboto.ttf */ 157) + \") format(\\\"truetype\\\")}.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;-webkit-transition:all .1s ease;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 142 */\n/*!***********************************************!*\\\n !*** ./src/plugins/poster/public/poster.scss ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"@font-face{font-family:Player;src:url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.eot */ 23) + \");src:url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.eot */ 23) + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.ttf */ 48) + \") format(\\\"truetype\\\"),url(\" + __webpack_require__(/*! ../../../components/media_control/public/Player-Regular.svg */ 47) + \"#player) format(\\\"svg\\\")}.player-poster[data-poster]{position:absolute;height:100%;width:100%;z-index:998;top:0;left:0}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster] .poster-background[data-poster]{width:100%;height:100%;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster] .play-wrapper[data-poster]{position:absolute;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]{font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity text-shadow .1s;-webkit-transition-delay:ease;transition:opacity text-shadow .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster].play[data-poster]:before{content:\\\"\\\\E001\\\"}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]:hover{opacity:1;text-shadow:hsla(0,0%,100%,.8) 0 0 15px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 143 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/seek_time/public/seek_time.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;width:auto;height:20px;line-height:20px;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] span[data-seek-time]{position:relative;color:#fff;font-size:10px;padding-left:7px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]{position:relative;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 144 */\n/*!**************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/public/spinner.scss ***!\n \\**************************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;top:47%;left:0;right:0;margin-left:auto;margin-right:auto}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 145 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/watermark/public/watermark.scss ***!\n \\*****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(/*! ./../../../../~/css-loader/lib/css-base.js */ 9)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 146 */\n/*!****************************************************************!*\\\n !*** ./src/components/media_control/public/media-control.html ***!\n \\****************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n\\n\";\n\n/***/ },\n/* 147 */\n/*!*************************************************************!*\\\n !*** ./src/playbacks/base_flash_playback/public/flash.html ***!\n \\*************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" ?inline=1\\\">\\n \\n \\n \\n \\n \\n \\\">\\n \\n &callback=<%= callbackName %>\\\">\\n\\\"\\n type=\\\"application/x-shockwave-flash\\\"\\n disabled=\\\"disabled\\\"\\n tabindex=\\\"-1\\\"\\n enablecontextmenu=\\\"false\\\"\\n allowScriptAccess=\\\"always\\\"\\n quality=\\\"autohigh\\\"\\n pluginspage=\\\"http://www.macromedia.com/go/getflashplayer\\\"\\n wmode=\\\"<%= wmode %>\\\"\\n swliveconnect=\\\"true\\\"\\n allowfullscreen=\\\"false\\\"\\n bgcolor=\\\"#000000\\\"\\n FlashVars=\\\"playbackId=<%= playbackId %>&callback=<%= callbackName %>\\\"\\n src=\\\"<%= swfPath %>\\\"\\n width=\\\"100%\\\"\\n height=\\\"100%\\\">\\n \\n\";\n\n/***/ },\n/* 148 */\n/*!*****************************************************!*\\\n !*** ./src/playbacks/html5_video/public/index.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\\" type=\\\"<%=type%>\\\">\\n\";\n\n/***/ },\n/* 149 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/no_op/public/error.html ***!\n \\***********************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \\n<%=message%>
\\n\";\n\n/***/ },\n/* 150 */\n/*!****************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/index.html ***!\n \\****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
LIVE
\\nBACK TO LIVE \\n\";\n\n/***/ },\n/* 151 */\n/*!***********************************************!*\\\n !*** ./src/plugins/poster/public/poster.html ***!\n \\***********************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n \\n
\\n\";\n\n/***/ },\n/* 152 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/seek_time/public/seek_time.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \\n \\n\";\n\n/***/ },\n/* 153 */\n/*!**************************************************************!*\\\n !*** ./src/plugins/spinner_three_bounce/public/spinner.html ***!\n \\**************************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n\";\n\n/***/ },\n/* 154 */\n/*!*****************************************************!*\\\n !*** ./src/plugins/watermark/public/watermark.html ***!\n \\*****************************************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n\";\n\n/***/ },\n/* 155 */\n/*!***********************************************!*\\\n !*** ./src/playbacks/flash/public/Player.swf ***!\n \\***********************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"4b76590b32dab62bc95c1b7951efae78.swf\";\n\n/***/ },\n/* 156 */\n/*!****************************************************!*\\\n !*** ./src/playbacks/flashls/public/HLSPlayer.swf ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"836868f5c501cad9daabdcc31886bd7c.swf\";\n\n/***/ },\n/* 157 */\n/*!****************************************************!*\\\n !*** ./src/plugins/dvr_controls/public/Roboto.ttf ***!\n \\****************************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__.p + \"38861cba61c66739c1452c3a71e39852.ttf\";\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** clappr.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"<%=baseUrl%>/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap e82c24f54f6999a07eca\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Player from 'components/player'\nimport Utils from 'base/utils'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport ContainerPlugin from 'base/container_plugin'\nimport CorePlugin from 'base/core_plugin'\nimport UICorePlugin from 'base/ui_core_plugin'\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport BaseObject from 'base/base_object'\nimport UIObject from 'base/ui_object'\nimport Browser from 'components/browser'\nimport Container from 'components/container'\nimport Core from 'components/core'\nimport Loader from 'components/loader'\nimport Mediator from 'components/mediator'\nimport MediaControl from 'components/media_control'\nimport PlayerInfo from 'components/player_info'\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Flash from 'playbacks/flash'\nimport FlasHLS from 'playbacks/flashls'\nimport HLS from 'playbacks/hls'\nimport HTML5Audio from 'playbacks/html5_audio'\nimport HTML5Video from 'playbacks/html5_video'\nimport HTMLImg from 'playbacks/html_img'\nimport NoOp from 'playbacks/no_op'\nimport Poster from 'plugins/poster'\nimport Log from 'plugins/log'\nimport Styler from 'base/styler'\nimport template from 'base/template'\n\nimport $ from 'clappr-zepto'\n\nvar version = VERSION\n\nexport default {\n Player,\n Mediator,\n Events,\n Browser,\n PlayerInfo,\n MediaControl,\n ContainerPlugin,\n UIContainerPlugin,\n CorePlugin,\n UICorePlugin,\n Playback,\n Container,\n Core,\n Loader,\n BaseObject,\n UIObject,\n Utils,\n BaseFlashPlayback,\n Flash,\n FlasHLS,\n HLS,\n HTML5Audio,\n HTML5Video,\n HTMLImg,\n NoOp,\n Poster,\n Log,\n Styler,\n version,\n template,\n $\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/main.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Log from 'plugins/log'\nimport {uniqueId} from './utils'\nimport execOnce from 'lodash.once'\n\nvar slice = Array.prototype.slice\n\nvar eventSplitter = /\\s+/\n\nvar eventsApi = function(obj, action, name, rest) {\n if (!name) {return true}\n\n // Handle event maps.\n if (typeof name === 'object') {\n for (var key in name) {\n obj[action].apply(obj, [key, name[key]].concat(rest))\n }\n return false\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter)\n for (var i = 0, l = names.length; i < l; i++) {\n obj[action].apply(obj, [names[i]].concat(rest))\n }\n return false\n }\n\n return true\n}\n\nvar triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]\n switch (args.length) {\n case 0: while (++i < l) { (ev = events[i]).callback.call(ev.ctx) } return\n case 1: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1) } return\n case 2: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2) } return\n case 3: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2, a3) } return\n default: while (++i < l) { (ev = events[i]).callback.apply(ev.ctx, args) } return\n }\n}\n\n/**\n * @class Events\n * @constructor\n * @module base\n */\nexport default class Events {\n /**\n * listen to an event indefinitely, if you want to stop you need to call `off`\n * @method on\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n on(name, callback, context) {\n if (!eventsApi(this, 'on', name, [callback, context]) || !callback) {return this}\n this._events || (this._events = {})\n var events = this._events[name] || (this._events[name] = [])\n events.push({callback: callback, context: context, ctx: context || this})\n return this\n }\n\n /**\n * listen to an event only once\n * @method once\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n once(name, callback, context) {\n if (!eventsApi(this, 'once', name, [callback, context]) || !callback) {return this}\n var self = this\n var once = execOnce(function() {\n self.off(name, once)\n callback.apply(this, arguments)\n })\n once._callback = callback\n return this.on(name, once, context)\n }\n\n /**\n * stop listening to an event\n * @method off\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n off(name, callback, context) {\n var retain, ev, events, names, i, l, j, k\n if (!this._events || !eventsApi(this, 'off', name, [callback, context])) {return this}\n if (!name && !callback && !context) {\n this._events = void 0\n return this\n }\n names = name ? [name] : Object.keys(this._events)\n // jshint maxdepth:5\n for (i = 0, l = names.length; i < l; i++) {\n name = names[i]\n events = this._events[name]\n if (events) {\n this._events[name] = retain = []\n if (callback || context) {\n for (j = 0, k = events.length; j < k; j++) {\n ev = events[j]\n if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||\n (context && context !== ev.context)) {\n retain.push(ev)\n }\n }\n }\n if (!retain.length) {delete this._events[name]}\n }\n }\n return this\n }\n\n /**\n * triggers an event given its `name`\n * @method trigger\n * @param {String} name\n */\n trigger(name) {\n var klass = this.name || this.constructor.name\n try {\n Log.debug.apply(Log, [klass].concat(Array.prototype.slice.call(arguments)))\n if (!this._events) {return this}\n var args = slice.call(arguments, 1)\n if (!eventsApi(this, 'trigger', name, args)) {return this}\n var events = this._events[name]\n var allEvents = this._events.all\n if (events) {triggerEvents(events, args)}\n if (allEvents) {triggerEvents(allEvents, arguments)}\n } catch (exception) {\n Log.error.apply(Log, [klass, 'error on event', name, 'trigger','-', exception])\n }\n return this\n }\n\n /**\n * stop listening an event for a given object\n * @method stopListening\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n */\n stopListening(obj, name, callback) {\n var listeningTo = this._listeningTo\n if (!listeningTo) {return this}\n var remove = !name && !callback\n if (!callback && typeof name === 'object') {callback = this}\n if (obj) {(listeningTo = {})[obj._listenId] = obj}\n for (var id in listeningTo) {\n obj = listeningTo[id]\n obj.off(name, callback, this)\n if (remove || Object.keys(obj._events).length === 0) {delete this._listeningTo[id]}\n }\n return this\n }\n}\n\n\n/**\n * listen to an event indefinitely for a given `obj`\n * @method listenTo\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenTo(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\n/**\n * listen to an event once for a given `obj`\n * @method listenToOnce\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenToOnce(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\nvar listenMethods = {listenTo: 'on', listenToOnce: 'once'}\n\nObject.keys(listenMethods).forEach(function(method) {\n Events.prototype[method] = function(obj, name, callback) {\n var listeningTo = this._listeningTo || (this._listeningTo = {})\n var id = obj._listenId || (obj._listenId = uniqueId('l'))\n listeningTo[id] = obj\n if (!callback && typeof name === 'object') {callback = this}\n obj[listenMethods[method]](name, callback, this)\n return this\n }\n});\n\n// PLAYER EVENTS\n/**\n * Fired when the player is ready on startup\n *\n * @event PLAYER_READY\n */\nEvents.PLAYER_READY = 'ready'\n/**\n * Fired when player resizes\n *\n * @event PLAYER_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.PLAYER_RESIZE = 'resize'\n/**\n * Fired when player starts to play\n *\n * @event PLAYER_PLAY\n */\nEvents.PLAYER_PLAY = 'play'\n/**\n * Fired when player pauses\n *\n * @event PLAYER_PAUSE\n */\nEvents.PLAYER_PAUSE = 'pause'\n/**\n * Fired when player stops\n *\n * @event PLAYER_STOP\n */\nEvents.PLAYER_STOP = 'stop'\n/**\n * Fired when player ends the video\n *\n * @event PLAYER_ENDED\n */\nEvents.PLAYER_ENDED = 'ended'\n/**\n * Fired when player seeks the video\n *\n * @event PLAYER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.PLAYER_SEEK = 'seek'\n/**\n * Fired when player receives an error\n *\n * @event PLAYER_ERROR\n * @param {Object} error the error\n */\nEvents.PLAYER_ERROR = 'error'\n/**\n * Fired when the time is updated on player\n *\n * @event PLAYER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.PLAYER_TIMEUPDATE = 'timeupdate'\n/**\n * Fired when player updates its volume\n *\n * @event PLAYER_VOLUMEUPDATE\n * @param {Number} volume the current volume\n */\nEvents.PLAYER_VOLUMEUPDATE = 'volumeupdate'\n\n// Playback Events\n/**\n * Fired when the playback is downloading the media\n *\n * @event PLAYBACK_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.PLAYBACK_PROGRESS = 'playback:progress'\n/**\n * Fired when the time is updated on playback\n *\n * @event PLAYBACK_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate'\n/**\n * Fired when playback is ready\n *\n * @event PLAYBACK_READY\n */\nEvents.PLAYBACK_READY = 'playback:ready'\n/**\n * Fired when the playback starts having to buffer because\n * playback can currently not be smooth.\n *\n * This corresponds to the playback `buffering` property being\n * `true`.\n *\n * @event PLAYBACK_BUFFERING\n */\nEvents.PLAYBACK_BUFFERING = 'playback:buffering'\n/**\n * Fired when the playback has enough in the buffer to be\n * able to play smoothly, after previously being unable to\n * do this.\n *\n * This corresponds to the playback `buffering` property being\n * `false`.\n *\n * @event PLAYBACK_BUFFERFULL\n */\nEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull'\n/**\n * Fired when playback changes any settings (volume, seek and etc)\n *\n * @event PLAYBACK_SETTINGSUPDATE\n */\nEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate'\n/**\n * Fired when playback loaded its metadata\n *\n * @event PLAYBACK_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata'\n/**\n * Fired when playback updates its video quality\n *\n * @event PLAYBACK_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate'\n/**\n * Fired when playback updates its bitrate\n *\n * @event PLAYBACK_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.PLAYBACK_BITRATE = 'playback:bitrate'\n/**\n * Fired when the playback has its levels\n *\n * @event PLAYBACK_LEVELS_AVAILABLE\n * @param {Array} levels\n * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0\n * @param {Number} initial\n * the initial level otherwise -1 (AUTO)\n */\nEvents.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available'\n/**\n * Fired when the playback starts to switch level\n *\n * @event PLAYBACK_LEVEL_SWITCH_START\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start'\n/**\n * Fired when the playback ends the level switch\n *\n * @event PLAYBACK_LEVEL_SWITCH_END\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end'\n\n/**\n * Fired when playback internal state changes\n *\n * @event PLAYBACK_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate'\n/**\n * Fired when DVR becomes enabled/disabled.\n *\n * @event PLAYBACK_DVR\n * @param {boolean} state true if dvr enabled \n */\nEvents.PLAYBACK_DVR = 'playback:dvr'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable'\n/**\n * Fired when the media for a playback ends.\n *\n * @event PLAYBACK_ENDED\n * @param {String} name the name of the playback\n */\nEvents.PLAYBACK_ENDED = 'playback:ended'\n/**\n * Fired when the media for a playback starts playing.\n * This is not necessarily when the user requests `play()`\n * The media may have to buffer first.\n * I.e. `isPlaying()` might return `true` before this event is fired,\n * because `isPlaying()` represents the intended state.\n *\n * @event PLAYBACK_PLAY\n */\nEvents.PLAYBACK_PLAY = 'playback:play'\n/**\n * Fired when the media for a playback pauses.\n *\n * @event PLAYBACK_PAUSE\n */\nEvents.PLAYBACK_PAUSE = 'playback:pause'\n/**\n * Fired when the media for a playback is stopped.\n *\n * @event PLAYBACK_STOP\n */\nEvents.PLAYBACK_STOP = 'playback:stop'\n/**\n * Fired if an error occurs in the playback.\n *\n * @event PLAYBACK_ERROR\n * @param {Object} error An object containing the error details\n * @param {String} name Playback name\n */\nEvents.PLAYBACK_ERROR = 'playback:error'\n// TODO doc\nEvents.PLAYBACK_STATS_ADD = 'playback:stats:add'\n// TODO doc\nEvents.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded'\n// TODO doc\nEvents.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch'\n\n/**\n * Fired when the options were changed for the core\n *\n * @event CORE_OPTIONS_CHANGE\n */\nEvents.CORE_OPTIONS_CHANGE = 'core:options:change'\n/**\n * Fired after creating containers, when the core is ready\n *\n * @event CORE_READY\n */\nEvents.CORE_READY = 'core:ready'\n\n// Container Events\n/**\n * Fired when the container internal state changes\n *\n * @event CONTAINER_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate'\nEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr'\n/**\n * Fired when the container updates its bitrate\n *\n * @event CONTAINER_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.CONTAINER_BITRATE = 'container:bitrate'\nEvents.CONTAINER_STATS_REPORT = 'container:stats:report'\nEvents.CONTAINER_DESTROYED = 'container:destroyed'\n/**\n * Fired when the container is ready\n *\n * @event CONTAINER_READY\n */\nEvents.CONTAINER_READY = 'container:ready'\nEvents.CONTAINER_ERROR = 'container:error'\n/**\n * Fired when the container loaded its metadata\n *\n * @event CONTAINER_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata'\n/**\n * Fired when the time is updated on container\n *\n * @event CONTAINER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time\n * @param {Number} [progress.total]\n * total time\n */\nEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate'\n/**\n * Fired when the container is downloading the media\n *\n * @event CONTAINER_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.CONTAINER_PROGRESS = 'container:progress'\nEvents.CONTAINER_PLAY = 'container:play'\nEvents.CONTAINER_STOP = 'container:stop'\nEvents.CONTAINER_PAUSE = 'container:pause'\nEvents.CONTAINER_ENDED = 'container:ended'\nEvents.CONTAINER_CLICK = 'container:click'\nEvents.CONTAINER_DBLCLICK = 'container:dblclick'\nEvents.CONTAINER_CONTEXTMENU = 'container:contextmenu'\nEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter'\nEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave'\n/**\n * Fired when the container seeks the video\n *\n * @event CONTAINER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEK = 'container:seek'\nEvents.CONTAINER_VOLUME = 'container:volume'\nEvents.CONTAINER_FULLSCREEN = 'container:fullscreen'\n/**\n * Fired when container is buffering\n *\n * @event CONTAINER_STATE_BUFFERING\n */\nEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering'\n/**\n * Fired when the container filled the buffer\n *\n * @event CONTAINER_STATE_BUFFERFULL\n */\nEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull'\n/**\n * Fired when the container changes any settings (volume, seek and etc)\n *\n * @event CONTAINER_SETTINGSUPDATE\n */\nEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate'\n/**\n * Fired when container updates its video quality\n *\n * @event CONTAINER_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate'\n\n/**\n * Fired when the media control shows\n *\n * @event CONTAINER_MEDIACONTROL_SHOW\n */\nEvents.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event CONTAINER_MEDIACONTROL_HIDE\n */\nEvents.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide'\n\nEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable'\nEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable'\nEvents.CONTAINER_STATS_ADD = 'container:stats:add'\n/**\n * Fired when the options were changed for the container\n *\n * @event CONTAINER_OPTIONS_CHANGE\n */\nEvents.CONTAINER_OPTIONS_CHANGE = 'container:options:change'\n\n// MediaControl Events\nEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered'\n/**\n * Fired when the player enters/exit on fullscreen\n *\n * @event MEDIACONTROL_FULLSCREEN\n */\nEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen'\n/**\n * Fired when the media control shows\n *\n * @event MEDIACONTROL_SHOW\n */\nEvents.MEDIACONTROL_SHOW = 'mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event MEDIACONTROL_HIDE\n */\nEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide'\n/**\n * Fired when mouse enters on the seekbar\n *\n * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar'\n/**\n * Fired when mouse leaves the seekbar\n *\n * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar'\n/**\n * Fired when the media is being played\n *\n * @event MEDIACONTROL_PLAYING\n */\nEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing'\n/**\n * Fired when the media is not being played\n *\n * @event MEDIACONTROL_NOTPLAYING\n */\nEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying'\n/**\n * Fired when the container was changed\n *\n * @event MEDIACONTROL_CONTAINERCHANGED\n */\nEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged'\n\n// Core Events\nEvents.CORE_CONTAINERS_CREATED = 'core:containers:created'\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/base/events.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n/*jshint -W079 */\n\nimport Browser from 'components/browser'\nimport $ from 'clappr-zepto'\n\nexport function extend(parent, properties) {\n var pluginName = properties.name||\"\"\n class MergedPlugin extends parent {\n constructor(args) {\n super(args)\n if (properties.initialize) {\n properties.initialize.apply(this, Array.prototype.slice.apply(arguments))\n }\n }\n get name(){\n return pluginName\n }\n }\n delete properties.name\n $.extend(MergedPlugin.prototype, properties)\n return MergedPlugin\n}\n\nexport function formatTime(time, paddedHours) {\n if (!isFinite(time)) {\n return \"--:--\"\n }\n time = time * 1000\n time = parseInt(time/1000)\n var seconds = time % 60\n time = parseInt(time/60)\n var minutes = time % 60\n time = parseInt(time/60)\n var hours = time % 24\n var days = parseInt(time/24)\n var out = \"\"\n if (days && days > 0) {\n out += days + \":\"\n if (hours < 1) {out += \"00:\"}\n }\n if (hours && hours > 0 || paddedHours) {out += (\"0\" + hours).slice(-2) + \":\"}\n out += (\"0\" + minutes).slice(-2) + \":\"\n out += (\"0\" + seconds).slice(-2)\n return out.trim()\n}\n\nexport var Fullscreen = {\n isFullscreen: function() {\n return (\n document.webkitFullscreenElement ||\n document.webkitIsFullScreen ||\n document.mozFullScreen ||\n !!document.msFullscreenElement\n )\n },\n requestFullscreen: function(el) {\n if(el.requestFullscreen) {\n el.requestFullscreen()\n } else if(el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen()\n } else if(el.mozRequestFullScreen) {\n el.mozRequestFullScreen()\n } else if(el.msRequestFullscreen) {\n el.msRequestFullscreen()\n } else if (el.querySelector && el.querySelector(\"video\") && el.querySelector(\"video\").webkitEnterFullScreen) {\n el.querySelector(\"video\").webkitEnterFullScreen()\n }\n },\n cancelFullscreen: function() {\n if(document.exitFullscreen) {\n document.exitFullscreen()\n } else if(document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen()\n } else if(document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if(document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if(document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n }\n}\n\nexport class Config {\n\n static _defaultConfig() {\n return {\n volume: {\n value: 100,\n parse: parseInt\n }\n }\n }\n\n static _defaultValueFor(key) {\n try {\n return this._defaultConfig()[key].parse(this._defaultConfig()[key].value)\n } catch(e) {\n return undefined\n }\n }\n\n static _createKeyspace(key){\n return `clappr.${document.domain}.${key}`\n }\n\n static restore(key) {\n if (Browser.hasLocalstorage && localStorage[this._createKeyspace(key)]){\n return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)])\n }\n return this._defaultValueFor(key)\n }\n\n static persist(key, value) {\n if (Browser.hasLocalstorage) {\n try {\n localStorage[this._createKeyspace(key)] = value\n return true\n } catch(e) {\n return false\n }\n }\n }\n}\n\nexport function seekStringToSeconds(url) {\n var parts = url.match(/t=([0-9]*)(&|\\/|$)/);\n if (parts && parts.length > 0) {\n return parseInt(parts[1], 10);\n } else {\n var seconds = 0;\n var factor = {'h': 3600, 'm': 60, 's': 1};\n parts = url.match(/[0-9]+[hms]+/g) || [];\n parts.forEach(function(el) {\n if (el) {\n var suffix = el[el.length - 1];\n var time = parseInt(el.slice(0, el.length - 1), 10);\n seconds += time * (factor[suffix]);\n }\n });\n return seconds;\n }\n}\n\nvar idsCounter = {}\n\nexport function uniqueId(prefix) {\n idsCounter[prefix] || (idsCounter[prefix] = 0)\n var id = ++idsCounter[prefix]\n return prefix + id\n}\n\nexport function isNumber(value) {\n return value - parseFloat(value) + 1 >= 0\n}\n\nexport function currentScriptUrl() {\n var scripts = document.getElementsByTagName('script')\n return scripts[scripts.length - 1].src\n}\n\nexport var requestAnimationFrame = (window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n function(fn) { window.setTimeout(fn, 1000/60) }).bind(window)\n\nexport var cancelAnimationFrame = (window.cancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.clearTimeout).bind(window)\n\nexport function getBrowserLanguage() {\n if (window.navigator && window.navigator.language) {\n return window.navigator.language.toLowerCase()\n }\n return null\n}\n\nexport default {\n Config,\n Fullscreen,\n extend,\n formatTime,\n seekStringToSeconds,\n uniqueId,\n currentScriptUrl,\n isNumber,\n requestAnimationFrame,\n cancelAnimationFrame,\n getBrowserLanguage\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/base/utils.js\n **/","/* Zepto v1.1.4-80-ga9184b2 - zepto event ajax callbacks deferred touch selector ie - zeptojs.com/license */\nvar Zepto=function(){function D(t){return null==t?String(t):j[S.call(t)]||\"object\"}function L(t){return\"function\"==D(t)}function k(t){return null!=t&&t==t.window}function Z(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function $(t){return\"object\"==D(t)}function F(t){return $(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function R(t){return\"number\"==typeof t.length}function q(t){return s.call(t,function(t){return null!=t})}function W(t){return t.length>0?n.fn.concat.apply([],t):t}function z(t){return t.replace(/::/g,\"/\").replace(/([A-Z]+)([A-Z][a-z])/g,\"$1_$2\").replace(/([a-z\\d])([A-Z])/g,\"$1_$2\").replace(/_/g,\"-\").toLowerCase()}function H(t){return t in c?c[t]:c[t]=new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|$)\")}function _(t,e){return\"number\"!=typeof e||l[z(t)]?e:e+\"px\"}function I(t){var e,n;return f[t]||(e=u.createElement(t),u.body.appendChild(e),n=getComputedStyle(e,\"\").getPropertyValue(\"display\"),e.parentNode.removeChild(e),\"none\"==n&&(n=\"block\"),f[t]=n),f[t]}function U(t){return\"children\"in t?a.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,i=t?t.length:0;for(n=0;i>n;n++)this[n]=t[n];this.length=i,this.selector=e||\"\"}function B(n,i,r){for(e in i)r&&(F(i[e])||A(i[e]))?(F(i[e])&&!F(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),B(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function V(t,e){return null==e?n(t):n(t).filter(e)}function Y(t,e,n,i){return L(e)?e.call(t,n,i):e}function J(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function G(e,n){var i=e.className||\"\",r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function K(t){try{return t?\"true\"==t||(\"false\"==t?!1:\"null\"==t?null:+t+\"\"==t?+t:/^[\\[\\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function Q(t,e){e(t);for(var n=0,i=t.childNodes.length;i>n;n++)Q(t.childNodes[n],e)}var t,e,n,i,N,P,r=[],o=r.concat,s=r.filter,a=r.slice,u=window.document,f={},c={},l={\"column-count\":1,columns:1,\"font-weight\":1,\"line-height\":1,opacity:1,\"z-index\":1,zoom:1},h=/^\\s*<(\\w+|!)[^>]*>/,p=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,d=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,m=/^(?:body|html)$/i,g=/([A-Z])/g,v=[\"val\",\"css\",\"html\",\"text\",\"data\",\"width\",\"height\",\"offset\"],y=[\"after\",\"prepend\",\"before\",\"append\"],w=u.createElement(\"table\"),x=u.createElement(\"tr\"),b={tr:u.createElement(\"tbody\"),tbody:w,thead:w,tfoot:w,td:x,th:x,\"*\":u.createElement(\"div\")},E=/complete|loaded|interactive/,T=/^[\\w-]*$/,j={},S=j.toString,C={},O=u.createElement(\"div\"),M={tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},A=Array.isArray||function(t){return t instanceof Array};return C.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~C.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},N=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():\"\"})},P=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},C.fragment=function(e,i,r){var o,s,f;return p.test(e)&&(o=n(u.createElement(RegExp.$1))),o||(e.replace&&(e=e.replace(d,\"<$1>$2>\")),i===t&&(i=h.test(e)&&RegExp.$1),i in b||(i=\"*\"),f=b[i],f.innerHTML=\"\"+e,o=n.each(a.call(f.childNodes),function(){f.removeChild(this)})),F(r)&&(s=n(o),n.each(r,function(t,e){v.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},C.Z=function(t,e){return new X(t,e)},C.isZ=function(t){return t instanceof C.Z},C.init=function(e,i){var r;if(!e)return C.Z();if(\"string\"==typeof e)if(e=e.trim(),\"<\"==e[0]&&h.test(e))r=C.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}else{if(L(e))return n(u).ready(e);if(C.isZ(e))return e;if(A(e))r=q(e);else if($(e))r=[e],e=null;else if(h.test(e))r=C.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=C.qsa(u,e)}}return C.Z(r,e)},n=function(t,e){return C.init(t,e)},n.extend=function(t){var e,n=a.call(arguments,1);return\"boolean\"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){B(t,n,e)}),t},C.qsa=function(t,e){var n,i=\"#\"==e[0],r=!i&&\".\"==e[0],o=i||r?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&i?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:a.call(s&&!i&&t.getElementsByClassName?r?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=u.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=D,n.isFunction=L,n.isWindow=k,n.isArray=A,n.isPlainObject=F,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=N,n.trim=function(t){return null==t?\"\":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.noop=function(){},n.map=function(t,e){var n,r,o,i=[];if(R(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return L(t)?this.not(this.not(t)):n(s.call(this,function(e){return C.matches(e,t)}))},add:function(t,e){return n(P(this.concat(n(t,e))))},is:function(t){return this.length>0&&C.matches(this[0],t)},not:function(e){var i=[];if(L(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r=\"string\"==typeof e?this.filter(e):R(e)&&L(e.item)?a.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return $(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!$(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!$(t)?t:n(t)},find:function(t){var e,i=this;return e=t?\"object\"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(C.qsa(this[0],t)):this.map(function(){return C.qsa(this,t)}):n()},closest:function(t,e){var i=this[0],r=!1;for(\"object\"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:C.matches(i,t));)i=i!==e&&!Z(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!Z(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return V(e,t)},parent:function(t){return V(P(this.pluck(\"parentNode\")),t)},children:function(t){return V(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||a.call(this.childNodes)})},siblings:function(t){return V(this.map(function(t,e){return s.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=\"\"})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){\"none\"==this.style.display&&(this.style.display=\"\"),\"none\"==getComputedStyle(this,\"\").getPropertyValue(\"display\")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=L(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=L(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css(\"display\",\"none\")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?\"none\"==i.css(\"display\"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck(\"previousElementSibling\")).filter(t||\"*\")},next:function(t){return n(this.pluck(\"nextElementSibling\")).filter(t||\"*\")},html:function(t){return 0 in arguments?this.each(function(e){var i=this.innerHTML;n(this).empty().append(Y(this,t,e,i))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?\"\":\"\"+n}):0 in this?this[0].textContent:null},attr:function(n,i){var r;return\"string\"!=typeof n||1 in arguments?this.each(function(t){if(1===this.nodeType)if($(n))for(e in n)J(this,e,n[e]);else J(this,n,Y(this,i,t,this.getAttribute(n)))}):this.length&&1===this[0].nodeType?!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:t},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(\" \").forEach(function(t){J(this,t)},this)})},prop:function(t,e){return t=M[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},data:function(e,n){var i=\"data-\"+e.replace(g,\"-$1\").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?K(r):t},val:function(t){return 0 in arguments?this.each(function(e){this.value=Y(this,t,e,this.value)}):this[0]&&(this[0].multiple?n(this[0]).find(\"option\").filter(function(){return this.selected}).pluck(\"value\"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=Y(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};\"static\"==i.css(\"position\")&&(s.position=\"relative\"),i.css(s)});if(!this.length)return null;if(!n.contains(u.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r,o=this[0];if(!o)return;if(r=getComputedStyle(o,\"\"),\"string\"==typeof t)return o.style[N(t)]||r.getPropertyValue(t);if(A(t)){var s={};return n.each(t,function(t,e){s[e]=o.style[N(e)]||r.getPropertyValue(e)}),s}}var a=\"\";if(\"string\"==D(t))i||0===i?a=z(t)+\":\"+_(t,i):this.each(function(){this.style.removeProperty(z(t))});else for(e in t)t[e]||0===t[e]?a+=z(e)+\":\"+_(e,t[e])+\";\":this.each(function(){this.style.removeProperty(z(e))});return this.each(function(){this.style.cssText+=\";\"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(G(t))},H(t)):!1},addClass:function(t){return t?this.each(function(e){if(\"className\"in this){i=[];var r=G(this),o=Y(this,t,e,r);o.split(/\\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&G(this,r+(r?\" \":\"\")+i.join(\" \"))}}):this},removeClass:function(e){return this.each(function(n){if(\"className\"in this){if(e===t)return G(this,\"\");i=G(this),Y(this,e,n,i).split(/\\s+/g).forEach(function(t){i=i.replace(H(t),\" \")}),G(this,i.trim())}})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=Y(this,e,r,G(this));s.split(/\\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n=\"scrollTop\"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n=\"scrollLeft\"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=m.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css(\"margin-top\"))||0,i.left-=parseFloat(n(t).css(\"margin-left\"))||0,r.top+=parseFloat(n(e[0]).css(\"border-top-width\"))||0,r.left+=parseFloat(n(e[0]).css(\"border-left-width\"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||u.body;t&&!m.test(t.nodeName)&&\"static\"==n(t).css(\"position\");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,[\"width\",\"height\"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?k(s)?s[\"inner\"+i]:Z(s)?s.documentElement[\"scroll\"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,Y(this,r,t,s[e]()))})}}),y.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=D(e),\"object\"==t||\"array\"==t||null==e?e:C.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,a){o=i?a:a.parentNode,a=0==e?a.nextSibling:1==e?a.firstChild:2==e?a:null;var f=n.contains(u.documentElement,o);r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();o.insertBefore(t,a),f&&Q(t,function(t){null==t.nodeName||\"SCRIPT\"!==t.nodeName.toUpperCase()||t.type&&\"text/javascript\"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+\"To\":\"insert\"+(e?\"Before\":\"After\")]=function(e){return n(e)[t](this),this}}),C.Z.prototype=X.prototype=n.fn,C.uniq=P,C.deserializeValue=K,n.zepto=C,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(\"\"+t).split(\".\");return{e:e[0],ns:e.slice(1).sort().join(\" \")}}function d(t){return new RegExp(\"(?:^| )\"+t.replace(\" \",\" .* ?\")+\"(?: |$)\")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\\s/).forEach(function(i){if(\"ready\"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=T(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),\"addEventListener\"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||\"\").split(/\\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],\"removeEventListener\"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function T(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=w,r&&r.apply(i,arguments)},e[n]=x}),(i.defaultPrevented!==n?i.defaultPrevented:\"returnValue\"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function j(t){var e,i={originalEvent:t};for(e in t)b.test(e)||t[e]===n||(i[e]=t[e]);return T(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return\"string\"==typeof t},s={},a={},u=\"onfocusin\"in window,f={focus:\"focusin\",blur:\"focusout\"},c={mouseenter:\"mouseover\",mouseleave:\"mouseout\"};a.click=a.mousedown=a.mouseup=a.mousemove=\"MouseEvents\",t.event={add:v,remove:y},t.proxy=function(e,n){var s=2 in arguments&&i.call(arguments,2);if(r(e)){var a=function(){return e.apply(n,s?s.concat(i.call(arguments)):arguments)};return a._zid=l(e),a}if(o(n))return s?(s.unshift(e[n],e),t.proxy.apply(null,s)):t.proxy(e[n],e);throw new TypeError(\"expected function\")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var w=function(){return!0},x=function(){return!1},b=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:\"isDefaultPrevented\",stopImmediatePropagation:\"isImmediatePropagationStopped\",stopPropagation:\"isPropagationStopped\"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(u===n||a===!1)&&(u=a,a=n),u===!1&&(u=x),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(j(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=x),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):T(e),e._args=n,this.each(function(){e.type in f&&\"function\"==typeof this[e.type]?this[e.type]():\"dispatchEvent\"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=j(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},\"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||\"Events\"),i=!0;if(e)for(var r in e)\"bubbles\"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),T(n)}}(Zepto),function(t){function h(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function p(t,e,i,r){return t.global?h(e||n,i,r):void 0}function d(e){e.global&&0===t.active++&&p(e,null,\"ajaxStart\")}function m(e){e.global&&!--t.active&&p(e,null,\"ajaxStop\")}function g(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||p(e,n,\"ajaxBeforeSend\",[t,e])===!1?!1:void p(e,n,\"ajaxSend\",[t,e])}function v(t,e,n,i){var r=n.context,o=\"success\";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),p(n,r,\"ajaxSuccess\",[e,n,t]),w(o,e,n)}function y(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),p(i,o,\"ajaxError\",[n,i,t||e]),w(e,n,i)}function w(t,e,n){var i=n.context;n.complete.call(i,e,t),p(n,i,\"ajaxComplete\",[e,n]),m(n)}function x(){}function b(t){return t&&(t=t.split(\";\",2)[0]),t&&(t==f?\"html\":t==u?\"json\":s.test(t)?\"script\":a.test(t)&&\"xml\")||\"text\"}function E(t,e){return\"\"==e?t:(t+\"&\"+e).replace(/[&?]{1,2}/,\"?\")}function T(e){e.processData&&e.data&&\"string\"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&\"GET\"!=e.type.toUpperCase()||(e.url=E(e.url,e.data),e.data=void 0)}function j(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function C(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+\"[\"+(a||\"object\"==o||\"array\"==o?n:\"\")+\"]\"),!r&&s?e.add(u.name,u.value):\"array\"==o||!i&&\"object\"==o?C(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/\n * \n * ```\n * Now, create the player:\n * ```html\n * \n *
\n * \n * \n * ```\n */\nexport default class Player extends BaseObject {\n\n set loader(loader) { this._loader = loader }\n get loader() { return this._loader = this._loader || new Loader(this.options.plugins || {}, this.options.playerId) }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.core.mediaControl.container.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.core.mediaControl.container.buffering\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n get isReady() {\n return !!this.ready\n }\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <>, mimeType: <>}\n * @param {Object} [options.sources]\n * An array of media source URL's, or an array of {source: <>, mimeType: <>}\n * @param {Boolean} [options.autoPlay]\n * automatically play after page load **default**: `false`\n * @param {Boolean} [options.loop]\n * automatically replay after it ends **default**: `false`\n * @param {Boolean} [options.chromeless]\n * player acts in chromeless mode **default**: `false`\n * @param {Boolean} [options.muted]\n * start the video muted **default**: `false`\n * @param {String} [options.mimeType]\n * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n * @param {String} [options.actualLiveTime]\n * show duration and seek time relative to actual time.\n * @param {String} [options.actualLiveServerTime]\n * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n * @param {Boolean} [options.persistConfig]\n * persist player's settings (volume) through the same domain **default**: `true`\n * @param {String} [options.preload]\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @param {Number} [options.maxBufferLength]\n * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD. This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks. To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @param {String} [options.gaAccount]\n * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n * @param {String} [options.gaTrackerName]\n * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n * @param {Object} [options.mediacontrol]\n * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n * @param {Boolean} [options.hideMediaControl]\n * control media control auto hide **default**: `true`\n * @param {Boolean} [options.hideVolumeBar]\n * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n * @param {String} [options.watermark]\n * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video. You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n * @param {String} [options.watermarkLink]\n * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable. \n * @param {Boolean} [options.disableVideoTagContextMenu]\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @param {Boolean} [options.autoSeekFromUrl]\n * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n * @param {String} [options.poster]\n * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n * @param {String} [options.playbackNotSupportedMessage]\n * define a custom message to be displayed when a playback is not supported.\n * @param {Object} [options.events]\n * Specify listeners which will be registered with their corresponding player events.\n * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n */\n constructor(options) {\n super(options)\n var defaultOptions = {playerId: uniqueId(\"\"), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl}\n this.options = $.extend(defaultOptions, options)\n this.options.sources = this.normalizeSources(options)\n this.registerOptionEventListeners()\n this.coreFactory = new CoreFactory(this)\n this.playerInfo = PlayerInfo.getInstance(this.options.playerId)\n this.playerInfo.currentSize = {width: options.width, height: options.height}\n this.playerInfo.options = this.options\n if (this.options.parentId) {\n this.setParentId(this.options.parentId)\n }\n else if (this.options.parent) {\n this.attachTo(this.options.parent)\n }\n }\n\n /**\n * Specify a `parentId` to the player.\n * @method setParentId\n * @param {String} parentId the element parent id.\n */\n setParentId(parentId) {\n var el = document.querySelector(parentId)\n if (el) {\n this.attachTo(el)\n }\n }\n\n /**\n * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n * @method attachTo\n * @param {Object} element a given element.\n */\n attachTo(element) {\n this.options.parentElement = element\n this.core = this.coreFactory.create()\n this.addEventListeners()\n }\n\n addEventListeners() {\n if (!this.core.isReady) {\n this.listenToOnce(this.core, Events.CORE_READY, this.onReady)\n } else {\n this.onReady()\n }\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n }\n\n addContainerEventListeners() {\n var container = this.core.mediaControl.container\n if (!!container) {\n this.listenTo(container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(container, Events.CONTAINER_SEEK, this.onSeek)\n this.listenTo(container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(container, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate)\n this.listenTo(container, Events.CONTAINER_VOLUME, this.onVolumeUpdate)\n }\n }\n\n registerOptionEventListeners() {\n var eventsMapping = {\n \"onReady\": Events.PLAYER_READY,\n \"onResize\": Events.PLAYER_RESIZE,\n \"onPlay\": Events.PLAYER_PLAY,\n \"onPause\": Events.PLAYER_PAUSE,\n \"onStop\": Events.PLAYER_STOP,\n \"onEnded\": Events.PLAYER_ENDED,\n \"onSeek\": Events.PLAYER_SEEK,\n \"onError\": Events.PLAYER_ERROR,\n \"onTimeUpdate\": Events.PLAYER_TIMEUPDATE,\n \"onVolumeUpdate\": Events.PLAYER_VOLUMEUPDATE\n }\n var userEvents = this.options.events || {}\n\n Object.keys(userEvents).forEach((userEvent) => {\n var eventType = eventsMapping[userEvent]\n if (eventType) {\n var eventFunction = userEvents[userEvent]\n eventFunction = typeof eventFunction === \"function\" && eventFunction\n eventFunction && this.listenTo(this, eventType, eventFunction)\n }\n })\n }\n\n containerChanged() {\n this.stopListening()\n this.addEventListeners()\n }\n\n onReady() {\n this.ready = true\n this.addContainerEventListeners()\n this.trigger(Events.PLAYER_READY)\n }\n\n onVolumeUpdate(volume) {\n this.trigger(Events.PLAYER_VOLUMEUPDATE, volume)\n }\n\n onPlay() {\n this.trigger(Events.PLAYER_PLAY)\n }\n\n onPause() {\n this.trigger(Events.PLAYER_PAUSE)\n }\n\n onStop() {\n this.trigger(Events.PLAYER_STOP, this.getCurrentTime())\n }\n\n onEnded() {\n this.trigger(Events.PLAYER_ENDED)\n }\n\n onSeek(time) {\n this.trigger(Events.PLAYER_SEEK, time)\n }\n\n onTimeUpdate(timeProgress) {\n this.trigger(Events.PLAYER_TIMEUPDATE, timeProgress)\n }\n\n onError(error) {\n this.trigger(Events.PLAYER_ERROR, error)\n }\n\n is(value, type) {\n return value.constructor === type\n }\n\n normalizeSources(options) {\n var sources = options.sources || (options.source !== undefined? [options.source] : [])\n return sources.length === 0 ? [{source:\"\", mimeType:\"\"}] : sources\n }\n\n /**\n * resizes the current player canvas.\n * @method resize\n * @param {Object} size should be a literal object with `height` and `width`.\n * @example\n * ```javascript\n * player.resize({height: 360, width: 640})\n * ```\n */\n resize(size) {\n this.core.resize(size);\n }\n\n /**\n * loads a new source.\n * @method load\n * @param {Object} sources source or sources of video.\n * sources can be a string or {source: <>, mimeType: <>}\n * @param {Object} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n *\n */\n load(sources, mimeType) {\n this.core.load(sources, mimeType)\n }\n\n /**\n * destroys the current player and removes it from the DOM.\n * @method destroy\n */\n destroy() {\n this.core.destroy()\n }\n\n /**\n * plays the current video (`source`).\n * @method play\n */\n play() {\n this.core.mediaControl.container.play();\n }\n\n /**\n * pauses the current video (`source`).\n * @method pause\n */\n pause() {\n this.core.mediaControl.container.pause();\n }\n\n /**\n * stops the current video (`source`).\n * @method stop\n */\n stop() {\n this.core.mediaControl.container.stop();\n }\n\n\n /**\n * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration.\n */\n seek(time) {\n this.core.mediaControl.container.seek(time);\n }\n\n /**\n * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100.\n */\n seekPercentage(percentage) {\n this.core.mediaControl.container.seekPercentage(percentage);\n }\n\n /**\n * Set the volume for the current video (`source`).\n * @method setVolume\n * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n setVolume(volume) {\n this.core.mediaControl.container.setVolume(volume);\n }\n\n /**\n * Get the volume for the current video\n * @method getVolume\n * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n getVolume() {\n return this.core.mediaControl.container.volume;\n }\n\n /**\n * mutes the current video (`source`).\n * @method mute\n */\n mute() {\n this.core.mediaControl.container.setVolume(0);\n }\n\n /**\n * unmutes the current video (`source`).\n * @method unmute\n */\n unmute() {\n this.core.mediaControl.container.setVolume(100);\n }\n\n /**\n * checks if the player is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current source is playing, otherwise `false`\n */\n isPlaying() {\n return this.core.mediaControl.container.isPlaying();\n }\n\n /**\n * enables to configure a player after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this.core.configure(options)\n }\n\n /**\n * get a plugin by its name.\n * @method getPlugin\n * @param {String} name of the plugin.\n * @return {Object} the plugin instance\n * @example\n * ```javascript\n * var poster = player.getPlugin('poster');\n * poster.hidePlayButton();\n * ```\n */\n getPlugin(name) {\n var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins);\n return find(plugins, function(plugin) {\n return plugin.name === name;\n });\n }\n\n /**\n * the current time in seconds.\n * @method getCurrentTime\n * @return {Number} current time (in seconds) of the current source\n */\n getCurrentTime() {\n return this.core.mediaControl.container.getCurrentTime()\n }\n\n /**\n * the duration time in seconds.\n * @method getDuration\n * @return {Number} duration time (in seconds) of the current source\n */\n getDuration() {\n return this.core.mediaControl.container.getDuration()\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/player.js\n **/","// Copyright 2015 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Browser from 'components/browser'\n\nimport $ from 'clappr-zepto'\n\nimport flashHTML from './public/flash.html'\nimport flashStyle from './public/flash.scss'\n\nvar IE_CLASSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'\n\nexport default class BaseFlashPlayback extends Playback {\n get tagName() { return 'object' }\n get swfPath() { return '' }\n get wmode() { return 'transparent' }\n get template() { return template(flashHTML) }\n get attributes() {\n var type = 'application/x-shockwave-flash';\n\n if (Browser.isLegacyIE) {\n type = '';\n }\n\n return {\n class: 'clappr-flash-playback',\n type: type,\n width: '100%',\n height: '100%',\n 'data-flash-playback': this.name\n }\n }\n\n setElement(element) {\n this.$el = element\n this.el = element[0]\n }\n\n setupFirefox() {\n var $el = this.$('embed')\n $el.attr('data-flash-playback', this.name)\n $el.addClass(this.attributes.class)\n this.setElement($el)\n }\n\n render() {\n this.$el.html(this.template({\n cid: this.cid,\n swfPath: this.swfPath,\n baseUrl: this.baseUrl,\n playbackId: this.uniqueId,\n wmode: this.wmode,\n callbackName: `window.Clappr.flashlsCallbacks.${this.cid}`})\n )\n\n if (Browser.isIE) {\n this.$('embed').remove()\n\n if (Browser.isLegacyIE) {\n this.$el.attr('classid', IE_CLASSID)\n }\n }\n\n if (Browser.isFirefox) {\n this.setupFirefox()\n }\n\n this.el.id = this.cid\n this.$el.append(Styler.getStyleFor(flashStyle))\n\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/base_flash_playback/base_flash_playback.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {seekStringToSeconds} from 'base/utils'\n\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Browser from 'components/browser'\nimport Mediator from 'components/mediator'\nimport template from 'base/template'\nimport $ from 'clappr-zepto'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport flashSwf from './public/Player.swf'\n\nvar MAX_ATTEMPTS = 60\n\nexport default class Flash extends BaseFlashPlayback {\n get name() { return 'flash' }\n get swfPath() { return template(flashSwf)({baseUrl: this.baseUrl}) }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.currentState === \"ENDED\"\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return !!this.bufferingState && this.currentState !== \"ENDED\"\n }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.baseUrl = options.baseUrl\n this.autoPlay = options.autoPlay\n this.settings = {default: ['seekbar']}\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\"]\n this.settings.seekEnabled = true\n this.isReadyState = false\n this.addListeners()\n }\n\n\n bootstrap() {\n if (this.el.playerPlay) {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n if (this.currentState === 'PLAYING') {\n this.firstPlay()\n } else {\n this.currentState = \"IDLE\"\n this.autoPlay && this.play()\n }\n $('
').insertAfter(this.$el)\n if (this.getDuration() > 0) {\n this.metadataLoaded()\n } else {\n Mediator.once(this.uniqueId + ':timeupdate', this.metadataLoaded, this)\n }\n } else {\n this._attempts = this._attempts || 0\n if (++this._attempts <= MAX_ATTEMPTS) {\n setTimeout(() => this.bootstrap(), 50)\n } else {\n this.trigger(Events.PLAYBACK_ERROR, {message: \"Max number of attempts reached\"}, this.name)\n }\n }\n }\n\n metadataLoaded() {\n this.isReadyState = true\n this.trigger(Events.PLAYBACK_READY, this.name)\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE, this.name)\n }\n\n getPlaybackType() {\n return Playback.VOD\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n updateTime() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.el.getPosition(), total: this.el.getDuration()}, this.name)\n }\n\n addListeners() {\n Mediator.on(this.uniqueId + ':progress', this.progress, this)\n Mediator.on(this.uniqueId + ':timeupdate', this.updateTime, this)\n Mediator.on(this.uniqueId + ':statechanged', this.checkState, this)\n Mediator.on(this.uniqueId + ':flashready', this.bootstrap, this)\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(this.uniqueId + ':progress')\n Mediator.off(this.uniqueId + ':timeupdate')\n Mediator.off(this.uniqueId + ':statechanged')\n Mediator.off(this.uniqueId + ':flashready')\n }\n\n checkState() {\n if (this.isIdle || this.currentState === \"PAUSED\") {\n return\n } else if (this.currentState !== \"PLAYING_BUFFERING\" && this.el.getState() === \"PLAYING_BUFFERING\") {\n this.bufferingState = true\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.currentState = \"PLAYING_BUFFERING\"\n } else if (this.el.getState() === \"PLAYING\") {\n this.bufferingState = false\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n this.currentState = \"PLAYING\"\n } else if (this.el.getState() === \"IDLE\") {\n this.currentState = \"IDLE\"\n } else if (this.el.getState() === \"ENDED\") {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: this.el.getDuration()}, this.name)\n this.currentState = \"ENDED\"\n this.isIdle = true\n }\n }\n\n progress() {\n if (this.currentState !== \"IDLE\" && this.currentState !== \"ENDED\") {\n this.trigger(Events.PLAYBACK_PROGRESS,{\n start: 0,\n current: this.el.getBytesLoaded(),\n total: this.el.getBytesTotal()\n })\n }\n }\n\n firstPlay() {\n if (this.el.playerPlay) {\n this.isIdle = false\n this.el.playerPlay(this.src)\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.checkInitialSeek())\n this.currentState = \"PLAYING\"\n } else {\n this.listenToOnce(this, Events.PLAYBACK_READY, this.firstPlay)\n }\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n if (seekTime !== 0) {\n this.seekSeconds(seekTime)\n }\n }\n\n play() {\n if (this.currentState === 'PAUSED' || this.currentState === 'PLAYING_BUFFERING') {\n this.currentState = \"PLAYING\"\n this.el.playerResume()\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n } else if (this.currentState !== 'PLAYING') {\n this.firstPlay()\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n }\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.playerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n this.currentState = \"PAUSED\"\n this.el.playerPause()\n this.trigger(Events.PLAYBACK_PAUSE, this.name)\n }\n\n stop() {\n this.el.playerStop()\n this.trigger(Events.PLAYBACK_STOP)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: 0}, this.name)\n }\n\n isPlaying() {\n return !!(this.isReady && this.currentState.indexOf(\"PLAYING\") > -1)\n }\n\n get isReady(){\n return this.isReadyState\n }\n\n getDuration() {\n return this.el.getDuration()\n }\n\n seekPercentage(percentage) {\n if (this.el.getDuration() > 0) {\n var seekSeconds = this.el.getDuration() * (percentage / 100)\n this.seek(seekSeconds)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.seekPercentage(percentage))\n }\n }\n\n seek(time) {\n if (this.isReady && this.el.playerSeek) {\n this.el.playerSeek(time)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: this.el.getDuration()}, this.name)\n if (this.currentState === \"PAUSED\") {\n this.el.playerPause()\n }\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.seek(time))\n }\n }\n\n destroy() {\n clearInterval(this.bootstrapId)\n super.stopListening()\n this.$el.remove()\n }\n}\n\nFlash.canPlay = function(resource) {\n if (!Browser.hasFlash || !resource || resource.constructor !== String) {\n return false\n } else {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n return resourceParts.length > 1 && !Browser.isMobile && resourceParts[1].match(/^(mp4|mov|f4v|3gpp|3gp)$/)\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flash/flash.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport BaseFlashPlayback from 'playbacks/base_flash_playback'\nimport Events from 'base/events'\nimport template from 'base/template'\nimport Playback from 'base/playback'\nimport Mediator from 'components/mediator'\nimport Browser from 'components/browser'\nimport HLSEvents from './flashls_events'\nimport hlsSwf from './public/HLSPlayer.swf'\nimport $ from 'clappr-zepto'\n\n\nconst MAX_ATTEMPTS = 60\nconst AUTO = -1\n\nexport default class FlasHLS extends BaseFlashPlayback {\n get name() { return 'flashls' }\n get swfPath() { return template(hlsSwf)({baseUrl: this.baseUrl}) }\n\n get levels() { return this._levels || [] }\n get currentLevel() { return this._currentLevel || AUTO }\n set currentLevel(id) {\n this._currentLevel = id\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START)\n this.el.playerSetCurrentLevel(id)\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.hasEnded\n }\n\n /**\n * Determine if the playback is buffering.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return !!this.bufferingState && !this.hasEnded\n }\n\n constructor(options) {\n super(options)\n this.src = options.src\n this.baseUrl = options.baseUrl\n this.initHlsParameters(options)\n this.highDefinition = false\n this.autoPlay = options.autoPlay\n this.loop = options.loop\n this.defaultSettings = {\n left: [\"playstop\"],\n default: ['seekbar'],\n right: [\"fullscreen\", \"volume\", \"hd-indicator\"],\n seekEnabled: false\n }\n this.settings = $.extend({}, this.defaultSettings)\n this.playbackType = Playback.LIVE\n this.hasEnded = false\n this.addListeners()\n }\n\n initHlsParameters(options) {\n this.autoStartLoad = (options.autoStartLoad === undefined) ? true : options.autoStartLoad\n this.capLevelToStage = (options.capLevelToStage === undefined) ? false : options.capLevelToStage\n this.maxLevelCappingMode = (options.maxLevelCappingMode === undefined) ? \"downscale\" : options.maxLevelCappingMode\n this.minBufferLength = (options.minBufferLength === undefined) ? -1 : options.minBufferLength\n this.minBufferLengthCapping = (options.minBufferLengthCapping === undefined) ? -1 : options.minBufferLengthCapping\n this.maxBufferLength = (options.maxBufferLength === undefined) ? 120 : options.maxBufferLength\n this.maxBackBufferLength = (options.maxBackBufferLength === undefined) ? 30 : options.maxBackBufferLength\n this.lowBufferLength = (options.lowBufferLength === undefined) ? 3 : options.lowBufferLength\n this.mediaTimePeriod = (options.mediaTimePeriod === undefined) ? 100 : options.mediaTimePeriod\n this.fpsDroppedMonitoringPeriod = (options.fpsDroppedMonitoringPeriod === undefined) ? 5000 : options.fpsDroppedMonitoringPeriod\n this.fpsDroppedMonitoringThreshold = (options.fpsDroppedMonitoringThreshold === undefined) ? 0.2 : options.fpsDroppedMonitoringThreshold\n this.capLevelonFPSDrop = (options.capLevelonFPSDrop === undefined) ? false : options.capLevelonFPSDrop\n this.smoothAutoSwitchonFPSDrop = (options.smoothAutoSwitchonFPSDrop === undefined) ? this.capLevelonFPSDrop : options.smoothAutoSwitchonFPSDrop\n this.switchDownOnLevelError = (options.switchDownOnLevelError === undefined) ? true : options.switchDownOnLevelError\n this.seekMode = (options.seekMode === undefined) ? \"ACCURATE\" : options.seekMode\n this.keyLoadMaxRetry = (options.keyLoadMaxRetry === undefined) ? 3 : options.keyLoadMaxRetry\n this.keyLoadMaxRetryTimeout = (options.keyLoadMaxRetryTimeout === undefined) ? 64000 : options.keyLoadMaxRetryTimeout\n this.fragmentLoadMaxRetry = (options.fragmentLoadMaxRetry === undefined) ? 3 : options.fragmentLoadMaxRetry\n this.fragmentLoadMaxRetryTimeout = (options.fragmentLoadMaxRetryTimeout === undefined) ? 4000 : options.fragmentLoadMaxRetryTimeout\n this.fragmentLoadSkipAfterMaxRetry = (options.fragmentLoadSkipAfterMaxRetry === undefined) ? true : options.fragmentLoadSkipAfterMaxRetry\n this.maxSkippedFragments = (options.maxSkippedFragments === undefined) ? 5 : options.maxSkippedFragments\n this.flushLiveURLCache = (options.flushLiveURLCache === undefined) ? false : options.flushLiveURLCache\n this.initialLiveManifestSize = (options.initialLiveManifestSize === undefined) ? 1 : options.initialLiveManifestSize\n this.manifestLoadMaxRetry = (options.manifestLoadMaxRetry === undefined) ? 3 : options.manifestLoadMaxRetry\n this.manifestLoadMaxRetryTimeout = (options.manifestLoadMaxRetryTimeout === undefined) ? 64000 : options.manifestLoadMaxRetryTimeout\n this.manifestRedundantLoadmaxRetry = (options.manifestRedundantLoadmaxRetry === undefined) ? 3 : options.manifestRedundantLoadmaxRetry\n this.startFromBitrate = (options.startFromBitrate === undefined) ? -1 : options.startFromBitrate\n this.startFromLevel = (options.startFromLevel === undefined) ? -1 : options.startFromLevel\n this.autoStartMaxDuration = (options.autoStartMaxDuration === undefined) ? -1 : options.autoStartMaxDuration\n this.seekFromLevel = (options.seekFromLevel === undefined) ? -1 : options.seekFromLevel\n this.useHardwareVideoDecoder = (options.useHardwareVideoDecoder === undefined) ? false : options.useHardwareVideoDecoder\n this.hlsLogEnabled = (options.hlsLogEnabled === undefined) ? true : options.hlsLogEnabled\n this.logDebug = (options.logDebug === undefined) ? false : options.logDebug\n this.logDebug2 = (options.logDebug2 === undefined) ? false : options.logDebug2\n this.logWarn = (options.logWarn === undefined) ? true : options.logWarn\n this.logError = (options.logError === undefined) ? true : options.logError\n this.hlsMinimumDvrSize = (options.hlsMinimumDvrSize === undefined) ? 60 : options.hlsMinimumDvrSize\n }\n\n addListeners() {\n Mediator.on(this.cid + ':flashready', () => this.bootstrap())\n Mediator.on(this.cid + ':timeupdate', (timeMetrics) => this.updateTime(timeMetrics))\n Mediator.on(this.cid + ':playbackstate', (state) => this.setPlaybackState(state))\n Mediator.on(this.cid + ':levelchanged', (level) => this.levelChanged(level))\n Mediator.on(this.cid + ':error', (code, url, message) => this.flashPlaybackError(code, url, message))\n Mediator.on(this.cid + ':fragmentloaded',(loadmetrics) => this.onFragmentLoaded(loadmetrics))\n Mediator.once(this.cid + ':manifestloaded', (duration, loadmetrics) => this.manifestLoaded(duration, loadmetrics))\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(this.cid + ':flashready')\n Mediator.off(this.cid + ':timeupdate')\n Mediator.off(this.cid + ':playbackstate')\n Mediator.off(this.cid + ':levelchanged')\n Mediator.off(this.cid + ':playbackerror')\n Mediator.off(this.cid + ':fragmentloaded')\n Mediator.off(this.cid + ':manifestloaded')\n }\n\n bootstrap() {\n if (this.el.playerLoad) {\n this.el.width = \"100%\"\n this.el.height = \"100%\"\n this.isReadyState = true\n this.srcLoaded = false\n this.currentState = \"IDLE\"\n this.setFlashSettings()\n this.updatePlaybackType()\n if (this.autoPlay || this._shouldPlayOnBootstrap) {\n this.play()\n }\n this.trigger(Events.PLAYBACK_READY, this.name)\n } else {\n this._bootstrapAttempts = this._bootstrapAttempts || 0\n if (++this._bootstrapAttempts <= MAX_ATTEMPTS) {\n setTimeout(() => this.bootstrap(), 50)\n } else {\n this.trigger(Events.PLAYBACK_ERROR, {message: \"Max number of attempts reached\"}, this.name)\n }\n }\n }\n\n setFlashSettings() {\n this.el.playerSetAutoStartLoad(this.autoStartLoad)\n this.el.playerSetCapLevelToStage(this.capLevelToStage)\n this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode)\n this.el.playerSetMinBufferLength(this.minBufferLength)\n this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping)\n this.el.playerSetMaxBufferLength(this.maxBufferLength)\n this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength)\n this.el.playerSetLowBufferLength(this.lowBufferLength)\n this.el.playerSetMediaTimePeriod(this.mediaTimePeriod)\n this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod)\n this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold)\n this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop)\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop)\n this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError)\n this.el.playerSetSeekMode(this.seekMode)\n this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry)\n this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout)\n this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry)\n this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout)\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry)\n this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments)\n this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache)\n this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize)\n this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry)\n this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout)\n this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry)\n this.el.playerSetStartFromBitrate(this.startFromBitrate)\n this.el.playerSetStartFromLevel(this.startFromLevel)\n this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration)\n this.el.playerSetSeekFromLevel(this.seekFromLevel)\n this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder)\n this.el.playerSetLogInfo(this.hlsLogEnabled)\n this.el.playerSetLogDebug(this.logDebug)\n this.el.playerSetLogDebug2(this.logDebug2)\n this.el.playerSetLogWarn(this.logWarn)\n this.el.playerSetLogError(this.logError)\n }\n\n setAutoStartLoad(autoStartLoad) {\n this.autoStartLoad = autoStartLoad\n this.el.playerSetAutoStartLoad(this.autoStartLoad)\n }\n\n setCapLevelToStage(capLevelToStage) {\n this.capLevelToStage = capLevelToStage\n this.el.playerSetCapLevelToStage(this.capLevelToStage)\n }\n\n setMaxLevelCappingMode(maxLevelCappingMode) {\n this.maxLevelCappingMode = maxLevelCappingMode\n this.el.playerSetMaxLevelCappingMode(this.maxLevelCappingMode)\n }\n\n setSetMinBufferLength(minBufferLength) {\n this.minBufferLength = minBufferLength\n this.el.playerSetMinBufferLength(this.minBufferLength)\n }\n\n setMinBufferLengthCapping(minBufferLengthCapping) {\n this.minBufferLengthCapping = minBufferLengthCapping\n this.el.playerSetMinBufferLengthCapping(this.minBufferLengthCapping)\n }\n\n setMaxBufferLength(maxBufferLength) {\n this.maxBufferLength = maxBufferLength\n this.el.playerSetMaxBufferLength(this.maxBufferLength)\n }\n\n setMaxBackBufferLength(maxBackBufferLength) {\n this.maxBackBufferLength = maxBackBufferLength\n this.el.playerSetMaxBackBufferLength(this.maxBackBufferLength)\n }\n\n setLowBufferLength(lowBufferLength) {\n this.lowBufferLength = lowBufferLength\n this.el.playerSetLowBufferLength(this.lowBufferLength)\n }\n\n setMediaTimePeriod(mediaTimePeriod) {\n this.mediaTimePeriod = mediaTimePeriod\n this.el.playerSetMediaTimePeriod(this.mediaTimePeriod)\n }\n\n setFpsDroppedMonitoringPeriod(fpsDroppedMonitoringPeriod) {\n this.fpsDroppedMonitoringPeriod = fpsDroppedMonitoringPeriod\n this.el.playerSetFpsDroppedMonitoringPeriod(this.fpsDroppedMonitoringPeriod)\n }\n\n setFpsDroppedMonitoringThreshold(fpsDroppedMonitoringThreshold) {\n this.fpsDroppedMonitoringThreshold = fpsDroppedMonitoringThreshold\n this.el.playerSetFpsDroppedMonitoringThreshold(this.fpsDroppedMonitoringThreshold)\n }\n\n setCapLevelonFPSDrop(capLevelonFPSDrop) {\n this.capLevelonFPSDrop = capLevelonFPSDrop\n this.el.playerSetCapLevelonFPSDrop(this.capLevelonFPSDrop)\n }\n\n setSmoothAutoSwitchonFPSDrop(smoothAutoSwitchonFPSDrop) {\n this.smoothAutoSwitchonFPSDrop = smoothAutoSwitchonFPSDrop\n this.el.playerSetSmoothAutoSwitchonFPSDrop(this.smoothAutoSwitchonFPSDrop)\n }\n\n setSwitchDownOnLevelError(switchDownOnLevelError) {\n this.switchDownOnLevelError = switchDownOnLevelError\n this.el.playerSetSwitchDownOnLevelError(this.switchDownOnLevelError)\n }\n\n setSeekMode(seekMode) {\n this.seekMode = seekMode\n this.el.playerSetSeekMode(this.seekMode)\n }\n\n setKeyLoadMaxRetry(keyLoadMaxRetry) {\n this.keyLoadMaxRetry = keyLoadMaxRetry\n this.el.playerSetKeyLoadMaxRetry(this.keyLoadMaxRetry)\n }\n\n setKeyLoadMaxRetryTimeout(keyLoadMaxRetryTimeout) {\n this.keyLoadMaxRetryTimeout = keyLoadMaxRetryTimeout\n this.el.playerSetKeyLoadMaxRetryTimeout(this.keyLoadMaxRetryTimeout)\n }\n\n setFragmentLoadMaxRetry(fragmentLoadMaxRetry) {\n this.fragmentLoadMaxRetry = fragmentLoadMaxRetry\n this.el.playerSetFragmentLoadMaxRetry(this.fragmentLoadMaxRetry)\n }\n\n setFragmentLoadMaxRetryTimeout(fragmentLoadMaxRetryTimeout) {\n this.fragmentLoadMaxRetryTimeout = fragmentLoadMaxRetryTimeout\n this.el.playerSetFragmentLoadMaxRetryTimeout(this.fragmentLoadMaxRetryTimeout)\n }\n\n setFragmentLoadSkipAfterMaxRetry(fragmentLoadSkipAfterMaxRetry) {\n this.fragmentLoadSkipAfterMaxRetry = fragmentLoadSkipAfterMaxRetry\n this.el.playerSetFragmentLoadSkipAfterMaxRetry(this.fragmentLoadSkipAfterMaxRetry)\n }\n\n setMaxSkippedFragments(maxSkippedFragments) {\n this.maxSkippedFragments = maxSkippedFragments\n this.el.playerSetMaxSkippedFragments(this.maxSkippedFragments)\n }\n\n setFlushLiveURLCache(flushLiveURLCache) {\n this.flushLiveURLCache = flushLiveURLCache\n this.el.playerSetFlushLiveURLCache(this.flushLiveURLCache)\n }\n\n setInitialLiveManifestSize(initialLiveManifestSize) {\n this.initialLiveManifestSize = initialLiveManifestSize\n this.el.playerSetInitialLiveManifestSize(this.initialLiveManifestSize)\n }\n\n setManifestLoadMaxRetry(manifestLoadMaxRetry) {\n this.manifestLoadMaxRetry = manifestLoadMaxRetry\n this.el.playerSetManifestLoadMaxRetry(this.manifestLoadMaxRetry)\n }\n\n setManifestLoadMaxRetryTimeout(manifestLoadMaxRetryTimeout) {\n this.manifestLoadMaxRetryTimeout = manifestLoadMaxRetryTimeout\n this.el.playerSetManifestLoadMaxRetryTimeout(this.manifestLoadMaxRetryTimeout)\n }\n\n setManifestRedundantLoadmaxRetry(manifestRedundantLoadmaxRetry) {\n this.manifestRedundantLoadmaxRetry = manifestRedundantLoadmaxRetry\n this.el.playerSetManifestRedundantLoadmaxRetry(this.manifestRedundantLoadmaxRetry)\n }\n\n setStartFromBitrate(startFromBitrate) {\n this.startFromBitrate = startFromBitrate\n this.el.playerSetStartFromBitrate(this.startFromBitrate)\n }\n\n setStartFromLevel(startFromLevel) {\n this.startFromLevel = startFromLevel\n this.el.playerSetStartFromLevel(this.startFromLevel)\n }\n\n setAutoStartMaxDuration(autoStartMaxDuration) {\n this.autoStartMaxDuration = autoStartMaxDuration\n this.el.playerSetAutoStartMaxDuration(this.autoStartMaxDuration)\n }\n\n setSeekFromLevel(seekFromLevel) {\n this.seekFromLevel = seekFromLevel\n this.el.playerSetSeekFromLevel(this.seekFromLevel)\n }\n\n setUseHardwareVideoDecoder(useHardwareVideoDecoder) {\n this.useHardwareVideoDecoder = useHardwareVideoDecoder\n this.el.playerSetUseHardwareVideoDecoder(this.useHardwareVideoDecoder)\n }\n\n setSetLogInfo(hlsLogEnabled) {\n this.hlsLogEnabled = hlsLogEnabled\n this.el.playerSetLogInfo(this.hlsLogEnabled)\n }\n\n setLogDebug(logDebug) {\n this.logDebug = logDebug\n this.el.playerSetLogDebug(this.logDebug)\n }\n\n setLogDebug2(logDebug2) {\n this.logDebug2 = logDebug2\n this.el.playerSetLogDebug2(this.logDebug2)\n }\n\n setLogWarn(logWarn) {\n this.logWarn = logWarn\n this.el.playerSetLogWarn(this.logWarn)\n }\n\n setLogError(logError) {\n this.logError = logError\n this.el.playerSetLogError(this.logError)\n }\n\n levelChanged(level) {\n var currentLevel = this.el.getLevels()[level]\n if (currentLevel) {\n this.highDefinition = (currentLevel.height >= 720 || (currentLevel.bitrate / 1000) >= 2000);\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition)\n this.trigger(Events.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bandwidth,\n bitrate: currentLevel.bitrate,\n level: level\n })\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END)\n }\n }\n\n updateTime(timeMetrics) {\n if (this.currentState === 'IDLE') {\n return\n }\n\n var duration = this.normalizeDuration(timeMetrics.duration)\n var position = Math.min(Math.max(timeMetrics.position, 0), duration)\n var previousDVRStatus = this.dvrEnabled\n var livePlayback = (this.playbackType === Playback.LIVE)\n this.dvrEnabled = (livePlayback && duration > this.hlsMinimumDvrSize)\n\n if (duration === 100 || livePlayback === undefined) {\n return;\n }\n\n if (this.dvrEnabled !== previousDVRStatus) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE, this.name)\n }\n\n if (livePlayback && (!this.dvrEnabled || !this.dvrInUse)) {\n position = duration\n }\n\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: position, total: duration}, this.name)\n }\n\n play() {\n if(this.currentState === 'PAUSED') {\n this.el.playerResume()\n } else if (!this.srcLoaded && this.currentState !== \"PLAYING\") {\n this.firstPlay()\n } else {\n this.el.playerPlay()\n }\n }\n\n getPlaybackType() {\n return this.playbackType? this.playbackType: null\n }\n\n getCurrentLevelIndex() {\n return this.currentLevel\n }\n\n getCurrentLevel() {\n return this.levels[this.currentLevel]\n }\n\n getCurrentBitrate() {\n return this.levels[this.currentLevel].bitrate\n }\n\n setCurrentLevel(level) {\n this.currentLevel = level\n }\n\n isHighDefinitionInUse() {\n return this.highDefinition\n }\n\n getLevels() {\n return this.levels\n }\n\n setPlaybackState(state) {\n if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\"].indexOf(state) >= 0) {\n this.bufferingState = true\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n this.updateCurrentState(state)\n } else if ([\"PLAYING\", \"PAUSED\"].indexOf(state) >= 0) {\n if ([\"PLAYING_BUFFERING\", \"PAUSED_BUFFERING\", \"IDLE\"].indexOf(this.currentState) >= 0) {\n this.bufferingState = false\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n }\n this.updateCurrentState(state)\n } else if (state === \"IDLE\") {\n this.srcLoaded = false\n if (this.loop && [\"PLAYING_BUFFERING\", \"PLAYING\"].indexOf(this.currentState) >= 0) {\n this.play()\n this.seek(0)\n } else {\n this.updateCurrentState(state)\n this.hasEnded = true\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: this.el.getDuration()}, this.name)\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n }\n }\n\n updateCurrentState(state) {\n this.currentState = state\n if (state !== \"IDLE\") {\n this.hasEnded = false\n }\n this.updatePlaybackType()\n if (state === \"PLAYING\") {\n this.trigger(Events.PLAYBACK_PLAY, this.name)\n } else if (state === \"PAUSED\") {\n this.trigger(Events.PLAYBACK_PAUSE, this.name)\n }\n }\n\n updatePlaybackType() {\n this.playbackType = this.el.getType()\n if (this.playbackType) {\n this.playbackType = this.playbackType.toLowerCase()\n if (this.playbackType === Playback.VOD) {\n this.startReportingProgress()\n } else {\n this.stopReportingProgress()\n }\n }\n this.trigger(Events.PLAYBACK_PLAYBACKSTATE, {type: this.playbackType})\n }\n\n startReportingProgress() {\n if (!this.reportingProgress) {\n this.reportingProgress = true\n }\n }\n\n stopReportingProgress() {\n this.reportingProgress = false\n }\n\n onFragmentLoaded(loadmetrics) {\n this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, loadmetrics)\n if (this.reportingProgress && this.el.getPosition) {\n var buffered = this.el.getPosition() + this.el.getbufferLength()\n this.trigger(Events.PLAYBACK_PROGRESS, {\n start: this.el.getPosition(),\n current: buffered,\n total: this.el.getDuration()\n })\n }\n }\n\n firstPlay() {\n if (this.el.playerLoad) {\n this.setFlashSettings() //ensure flushLiveURLCache will work (#327)\n this.el.playerLoad(this.src)\n Mediator.once(this.cid + ':manifestloaded',() => this.el.playerPlay())\n this.srcLoaded = true\n } else {\n this._shouldPlayOnBootstrap = true\n }\n }\n\n volume(value) {\n if (this.isReady) {\n this.el.playerVolume(value)\n } else {\n this.listenToOnce(this, Events.PLAYBACK_BUFFERFULL, () => this.volume(value))\n }\n }\n\n pause() {\n if (this.playbackType !== Playback.LIVE || this.dvrEnabled) {\n this.el.playerPause()\n if (this.playbackType === Playback.LIVE && this.dvrEnabled) {\n this.updateDvr(true)\n }\n }\n }\n\n stop() {\n this.srcLoaded = false\n this.el.playerStop()\n this.trigger(Events.PLAYBACK_STOP)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 0, total: 0}, this.name)\n }\n\n isPlaying() {\n if (this.currentState) {\n return !!(this.currentState.match(/playing/i))\n }\n return false\n }\n\n get isReady() {\n return this.isReadyState\n }\n\n getDuration() {\n return this.normalizeDuration(this.el.getDuration())\n }\n\n normalizeDuration(duration) {\n if (this.playbackType === Playback.LIVE) {\n // estimate 10 seconds of buffer time for live streams for seek positions\n duration = duration - 10\n }\n return duration\n }\n\n seekPercentage(percentage) {\n var duration = this.el.getDuration()\n var time = 0\n if (percentage > 0) {\n time = duration * percentage / 100\n }\n this.seek(time)\n }\n\n seek(time) {\n var duration = this.el.getDuration()\n if (this.playbackType === Playback.LIVE) {\n // seek operations to a time within 5 seconds from live stream will position playhead back to live\n var dvrInUse = (time >= 0 && duration - time > 5)\n if (!dvrInUse) {\n time = -1\n }\n this.updateDvr(dvrInUse)\n }\n this.el.playerSeek(time)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: duration}, this.name)\n }\n\n updateDvr(dvrInUse) {\n var previousDvrInUse = !!this.dvrInUse\n this.dvrInUse = dvrInUse\n if (this.dvrInUse !== previousDvrInUse) {\n this.updateSettings()\n this.trigger(Events.PLAYBACK_DVR, this.dvrInUse)\n this.trigger(Events.PLAYBACK_STATS_ADD, {'dvr': this.dvrInUse})\n }\n }\n\n flashPlaybackError(code, url, message) {\n this.trigger(Events.PLAYBACK_ERROR, {code: code, url: url, message: message})\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n manifestLoaded(duration, loadmetrics) {\n var levels = this.el.getLevels()\n var levelsLength = levels.length\n this._levels = []\n\n for (var index = 0 ; index < levelsLength ; index++) {\n this._levels.push({id: index, label: `${levels[index].height}p`})\n }\n this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels)\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, {duration: duration, data: loadmetrics})\n }\n\n timeUpdate(time, duration) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: time, total: duration}, this.name)\n }\n\n destroy() {\n this.stopListening()\n this.$el.remove()\n }\n\n updateSettings() {\n this.settings = $.extend({}, this.defaultSettings)\n if (this.playbackType === Playback.VOD || this.dvrInUse) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.seekEnabled = true\n } else if (this.dvrEnabled) {\n this.settings.left = [\"playpause\"]\n this.settings.seekEnabled = true\n } else {\n this.settings.seekEnabled = false\n }\n }\n\n createCallbacks() {\n if (!window.Clappr) {\n window.Clappr = {}\n }\n if (!window.Clappr.flashlsCallbacks) {\n window.Clappr.flashlsCallbacks = {}\n }\n this.flashlsEvents = new HLSEvents(this.cid)\n window.Clappr.flashlsCallbacks[this.cid] = (eventName, args) => {\n this.flashlsEvents[eventName].apply(this.flashlsEvents, args)\n }\n }\n\n render() {\n super.render()\n this.createCallbacks()\n return this\n }\n}\n\nFlasHLS.canPlay = function(resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n return Browser.hasFlash &&\n ((resourceParts.length > 1 && resourceParts[1] === \"m3u8\") ||\n mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl')\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flashls/flashls.js\n **/","import Mediator from '../../components/mediator'\n\nexport default class HLSEvents {\n constructor(instanceId) {\n this.instanceId = instanceId\n }\n ready() {\n Mediator.trigger(`${this.instanceId}:flashready`)\n }\n videoSize(width, height) {\n Mediator.trigger(`${this.instanceId}:videosizechanged`, width, height)\n }\n complete() {\n Mediator.trigger(`${this.instanceId}:complete`)\n }\n error(code, url, message) {\n Mediator.trigger(`${this.instanceId}:error`, code, url, message)\n }\n manifest(duration, loadmetrics) {\n Mediator.trigger(`${this.instanceId}:manifestloaded`, duration, loadmetrics)\n }\n audioLevelLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:audiolevelloaded`, loadmetrics)\n }\n levelLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:levelloaded`, loadmetrics)\n }\n fragmentLoaded(loadmetrics) {\n Mediator.trigger(`${this.instanceId}:fragmentloaded`, loadmetrics)\n }\n fragmentPlaying(playmetrics) {\n Mediator.trigger(`${this.instanceId}:fragmentplaying`, playmetrics)\n }\n position(timemetrics) {\n Mediator.trigger(`${this.instanceId}:timeupdate`, timemetrics)\n }\n state(newState) {\n Mediator.trigger(`${this.instanceId}:playbackstate`, newState)\n }\n seekState(newState) {\n Mediator.trigger(`${this.instanceId}:seekstate`, newState)\n }\n switch(newLevel) {\n Mediator.trigger(`${this.instanceId}:levelchanged`, newLevel)\n }\n audioTracksListChange(trackList) {\n Mediator.trigger(`${this.instanceId}:audiotracklistchanged`, trackList)\n }\n audioTrackChange(trackId) {\n Mediator.trigger(`${this.instanceId}:audiotrackchanged`, trackId)\n }\n}\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/flashls/flashls_events.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport HTML5VideoPlayback from 'playbacks/html5_video'\nimport HLSJS from 'hls.js'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport Browser from 'components/browser'\nimport Log from 'plugins/log'\n\nconst AUTO = -1\n\nexport default class HLS extends HTML5VideoPlayback {\n get name() { return 'hls' }\n\n get levels() { return this._levels || [] }\n get currentLevel() { return this._currentLevel || AUTO }\n set currentLevel(id) {\n this._currentLevel = id\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_START)\n this.hls.currentLevel = this._currentLevel\n }\n\n constructor(options) {\n super(options)\n this.minDvrSize = options.hlsMinimumDvrSize ? options.hlsMinimumDvrSize : 60\n this.playbackType = Playback.VOD\n // for hls streams which have dvr with a sliding window,\n // the content at the start of the playlist is removed as new\n // content is appended at the end.\n // this means the actual playable start time will increase as the\n // start content is deleted\n // For streams with dvr where the entire recording is kept from the\n // beginning this should stay as 0\n this.playableRegionStartTime = 0\n // if content is removed from the beginning then this empty area should\n // be ignored. \"playableRegionDuration\" does not consider this\n this.playableRegionDuration = 0\n options.autoPlay && this.setupHls()\n }\n\n setupHls() {\n this.hls = new HLSJS(this.options.hlsjsConfig || {})\n this.hls.on(HLSJS.Events.MEDIA_ATTACHED, () => this.hls.loadSource(this.options.src))\n this.hls.on(HLSJS.Events.LEVEL_LOADED, (evt, data) => this.updatePlaybackType(evt, data))\n this.hls.on(HLSJS.Events.LEVEL_UPDATED, (evt, data) => this.updateDuration(evt, data))\n this.hls.on(HLSJS.Events.LEVEL_SWITCH, (evt,data) => this.onLevelSwitch(evt, data))\n this.hls.on(HLSJS.Events.FRAG_LOADED, (evt, data) => this.onFragmentLoaded(evt, data))\n this.hls.attachMedia(this.el)\n }\n\n // override\n setupSrc(srcUrl) {\n // this playback manages the src on the video element itself\n }\n\n // the duration on the video element itself should not be used\n // as this does not necesarily represent the duration of the stream\n // https://github.com/clappr/clappr/issues/668#issuecomment-157036678\n getDuration() {\n return this.playableRegionDuration\n }\n\n getCurrentTime() {\n return this.el.currentTime - this.playableRegionStartTime\n }\n\n seekPercentage(percentage) {\n var seekTo = this.playableRegionDuration\n if (percentage > 0) {\n seekTo = this.playableRegionDuration * (percentage / 100)\n }\n this.seek(seekTo)\n }\n\n seek(time) {\n if (time < 0) {\n Log.warn(\"Attempt to seek to a negative time. Resetting to live point. Use seekToLivePoint() to seek to the live point.\")\n time = this.getDuration()\n }\n // assume live if time within 3 seconds of end of stream\n this.dvrEnabled && this.updateDvr(time < this.getDuration()-3)\n time += this.playableRegionStartTime\n super.seek(time)\n }\n\n seekToLivePoint() {\n this.seek(this.getDuration())\n }\n\n updateDvr(status) {\n this.trigger(Events.PLAYBACK_DVR, status)\n this.trigger(Events.PLAYBACK_STATS_ADD, {'dvr': status})\n }\n\n updateSettings() {\n if (this.playbackType === Playback.VOD) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n } else if (this.dvrEnabled) {\n this.settings.left = [\"playpause\"]\n } else {\n this.settings.left = [\"playstop\"]\n }\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n onTimeUpdate() {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.getCurrentTime(), total: this.getDuration()}, this.name)\n }\n\n play() {\n if (!this.hls) {\n this.setupHls()\n }\n super.play()\n }\n\n pause() {\n super.pause()\n if (this.dvrEnabled) {\n this.updateDvr(true)\n }\n }\n\n stop() {\n super.stop()\n if (this.hls) {\n this.hls.destroy()\n delete this.hls\n }\n }\n\n updatePlaybackType(evt, data) {\n this.playbackType = data.details.live ? Playback.LIVE : Playback.VOD\n this.fillLevels()\n }\n\n fillLevels() {\n this._levels = this.hls.levels.map((level, index) => { return {id: index , label: `${level.height}p`}})\n this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels)\n }\n\n updateDuration(evt, data) {\n var fragments = data.details.fragments\n if (fragments.length > 0) {\n this.playableRegionStartTime = fragments[0].start\n }\n this.playableRegionDuration = data.details.totalduration\n this.onDurationChange()\n }\n\n onFragmentLoaded(evt, data) {\n this.trigger(Events.PLAYBACK_FRAGMENT_LOADED, data)\n }\n\n onLevelSwitch(evt, data) {\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH_END)\n this.trigger(Events.PLAYBACK_LEVEL_SWITCH, data)\n var currentLevel = this.hls.levels[data.level]\n if (currentLevel) {\n this.highDefinition = (currentLevel.height >= 720 || (currentLevel.bitrate / 1000) >= 2000);\n this.trigger(Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinition)\n this.trigger(Events.PLAYBACK_BITRATE, {\n height: currentLevel.height,\n width: currentLevel.width,\n bandwidth: currentLevel.bandwidth,\n bitrate: currentLevel.bitrate,\n level: data.level\n })\n }\n }\n\n get dvrEnabled() {\n return (this.playableRegionDuration >= this.minDvrSize && this.getPlaybackType() === Playback.LIVE)\n }\n\n getPlaybackType() {\n return this.playbackType\n }\n\n isSeekEnabled() {\n return (this.playbackType === Playback.VOD || this.dvrEnabled)\n }\n}\n\nHLS.canPlay = function(resource, mimeType) {\n var resourceParts = resource.split('?')[0].match(/.*\\.(.*)$/) || []\n var isHls = ((resourceParts.length > 1 && resourceParts[1] === \"m3u8\") ||\n mimeType === 'application/x-mpegURL' || mimeType === 'application/vnd.apple.mpegurl')\n\n return !!(HLSJS.isSupported() && isHls && !Browser.isSafari)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/hls/hls.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport HTML5Video from 'playbacks/html5_video'\nimport find from 'lodash.find'\n\nexport default class HTML5Audio extends HTML5Video {\n get name() { return 'html5_audio' }\n get tagName() { return 'audio' }\n\n updateSettings() {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n getPlaybackType() {\n return Playback.AOD\n }\n}\n\nHTML5Audio.canPlay = function(resourceUrl, mimeType) {\n var mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n }\n return HTML5Video._canPlay('audio', mimetypes, resourceUrl, mimeType) \n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html5_audio/html5_audio.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {seekStringToSeconds} from 'base/utils'\n\nimport Playback from 'base/playback'\nimport template from 'base/template'\nimport Styler from 'base/styler'\nimport Browser from 'components/browser'\nimport Events from 'base/events'\nimport tagStyle from './public/style.scss'\nimport sourceHTML from './public/index.html'\nimport find from 'lodash.find'\n\nconst MIMETYPES = {\n 'mp4': [\"avc1.42E01E\", \"avc1.58A01E\", \"avc1.4D401E\", \"avc1.64001E\", \"mp4v.20.8\", \"mp4v.20.240\", \"mp4a.40.2\"].map(\n (codec) => { return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"'}),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegurl']\n}\nMIMETYPES['ogv'] = MIMETYPES['ogg']\nMIMETYPES['3gp'] = MIMETYPES['3gpp']\n\nexport default class HTML5Video extends Playback {\n get name() { return 'html5_video' }\n get tagName() { return 'video' }\n get template() { return template(sourceHTML) }\n\n get attributes() {\n return {\n 'data-html5-video': ''\n }\n }\n\n get events() {\n return {\n 'canplay': 'onCanPlay',\n 'canplaythrough': 'handleBufferingEvents',\n 'durationchange': 'onDurationChange',\n 'ended': 'onEnded',\n 'error': 'onError',\n 'loadeddata': 'onLoadedData',\n 'loadedmetadata': 'onLoadedMetadata',\n 'pause': 'onPause',\n 'playing': 'onPlaying',\n 'progress': 'onProgress',\n 'seeked': 'handleBufferingEvents',\n 'seeking': 'handleBufferingEvents',\n 'stalled': 'handleBufferingEvents',\n 'timeupdate': 'onTimeUpdate',\n 'waiting': 'onWaiting'\n }\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.el.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return !!this.bufferingState\n }\n\n constructor(options) {\n super(options)\n this.loadStarted = false\n this.playheadMoving = false\n this.playheadMovingTimer = null\n this.stopped = false\n this.options = options\n this.setupSrc(options.src)\n this.el.loop = options.loop\n if (options.poster) {\n this.$el.attr(\"poster\", options.poster)\n }\n this.el.autoplay = options.autoPlay\n if (Browser.isSafari) {\n this.setupSafari()\n } else {\n this.el.preload = options.preload ? options.preload: 'metadata'\n this.settings.seekEnabled = true\n }\n this.settings = {default: ['seekbar']}\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n this.settings.right = [\"fullscreen\", \"volume\", \"hd-indicator\"]\n }\n\n /**\n * Sets the source url on the element, and also the 'src' property.\n * @method setupSrc\n * @param {String} srcUrl The source URL.\n */\n setupSrc(srcUrl) {\n this.src = srcUrl\n this.el.src = srcUrl\n }\n\n setupSafari() {\n this.el.preload = 'auto'\n }\n\n onLoadedMetadata(e) {\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, {duration: e.target.duration, data: e})\n this.updateSettings()\n var autoSeekFromUrl = typeof(this.options.autoSeekFromUrl) === \"undefined\" || this.options.autoSeekFromUrl\n if (this.getPlaybackType() !== Playback.LIVE && autoSeekFromUrl) {\n this.checkInitialSeek()\n }\n }\n\n onDurationChange() {\n this.updateSettings()\n this.onTimeUpdate()\n }\n\n updateSettings() {\n // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n // that's why we check it again and update media control accordingly.\n if (this.getPlaybackType() === Playback.VOD) {\n this.settings.left = [\"playpause\", \"position\", \"duration\"]\n } else {\n this.settings.left = [\"playstop\"]\n }\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n isSeekEnabled() {\n return isFinite(this.getDuration())\n }\n\n getPlaybackType() {\n return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? Playback.LIVE : Playback.VOD\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n play() {\n this.stopped = false\n this.handleBufferingEvents()\n this.el.play()\n }\n\n pause() {\n this.el.pause()\n }\n\n stop() {\n this.pause()\n this.stopped = true\n this.el.currentTime = 0\n this.stopPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n volume(value) {\n this.el.volume = value / 100\n }\n\n mute() {\n this.el.volume = 0\n }\n\n unmute() {\n this.el.volume = 1\n }\n\n isMuted() {\n return !!this.el.volume\n }\n\n isPlaying() {\n return !this.el.paused && !this.el.ended\n }\n\n get isReady() {\n return this.isReadyState\n }\n\n startPlayheadMovingChecks() {\n if (this.playheadMovingTimer !== null) {\n return\n }\n this.playheadMovingTimeOnCheck = null\n this.determineIfPlayheadMoving()\n this.playheadMovingTimer = setInterval(this.determineIfPlayheadMoving.bind(this), 500)\n }\n\n stopPlayheadMovingChecks() {\n if (this.playheadMovingTimer === null) {\n return\n }\n clearInterval(this.playheadMovingTimer)\n this.playheadMovingTimer = null\n this.playheadMoving = false\n }\n\n determineIfPlayheadMoving() {\n var before = this.playheadMovingTimeOnCheck\n var now = this.el.currentTime\n this.playheadMoving = before !== now\n this.playheadMovingTimeOnCheck = now\n this.handleBufferingEvents()\n }\n\n // this seems to happen when the user is having to wait\n // for something to happen AFTER A USER INTERACTION\n // e.g the player might be buffering, but when `play()` is called\n // only at this point will this be called.\n // Or the user may seek somewhere but the new area requires buffering,\n // so it will fire then as well.\n // On devices where playing is blocked until requested with a user action,\n // buffering may start, but never finish until the user initiates a play,\n // but this only happens when play is actually requested\n onWaiting() {\n this.loadStarted = true\n this.handleBufferingEvents()\n }\n \n // called after the first frame has loaded\n // note this doesn't fire on ios before the user has requested play\n // ideally the \"loadstart\" event would be used instead, but this fires\n // before a user has requested play on iOS, and also this is always fired\n // even if the preload setting is \"none\". In both these cases this causes\n // infinite buffering until the user does something which isn't great.\n onLoadedData() {\n this.loadStarted = true\n this.handleBufferingEvents()\n }\n\n // note this doesn't fire on ios before user has requested play\n onCanPlay() {\n this.handleBufferingEvents()\n }\n\n onPlaying() {\n this.startPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PLAY)\n }\n\n onPause() {\n this.stopPlayheadMovingChecks()\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PAUSE)\n }\n\n onEnded() {\n this.handleBufferingEvents()\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n\n // The playback should be classed as buffering if the following are true:\n // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n // - the media hasn't \"ended\",\n // - the media hasn't been stopped\n // - loading has started\n handleBufferingEvents() {\n var playheadShouldBeMoving = !this.el.ended && !this.el.paused\n var buffering = this.loadStarted && !this.el.ended && !this.stopped && ((playheadShouldBeMoving && !this.playheadMoving) || this.el.readyState < this.el.HAVE_FUTURE_DATA)\n if (this.bufferingState !== buffering) {\n this.bufferingState = buffering\n if (buffering) {\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n }\n else {\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n }\n }\n }\n\n onError(event) {\n this.trigger(Events.PLAYBACK_ERROR, this.el.error, this.name)\n }\n\n destroy() {\n this.stop()\n this.el.src = ''\n this.src = null\n this.$el.remove()\n }\n\n seek(time) {\n this.el.currentTime = time\n }\n\n seekPercentage(percentage) {\n var time = this.el.duration * (percentage / 100)\n this.seek(time)\n }\n\n checkInitialSeek() {\n var seekTime = seekStringToSeconds(window.location.href)\n if (seekTime !== 0) {\n this.seek(seekTime)\n }\n }\n\n getCurrentTime() {\n return this.el.currentTime\n }\n\n getDuration() {\n return this.el.duration\n }\n\n onTimeUpdate() {\n this.handleBufferingEvents()\n if (this.getPlaybackType() === Playback.LIVE) {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: 1, total: 1}, this.name)\n } else {\n this.trigger(Events.PLAYBACK_TIMEUPDATE, {current: this.el.currentTime, total: this.el.duration}, this.name)\n }\n }\n\n onProgress() {\n if (!this.el.buffered.length) {\n return\n }\n var bufferedPos = 0\n for (var i = 0; i < this.el.buffered.length; i++) {\n if (this.el.currentTime >= this.el.buffered.start(i) && this.el.currentTime <= this.el.buffered.end(i)) {\n bufferedPos = i\n break\n }\n }\n this.trigger(Events.PLAYBACK_PROGRESS, {\n start: this.el.buffered.start(bufferedPos),\n current: this.el.buffered.end(bufferedPos),\n total: this.el.duration\n })\n }\n\n typeFor(src) {\n var resourceParts = src.split('?')[0].match(/.*\\.(.*)$/) || []\n var isHls = resourceParts.length > 1 && resourceParts[1] === \"m3u8\"\n return isHls ? 'application/vnd.apple.mpegurl' : 'video/mp4'\n }\n\n ready() {\n if (this.isReadyState) {\n return\n }\n this.isReadyState = true\n this.trigger(Events.PLAYBACK_READY, this.name)\n }\n\n render() {\n var style = Styler.getStyleFor(tagStyle)\n\n this.src && this.$el.html(this.template({ src: this.src, type: this.typeFor(this.src) }))\n\n if (this.options.useVideoTagDefaultControls) {\n this.$el.attr('controls', 'controls')\n }\n\n if (this.options.disableVideoTagContextMenu) {\n this.$el.on(\"contextmenu\", () => {\n return false\n })\n }\n\n this.$el.append(style)\n this.ready()\n return this\n }\n}\n\nHTML5Video._canPlay = function(type, mimeTypesByExtension, resourceUrl, mimeType) {\n var extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1]\n var mimeTypes = mimeType || mimeTypesByExtension[extension] || []\n mimeTypes = (mimeTypes.constructor === Array) ? mimeTypes : [mimeTypes]\n\n var media = document.createElement(type)\n return !!find(mimeTypes, (mediaType) => !!media.canPlayType(mediaType).replace(/no/, ''))\n}\n\nHTML5Video.canPlay = function(resourceUrl, mimeType) {\n return HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType)\n}\n\nmodule.exports = HTML5Video\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html5_video/html5_video.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport imgStyle from './public/style.scss'\n\nexport default class HTMLImg extends Playback {\n get name() { return 'html_img' }\n get tagName() { return 'img' }\n get attributes() {\n return {\n 'data-html-img': ''\n }\n }\n\n getPlaybackType() {\n return Playback.NO_OP\n }\n\n constructor(params) {\n super(params)\n this.el.src = params.src\n }\n\n render() {\n var style = Styler.getStyleFor(imgStyle)\n this.$el.append(style)\n return this\n }\n }\n\nHTMLImg.canPlay = function(resource) {\n return !!resource.match(/(.*).(png|jpg|jpeg|gif|bmp)/)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/html_img/html_img.js\n **/","import {requestAnimationFrame, cancelAnimationFrame, getBrowserLanguage} from 'base/utils'\nimport Playback from 'base/playback'\nimport template from 'base/template'\nimport Styler from 'base/styler'\nimport Events from 'base/events'\nimport noOpStyle from './public/style.scss'\nimport noOpHTML from './public/error.html'\n\nexport default class NoOp extends Playback {\n get name() { return 'no_op' }\n get template() { return template(noOpHTML) }\n get attributes() {\n return {'data-no-op': ''}\n }\n\n getNoOpMessage(){\n var messages = {\n 'en': 'Your browser does not support the playback of this video. Please try using a different browser.',\n 'es': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.',\n 'pt': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.'\n }\n messages['en-us'] = messages['en']\n messages['es-419'] = messages['es']\n messages['pt-br'] = messages['pt']\n return messages[getBrowserLanguage()] || messages['en']\n }\n\n constructor(options) {\n super(options)\n this.options = options\n }\n\n render() {\n var style = Styler.getStyleFor(noOpStyle);\n this.$el.html(this.template({message:this.options.playbackNotSupportedMessage || this.getNoOpMessage()}))\n this.$el.append(style);\n this.animate()\n this.trigger(Events.PLAYBACK_READY, this.name)\n return this\n }\n\n noise() {\n var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height)\n\n try {\n var buffer32 = new Uint32Array(idata.data.buffer)\n } catch (err) {\n var buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4)\n var data=idata.data\n for(var i = 0; i < data.length; i++){\n buffer32[i]=data[i]\n }\n }\n\n var len = buffer32.length\n var run = 0\n var color = 0\n var m = Math.random() * 6 + 4\n\n for (var i = 0; i < len;) {\n if (run < 0) {\n run = m * Math.random();\n var p = Math.pow(Math.random(), 0.4);\n color = (255 * p) << 24;\n }\n run -= 1;\n buffer32[i++] = color;\n }\n this.context.putImageData(idata, 0, 0);\n }\n\n loop() {\n if (this.stop === true) {\n return;\n }\n this.noise()\n this.animationHandle = requestAnimationFrame(() => this.loop())\n }\n\n destroy() {\n if (this.animationHandle) {\n cancelAnimationFrame(this.animationHandle);\n this.stop = true;\n }\n }\n\n animate() {\n this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0]\n this.context = this.canvas.getContext('2d')\n this.loop()\n }\n}\n\nNoOp.canPlay = (source) => {\n return true\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/playbacks/no_op/no_op.js\n **/","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport Browser from 'components/browser'\n\nexport default class ClickToPausePlugin extends ContainerPlugin {\n get name() { return 'click_to_pause' }\n\n constructor(container) {\n super(container)\n }\n\n bindEvents() {\n if (!this.options.chromeless && !Browser.isMobile) {\n this.listenTo(this.container, Events.CONTAINER_CLICK, this.click)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n }\n }\n\n click() {\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()) {\n if (this.container.isPlaying()) {\n this.container.pause()\n } else {\n this.container.play()\n }\n }\n }\n\n settingsUpdate() {\n this.container.$el.removeClass('pointer-enabled')\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()) {\n this.container.$el.addClass('pointer-enabled')\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/click_to_pause/click_to_pause.js\n **/","module.exports = require('./click_to_pause')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/click_to_pause/index.js\n **/","import UICorePlugin from 'base/ui_core_plugin'\nimport template from 'base/template'\nimport Playback from 'base/playback'\nimport Styler from 'base/styler'\nimport Events from 'base/events'\nimport dvrStyle from './public/dvr_controls.scss'\nimport dvrHTML from './public/index.html'\nimport $ from 'clappr-zepto'\n\nexport default class DVRControls extends UICorePlugin {\n get template() { return template(dvrHTML) }\n get name() { return 'dvr_controls' }\n get events() {\n return {\n 'click .live-button': 'click'\n }\n }\n get attributes() {\n return {\n 'class': 'dvr-controls',\n 'data-dvr-controls': '',\n }\n }\n\n constructor(core) {\n super(core)\n this.core = core\n this.settingsUpdate()\n }\n\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate)\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.render)\n if (this.core.getCurrentContainer()) {\n this.listenToOnce(this.core.getCurrentContainer(), Events.CONTAINER_TIMEUPDATE, this.render)\n this.listenTo(this.core.getCurrentContainer(), Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n dvrChanged(dvrEnabled) {\n this.settingsUpdate()\n this.core.mediaControl.$el.addClass('live')\n if (dvrEnabled) {\n this.core.mediaControl.$el.addClass('dvr')\n this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide()\n } else {\n this.core.mediaControl.$el.removeClass('dvr')\n }\n }\n\n click() {\n var mediaControl = this.core.mediaControl\n var container = mediaControl.container\n if (!container.isPlaying()) {\n container.play()\n }\n if (mediaControl.$el.hasClass('dvr')) {\n container.seek(container.getDuration())\n }\n }\n\n settingsUpdate() {\n this.stopListening()\n if(this.shouldRender()) {\n this.render()\n this.$el.click(() => this.click())\n }\n this.bindEvents()\n }\n\n shouldRender() {\n var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls\n return useDvrControls && this.core.getPlaybackType() === Playback.LIVE\n }\n\n render() {\n this.style = this.style || Styler.getStyleFor(dvrStyle, { baseUrl: this.core.options.baseUrl })\n this.$el.html(this.template())\n this.$el.append(this.style)\n if (this.shouldRender()) {\n this.core.mediaControl.$el.addClass('live')\n this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el)\n }\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/dvr_controls/dvr_controls.js\n **/","module.exports = require('./dvr_controls')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/dvr_controls/index.js\n **/","import Events from 'base/events'\nimport CorePlugin from 'base/core_plugin'\nimport {Fullscreen} from 'base/utils'\n\nexport default class EndVideo extends CorePlugin {\n get name() { return 'end_video' }\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n var container = this.core.getCurrentContainer()\n if (container) {\n this.listenTo(container, Events.CONTAINER_ENDED, this.ended)\n this.listenTo(container, Events.CONTAINER_STOP, this.ended)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n ended() {\n if (Fullscreen.isFullscreen()) {\n this.core.toggleFullscreen()\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/end_video.js\n **/","import CorePlugin from 'base/core_plugin'\nimport Events from 'base/events'\nimport $ from 'clappr-zepto'\n\nexport default class Favicon extends CorePlugin {\n get name() { return 'favicon' }\n\n constructor(core) {\n super(core)\n this.oldIcon = $('link[rel=\"shortcut icon\"]')\n this.configure()\n }\n\n configure() {\n if (!this.core.options.changeFavicon) {\n this.disable()\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n } else {\n this.stopListening(this.core, Events.CORE_OPTIONS_CHANGE)\n this.enable()\n }\n }\n\n bindEvents() {\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n if (this.core.mediaControl.container) {\n this.containerChanged()\n }\n }\n\n containerChanged() {\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_PLAY, this.setPlayIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_PAUSE, this.setPauseIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_STOP, this.resetIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_ENDED, this.resetIcon)\n this.listenTo(this.core.mediaControl.container, Events.CONTAINER_ERROR, this.resetIcon)\n }\n\n disable() {\n super.disable()\n this.resetIcon()\n }\n\n createIcon(charCode) {\n var canvas = $(' ')\n canvas[0].width = 32\n canvas[0].height = 32\n var ctx = canvas[0].getContext('2d')\n ctx.fillStyle = '#000'\n ctx.font = '25px Player'\n ctx.fillText(String.fromCharCode(charCode), 5, 26)\n var icon = $(' ')\n icon.attr('href', canvas[0].toDataURL('image/png'))\n return icon\n }\n\n setPlayIcon() {\n if (!this.playIcon) {\n this.playIcon = this.createIcon(0xe001)\n }\n this.changeIcon(this.playIcon)\n }\n\n setPauseIcon() {\n if (!this.pauseIcon) {\n this.pauseIcon = this.createIcon(0xe002)\n }\n this.changeIcon(this.pauseIcon)\n }\n\n resetIcon() {\n if (this.currentIcon) {\n this.currentIcon.remove()\n }\n $('head').append(this.oldIcon)\n }\n\n changeIcon(icon) {\n if (icon) {\n this.oldIcon.remove()\n if (this.currentIcon) {\n this.currentIcon.remove()\n }\n this.currentIcon = icon\n $('head').append(icon)\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/favicon/favicon.js\n **/","module.exports = require('./favicon.js')\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/favicon/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin';\nimport Events from 'base/events'\n\nexport default class GoogleAnalytics extends ContainerPlugin {\n get name() { return 'google_analytics' }\n constructor(container) {\n super(container)\n if (this.container.options.gaAccount) {\n this.account = this.container.options.gaAccount\n this.trackerName = (this.container.options.gaTrackerName) ? this.container.options.gaTrackerName + \".\" : 'Clappr.'\n this.domainName = this.container.options.gaDomainName\n this.currentHDState = undefined\n this.embedScript()\n }\n }\n\n embedScript() {\n if (!window._gat) {\n var script = document.createElement('script')\n script.setAttribute(\"type\", \"text/javascript\")\n script.setAttribute(\"async\", \"async\")\n script.setAttribute(\"src\", \"//www.google-analytics.com/ga.js\")\n script.onload = () => this.addEventListeners()\n document.body.appendChild(script)\n } else {\n this.addEventListeners()\n }\n }\n\n addEventListeners() {\n if (this.container) {\n this.listenTo(this.container, Events.CONTAINER_READY, this.onReady)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, (event) => this.onVolumeChanged(event))\n this.listenTo(this.container, Events.CONTAINER_SEEK, (event) => this.onSeek(event))\n this.listenTo(this.container, Events.CONTAINER_FULL_SCREEN, this.onFullscreen)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.onHD)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR)\n }\n _gaq.push([this.trackerName + '_setAccount', this.account]);\n if (!!this.domainName)\n _gaq.push([this.trackerName + '_setDomainName', this.domainName]);\n }\n \n onReady(){\n this.push([\"Video\", \"Playback\", this.container.playback.name])\n }\n\n onPlay() {\n this.push([\"Video\", \"Play\", this.container.playback.src])\n }\n\n onStop() {\n this.push([\"Video\", \"Stop\", this.container.playback.src])\n }\n\n onEnded() {\n this.push([\"Video\", \"Ended\", this.container.playback.src])\n }\n\n onBuffering() {\n this.push([\"Video\", \"Buffering\", this.container.playback.src])\n }\n\n onBufferFull() {\n this.push([\"Video\", \"Bufferfull\", this.container.playback.src])\n }\n\n onError() {\n this.push([\"Video\", \"Error\", this.container.playback.src])\n }\n\n onHD(isHD) {\n var status = isHD ? \"ON\": \"OFF\"\n if (status !== this.currentHDState) {\n this.currentHDState = status\n this.push([\"Video\", \"HD - \" + status, this.container.playback.src])\n }\n }\n\n onPlaybackChanged(playbackState) {\n if (playbackState.type !== null) {\n this.push([\"Video\", \"Playback Type - \" + playbackState.type, this.container.playback.src])\n }\n }\n\n onDVR(dvrInUse) {\n var status = dvrInUse? \"ON\": \"OFF\"\n this.push([\"Interaction\", \"DVR - \" + status, this.container.playback.src])\n }\n\n onPause() {\n this.push([\"Video\", \"Pause\", this.container.playback.src])\n }\n\n onSeek() {\n this.push([\"Video\", \"Seek\", this.container.playback.src])\n }\n\n onVolumeChanged() {\n this.push([\"Interaction\", \"Volume\", this.container.playback.src])\n }\n\n onFullscreen() {\n this.push([\"Interaction\", \"Fullscreen\", this.container.playback.src])\n }\n\n\n push(array) {\n var res = [this.trackerName + \"_trackEvent\"].concat(array)\n _gaq.push(res)\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/google_analytics/google_analytics.js\n **/","module.exports = require('./google_analytics');\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/google_analytics/index.js\n **/","\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Kibo from 'base/kibo'\n\nvar BOLD = 'font-weight: bold; font-size: 13px;'\nvar INFO = 'color: #006600;' + BOLD\nvar DEBUG = 'color: #0000ff;' + BOLD\nvar WARN = 'color: #ff8000;' + BOLD\nvar ERROR = 'color: #ff0000;' + BOLD\n\nvar LEVEL_DEBUG = 0\nvar LEVEL_INFO = 1\nvar LEVEL_WARN = 2\nvar LEVEL_ERROR = 3\nvar LEVEL_DISABLED = 4\n\nvar COLORS = [DEBUG, INFO, WARN, ERROR, ERROR]\nvar DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled']\n\nexport default class Log {\n constructor(level = LEVEL_INFO, offLevel = LEVEL_DISABLED) {\n this.kibo = new Kibo()\n this.kibo.down(['ctrl shift d'], () => this.onOff())\n this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress']\n this.level = level\n this.offLevel = offLevel\n }\n\n debug(klass) {this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1))}\n info(klass) {this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1))}\n warn(klass) {this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1))}\n error(klass) {this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1))}\n\n onOff() {\n if (this.level === this.offLevel) {\n this.level = this.previousLevel\n } else {\n this.previousLevel = this.level\n this.level = this.offLevel\n }\n // handle instances where console.log is unavailable\n if (window.console && window.console.log) {\n console.log(\"%c[Clappr.Log] set log level to \" + DESCRIPTIONS[this.level], WARN)\n }\n }\n\n level(newLevel) {\n this.level = newLevel\n }\n\n log(klass, level, message) {\n if (this.BLACKLIST.indexOf(message[0]) >= 0) return\n if (level < this.level) return\n\n if (!message) {\n message = klass\n klass = null\n }\n var klassDescription = \"\"\n var color = COLORS[level]\n if (klass) {\n klassDescription = \"[\" + klass + \"]\"\n }\n if (window.console && window.console.log) {\n console.log.apply(console, [\"%c[\" + DESCRIPTIONS[level] + \"]\" + klassDescription, color].concat(message))\n }\n }\n}\n\nLog.LEVEL_DEBUG = LEVEL_DEBUG\nLog.LEVEL_INFO = LEVEL_INFO\nLog.LEVEL_WARN = LEVEL_WARN\nLog.LEVEL_ERROR = LEVEL_ERROR\n\nLog.getInstance = function() {\n if (this._instance === undefined) {\n this._instance = new this()\n this._instance.previousLevel = this._instance.level\n this._instance.level = this._instance.offLevel\n }\n return this._instance\n}\n\nLog.setLevel = function(level) { this.getInstance().level = level }\n\nLog.debug = function(klass) { this.getInstance().debug.apply(this.getInstance(), arguments) }\nLog.info = function(klass) { this.getInstance().info.apply(this.getInstance(), arguments) }\nLog.warn = function(klass) { this.getInstance().warn.apply(this.getInstance(), arguments) }\nLog.error = function(klass) { this.getInstance().error.apply(this.getInstance(), arguments) }\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/log/log.js\n **/","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Mediator from 'components/mediator'\nimport posterStyle from './public/poster.scss'\nimport posterHTML from './public/poster.html'\n\nimport $ from 'clappr-zepto'\n\nexport default class PosterPlugin extends UIContainerPlugin {\n get name() { return 'poster' }\n get template() { return template(posterHTML) }\n get shouldRender() { return this.container.playback.name !== 'html_img'}\n\n get attributes() {\n return {\n 'class': 'player-poster',\n 'data-poster': ''\n }\n }\n\n get events() {\n return {\n 'click': 'clicked'\n }\n }\n\n constructor(container) {\n super(container)\n this.hasStartedPlaying = false\n this.playRequested = false\n this.render()\n process.nextTick(() => this.update())\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.update)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.update)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.render)\n Mediator.on(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.updateSize, this)\n }\n\n stopListening() {\n super.stopListening()\n Mediator.off(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.updateSize, this)\n }\n\n onPlay() {\n this.hasStartedPlaying = true\n this.update()\n }\n\n onStop() {\n this.hasStartedPlaying = false\n this.playRequested = false\n this.update()\n }\n\n showPlayButton(show) {\n if (!this.options.chromeless) {\n if (show) {\n this.$playButton.show()\n this.$el.addClass(\"clickable\")\n this.updateSize()\n }\n else {\n this.$playButton.hide()\n this.$el.removeClass(\"clickable\")\n }\n }\n }\n\n clicked() {\n if (!this.options.chromeless) {\n this.playRequested = true\n this.update()\n this.container.play()\n }\n return false\n }\n\n updateSize() {\n if (!this.shouldRender) {\n return\n }\n var height = this.$el.height()\n this.$el.css({ fontSize: height })\n if (!this.playRequested && !this.hasStartedPlaying) {\n this.$playWrapper.css({ marginTop: -(this.$playWrapper.height() / 2) })\n }\n }\n\n shouldHideOnPlay() {\n // Audio broadcasts should keep the poster up; video should hide poster while playing.\n return !((this.container.playback.name == 'html5_audio') || this.options.audioOnly);\n }\n\n update() {\n if (!this.shouldRender) {\n return\n }\n if (!this.hasStartedPlaying) {\n this.container.disableMediaControl()\n this.$el.show()\n let showPlayButton = !this.playRequested && !this.container.buffering\n this.showPlayButton(showPlayButton)\n }\n else {\n this.container.enableMediaControl()\n if (this.shouldHideOnPlay()) {\n this.$el.hide()\n }\n }\n }\n\n render() {\n if (!this.shouldRender) {\n return\n }\n var style = Styler.getStyleFor(posterStyle, {baseUrl: this.options.baseUrl})\n this.$el.html(this.template())\n this.$el.append(style)\n if (this.options.poster) {\n var imgEl = $('
')\n imgEl.css({'background-image': 'url(' + this.options.poster + ')'})\n this.$el.prepend(imgEl)\n }\n this.container.$el.append(this.el)\n this.$playButton = this.$el.find('.poster-icon')\n this.$playWrapper = this.$el.find('.play-wrapper')\n if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n var buttonsColor = this.options.mediacontrol.buttons;\n this.$playButton.css('color', buttonsColor);\n }\n this.update()\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/poster/poster.js\n **/","module.exports = require('./seek_time');\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/seek_time/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport {formatTime} from 'base/utils'\n\nimport UICorePlugin from 'base/ui_core_plugin'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport Events from 'base/events'\nimport Playback from 'base/playback'\nimport seekTimeStyle from './public/seek_time.scss'\nimport seekTimeHTML from './public/seek_time.html'\n\nexport default class SeekTime extends UICorePlugin {\n get name() { return 'seek_time' }\n get template() {\n return template(seekTimeHTML)\n }\n get attributes() {\n return {\n 'class': 'seek-time',\n 'data-seek-time': ''\n }\n }\n get mediaControl() { return this.core.mediaControl }\n get mediaControlContainer() { return this.mediaControl.container }\n get isLiveStreamWithDvr() { return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === Playback.LIVE && this.mediaControlContainer.isDvrEnabled() }\n get durationShown() { return this.isLiveStreamWithDvr }\n get useActualLiveTime() { return this.actualLiveTime && this.isLiveStreamWithDvr }\n constructor(core) {\n super(core)\n this.hoveringOverSeekBar = false\n this.hoverPosition = null\n this.duration = null\n this.actualLiveTime = !!this.mediaControl.options.actualLiveTime\n if (this.actualLiveTime) {\n if (!!this.mediaControl.options.actualLiveServerTime) {\n this.actualLiveServerTimeDiff = new Date().getTime() - new Date(this.mediaControl.options.actualLiveServerTime).getTime()\n } else {\n this.actualLiveServerTimeDiff = 0\n }\n }\n }\n\n bindEvents() {\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_RENDERED, this.render)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged)\n if (this.mediaControlContainer) {\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.update)\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_TIMEUPDATE, this.updateDuration)\n }\n }\n\n onContainerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n updateDuration(timeProgress) {\n this.duration = timeProgress.total\n this.update()\n }\n\n showTime(event) {\n this.hoveringOverSeekBar = true\n this.calculateHoverPosition(event)\n this.update()\n }\n\n hideTime() {\n this.hoveringOverSeekBar = false\n this.update()\n }\n\n calculateHoverPosition(event) {\n var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left\n // proportion into the seek bar that the mouse is hovered over 0-1\n this.hoverPosition = Math.min(1, Math.max(offset/this.mediaControl.$seekBarContainer.width(), 0))\n }\n\n getSeekTime() {\n var seekTime = null\n if (this.useActualLiveTime) {\n var d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff), e = new Date(d)\n var secondsSinceMidnight = (e - d.setHours(0,0,0,0)) / 1000\n seekTime = (secondsSinceMidnight - this.duration) + (this.hoverPosition * this.duration)\n if (seekTime < 0) {\n seekTime += 86400\n }\n } else {\n seekTime = this.hoverPosition * this.duration\n }\n return {seekTime: seekTime, secondsSinceMidnight: secondsSinceMidnight}\n }\n\n update() {\n if (!this.rendered) {\n // update() is always called after a render\n return\n }\n if (!this.shouldBeVisible()) {\n this.$el.hide()\n this.$el.css('left', \"-100%\")\n }\n else {\n var seekTime = this.getSeekTime()\n var currentSeekTime = formatTime(seekTime.seekTime, this.useActualLiveTime)\n // only update dom if necessary, ie time actually changed\n if (currentSeekTime !== this.displayedSeekTime) {\n this.$seekTimeEl.text(currentSeekTime)\n this.displayedSeekTime = currentSeekTime\n }\n\n if (this.durationShown) {\n this.$durationEl.show()\n var currentDuration = formatTime(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime)\n if (currentDuration !== this.displayedDuration) {\n this.$durationEl.text(currentDuration)\n this.displayedDuration = currentDuration\n }\n }\n else {\n this.$durationEl.hide()\n }\n\n // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n this.$el.show()\n var containerWidth = this.mediaControl.$seekBarContainer.width()\n var elWidth = this.$el.width()\n var elLeftPos = this.hoverPosition * containerWidth\n elLeftPos -= elWidth / 2\n elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth))\n this.$el.css('left', elLeftPos)\n }\n }\n\n shouldBeVisible() {\n return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null\n }\n\n render() {\n this.rendered = true\n this.displayedDuration = null\n this.displayedSeekTime = null\n var style = Styler.getStyleFor(seekTimeStyle)\n this.$el.html(this.template())\n this.$el.append(style)\n this.$el.hide()\n this.mediaControl.$el.append(this.el)\n this.$seekTimeEl = this.$el.find('[data-seek-time]')\n this.$durationEl = this.$el.find('[data-duration]')\n this.$durationEl.hide()\n this.update()\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/seek_time/seek_time.js\n **/","import CorePlugin from 'base/core_plugin'\n\nimport Events from 'base/events'\nimport find from 'lodash.find'\n\nexport default class SourcesPlugin extends CorePlugin {\n get name() { return 'sources' }\n\n bindEvents() {\n this.listenToOnce(this.core, Events.CORE_CONTAINERS_CREATED, this.onContainersCreated)\n }\n\n onContainersCreated() {\n var firstValidSource = find(this.core.containers, (container) => container.playback.name !== 'no_op' || this.core.containers[0])\n if (firstValidSource) {\n this.core.containers.forEach((container) => {\n if (container !== firstValidSource) {\n container.destroy()\n }\n })\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/sources.js\n **/","module.exports = require('./spinner_three_bounce');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/spinner_three_bounce/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport spinnerHTML from './public/spinner.html'\nimport spinnerStyle from './public/spinner.scss'\n\nexport default class SpinnerThreeBouncePlugin extends UIContainerPlugin {\n get name() { return 'spinner' }\n get attributes() {\n return {\n 'data-spinner':'',\n 'class': 'spinner-three-bounce'\n }\n }\n\n constructor(container) {\n super(container)\n this.template = template(spinnerHTML);\n this.showTimeout = null\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onStop)\n this.render()\n }\n\n onBuffering() {\n this.show()\n }\n\n onBufferFull() {\n this.hide()\n }\n\n onStop() {\n this.hide()\n }\n\n show() {\n if (this.showTimeout === null) {\n this.showTimeout = setTimeout(() => this.$el.show(), 300)\n }\n }\n\n hide() {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout)\n this.showTimeout = null\n }\n this.$el.hide()\n }\n\n render() {\n this.$el.html(this.template())\n var style = Styler.getStyleFor(spinnerStyle);\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n this.$el.hide()\n if (this.container.buffering) {\n this.onBuffering()\n }\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/spinner_three_bounce/spinner_three_bounce.js\n **/","module.exports = require('./stats');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/stats/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from 'base/container_plugin'\nimport Events from 'base/events'\nimport $ from \"clappr-zepto\"\n\nexport default class StatsPlugin extends ContainerPlugin {\n get name() { return 'stats' }\n\n constructor(container) {\n super(container)\n this.setInitialAttrs()\n this.reportInterval = this.options.reportInterval || 5000\n this.state = \"IDLE\"\n }\n\n bindEvents() {\n this.listenTo(this.container.playback, Events.PLAYBACK_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_DESTROYED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STATS_ADD, this.onStatsAdd)\n this.listenTo(this.container, Events.CONTAINER_BITRATE, this.onStatsAdd)\n this.listenTo(this.container.playback, Events.PLAYBACK_STATS_ADD, this.onStatsAdd)\n }\n\n setInitialAttrs() {\n this.firstPlay = true\n this.startupTime = 0\n this.rebufferingTime = 0\n this.watchingTime = 0\n this.rebuffers = 0\n this.externalMetrics = {}\n }\n\n onPlay() {\n this.state = \"PLAYING\"\n this.watchingTimeInit = Date.now()\n if (!this.intervalId) {\n this.intervalId = setInterval(this.report.bind(this), this.reportInterval)\n }\n }\n\n onStop() {\n clearInterval(this.intervalId)\n this.intervalId = undefined\n this.state = \"STOPPED\"\n }\n\n onBuffering() {\n if (this.firstPlay) {\n this.startupTimeInit = Date.now()\n } else {\n this.rebufferingTimeInit = Date.now()\n }\n this.state = \"BUFFERING\"\n this.rebuffers++\n }\n\n onBufferFull() {\n if (this.firstPlay && !!this.startupTimeInit) {\n this.firstPlay = false\n this.startupTime = Date.now() - this.startupTimeInit\n this.watchingTimeInit = Date.now()\n } else if (!!this.rebufferingTimeInit) {\n this.rebufferingTime += this.getRebufferingTime()\n }\n this.rebufferingTimeInit = undefined\n this.state = \"PLAYING\"\n }\n\n getRebufferingTime() {\n return Date.now() - this.rebufferingTimeInit\n }\n\n getWatchingTime() {\n var totalTime = (Date.now() - this.watchingTimeInit)\n return totalTime - this.rebufferingTime\n }\n\n isRebuffering() {\n return !!this.rebufferingTimeInit\n }\n\n onStatsAdd(metric) {\n $.extend(this.externalMetrics, metric)\n }\n\n getStats() {\n var metrics = {\n startupTime: this.startupTime,\n rebuffers: this.rebuffers,\n rebufferingTime: this.isRebuffering()? this.rebufferingTime + this.getRebufferingTime(): this.rebufferingTime,\n watchingTime: this.isRebuffering()? this.getWatchingTime() - this.getRebufferingTime(): this.getWatchingTime()\n }\n $.extend(metrics, this.externalMetrics)\n return metrics\n }\n\n report() {\n this.container.statsReport(this.getStats())\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/stats/stats.js\n **/","module.exports = require('./watermark');\n\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/watermark/index.js\n **/","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from 'base/ui_container_plugin'\nimport Events from 'base/events'\nimport Styler from 'base/styler'\nimport template from 'base/template'\nimport watermarkStyle from './public/watermark.scss'\nimport watermarkHTML from './public/watermark.html'\n\nexport default class WaterMarkPlugin extends UIContainerPlugin {\n get name() { return 'watermark' }\n\n get template() { return template(watermarkHTML) }\n\n constructor(container) {\n super(container)\n this.configure()\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.configure)\n }\n\n configure() {\n this.position = this.options.position || \"bottom-right\"\n if (this.options.watermark) {\n this.imageUrl = this.options.watermark\n this.imageLink = this.options.watermarkLink\n this.render()\n } else {\n this.$el.remove()\n }\n }\n\n onPlay() {\n if (!this.hidden)\n this.$el.show()\n }\n\n onStop() {\n this.$el.hide()\n }\n\n render() {\n this.$el.hide()\n var templateOptions = {position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink}\n this.$el.html(this.template(templateOptions))\n var style = Styler.getStyleFor(watermarkStyle)\n this.container.$el.append(style)\n this.container.$el.append(this.$el)\n return this\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/plugins/watermark/watermark.js\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}[data-player]:not(.nocursor) .container[data-container].pointer-enabled{cursor:pointer}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/container/public/style.scss\n ** module id = 134\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:lucida grande,tahoma,verdana,arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/core/public/style.scss\n ** module id = 135\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Player;src:url(\" + require(\"./Player-Regular.eot\") + \");src:url(\" + require(\"./Player-Regular.eot\") + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + require(\"./Player-Regular.ttf\") + \") format(\\\"truetype\\\"),url(\" + require(\"./Player-Regular.svg\") + \"#player) format(\\\"svg\\\")}.media-control-notransition{-webkit-transition:none !important false;transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + require(\"./closed-hand.cur\") + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + require(\"./closed-hand.cur\") + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:-owg-linear-gradient(transparent,rgba(0,0,0,.9));background:-webkit-linear-gradient(transparent,rgba(0,0,0,.9));-pie-background:-pie-linear-gradient(transparent,rgba(0,0,0,.9));background:linear-gradient(transparent,rgba(0,0,0,.9));-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{font-family:Player;font-weight:400;font-style:normal;font-size:26px;line-height:32px;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;vertical-align:middle;pointer-events:auto;-webkit-transition:bottom .4s ease-out;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause]:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]:before{content:\\\"\\\\E006\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen].shrink:before{content:\\\"\\\\E007\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{cursor:default;float:right;background-color:transparent;border:0;height:100%;opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]:before{content:\\\"\\\\E008\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].playing:before{content:\\\"\\\\E002\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause].paused:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left;height:100%;font-size:20px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].playing:before{content:\\\"\\\\E003\\\"}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop].stopped:before{content:\\\"\\\\E001\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin-left:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin:0 3px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;-webkit-transition:all .1s ease-out;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:16px;height:32px;margin-right:6px;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:before{content:\\\"\\\\E004\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted{opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:hover{opacity:.7}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted:before{content:\\\"\\\\E005\\\"}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;top:6px;width:42px;height:18px;padding:3px 0;overflow:hidden;-webkit-transition:width .2s ease-out;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;-webkit-transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:nth-of-type(1){padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{height:12px;top:9px;padding:0;width:0}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/media_control/public/media-control.scss\n ** module id = 136\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".clappr-flash-playback[data-flash-playback]{display:block;position:absolute;top:0;left:0;height:100%;width:100%;pointer-events:none}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/base_flash_playback/public/flash.scss\n ** module id = 137\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html5_video/public/style.scss\n ** module id = 138\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html_img/public/style.scss\n ** module id = 139\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-no-op]{z-index:1000;position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;top:40%;left:0;right:0;color:#fff}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/no_op/public/style.scss\n ** module id = 140\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + require(\"./Roboto.ttf\") + \") format(\\\"truetype\\\")}.dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;-webkit-transition:all .1s ease;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/dvr_controls.scss\n ** module id = 141\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Player;src:url(\" + require(\"../../../components/media_control/public/Player-Regular.eot\") + \");src:url(\" + require(\"../../../components/media_control/public/Player-Regular.eot\") + \"?#iefix) format(\\\"embedded-opentype\\\"),url(\" + require(\"../../../components/media_control/public/Player-Regular.ttf\") + \") format(\\\"truetype\\\"),url(\" + require(\"../../../components/media_control/public/Player-Regular.svg\") + \"#player) format(\\\"svg\\\")}.player-poster[data-poster]{position:absolute;height:100%;width:100%;z-index:998;top:0;left:0}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster] .poster-background[data-poster]{width:100%;height:100%;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster] .play-wrapper[data-poster]{position:absolute;width:100%;height:25%;line-height:100%;font-size:25%;top:50%;text-align:center}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]{font-family:Player;font-weight:400;font-style:normal;line-height:1;letter-spacing:0;speak:none;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity text-shadow .1s;-webkit-transition-delay:ease;transition:opacity text-shadow .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster].play[data-poster]:before{content:\\\"\\\\E001\\\"}.player-poster[data-poster] .play-wrapper[data-poster] .poster-icon[data-poster]:hover{opacity:1;text-shadow:hsla(0,0%,100%,.8) 0 0 15px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/poster/public/poster.scss\n ** module id = 142\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;width:auto;height:20px;line-height:20px;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] span[data-seek-time]{position:relative;color:#fff;font-size:10px;padding-left:7px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]{position:relative;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px}.seek-time[data-seek-time] span[data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/seek_time/public/seek_time.scss\n ** module id = 143\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;top:47%;left:0;right:0;margin-left:auto;margin-right:auto}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/spinner_three_bounce/public/spinner.scss\n ** module id = 144\n ** module chunks = 0\n **/","exports = module.exports = require(\"./../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/watermark/public/watermark.scss\n ** module id = 145\n ** module chunks = 0\n **/","module.exports = \"
\\n\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/media_control/public/media-control.html\n ** module id = 146\n ** module chunks = 0\n **/","module.exports = \" ?inline=1\\\">\\n \\n \\n \\n \\n \\n \\\">\\n \\n &callback=<%= callbackName %>\\\">\\n\\\"\\n type=\\\"application/x-shockwave-flash\\\"\\n disabled=\\\"disabled\\\"\\n tabindex=\\\"-1\\\"\\n enablecontextmenu=\\\"false\\\"\\n allowScriptAccess=\\\"always\\\"\\n quality=\\\"autohigh\\\"\\n pluginspage=\\\"http://www.macromedia.com/go/getflashplayer\\\"\\n wmode=\\\"<%= wmode %>\\\"\\n swliveconnect=\\\"true\\\"\\n allowfullscreen=\\\"false\\\"\\n bgcolor=\\\"#000000\\\"\\n FlashVars=\\\"playbackId=<%= playbackId %>&callback=<%= callbackName %>\\\"\\n src=\\\"<%= swfPath %>\\\"\\n width=\\\"100%\\\"\\n height=\\\"100%\\\">\\n \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/base_flash_playback/public/flash.html\n ** module id = 147\n ** module chunks = 0\n **/","module.exports = \"\\\" type=\\\"<%=type%>\\\">\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/html5_video/public/index.html\n ** module id = 148\n ** module chunks = 0\n **/","module.exports = \" \\n<%=message%>
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/no_op/public/error.html\n ** module id = 149\n ** module chunks = 0\n **/","module.exports = \"
LIVE
\\nBACK TO LIVE \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/index.html\n ** module id = 150\n ** module chunks = 0\n **/","module.exports = \"\\n \\n
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/poster/public/poster.html\n ** module id = 151\n ** module chunks = 0\n **/","module.exports = \" \\n \\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/seek_time/public/seek_time.html\n ** module id = 152\n ** module chunks = 0\n **/","module.exports = \"
\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/spinner_three_bounce/public/spinner.html\n ** module id = 153\n ** module chunks = 0\n **/","module.exports = \"\\n\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/watermark/public/watermark.html\n ** module id = 154\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"4b76590b32dab62bc95c1b7951efae78.swf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/flash/public/Player.swf\n ** module id = 155\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"836868f5c501cad9daabdcc31886bd7c.swf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/playbacks/flashls/public/HLSPlayer.swf\n ** module id = 156\n ** module chunks = 0\n **/","module.exports = __webpack_public_path__ + \"38861cba61c66739c1452c3a71e39852.ttf\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/plugins/dvr_controls/public/Roboto.ttf\n ** module id = 157\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index d073e4ccd..9bf28f1a8 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -1,6 +1,6 @@
{
"name": "clappr",
- "version": "0.2.33",
+ "version": "0.2.34",
"dependencies": {
"abbrev": {
"version": "1.0.7",
diff --git a/package.json b/package.json
index f36c3a264..48075a001 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "clappr",
- "version": "0.2.33",
+ "version": "0.2.34",
"description": "An extensible media player for the web",
"main": "./src/main.js",
"browser": "./dist/clappr.min.js",
diff --git a/yuidoc.json b/yuidoc.json
index dcdf96446..f0998c940 100644
--- a/yuidoc.json
+++ b/yuidoc.json
@@ -1,7 +1,7 @@
{
"name": "Clappr",
"description": "An extensible media player for the web",
- "version": "0.2.33",
+ "version": "0.2.34",
"url": "https://github.com/clappr/clappr",
"logo": "https://cloud.githubusercontent.com/assets/244265/6373134/a845eb50-bce7-11e4-80f2-592ba29972ab.png",
"options": {