From fd3c1b9d2ec94953baa3a519f82198e6b333729a Mon Sep 17 00:00:00 2001 From: norlin Date: Wed, 9 Dec 2015 14:41:00 +0300 Subject: [PATCH] Update vjs build fix filenames add separate build packages update hola-skin --- build/grunt.js | 27 ++++++++++-------- dist/alt/video.novtt.hls.min.js.map | 1 - dist/alt/video.novtt.js | 2 +- dist/alt/video.novtt.min.js | 2 +- dist/alt/video.novtt.osmf.min.js.map | 1 - ...ideo.novtt.hls.js => videojs.novtt.hls.js} | 2 +- ...tt.hls.min.js => videojs.novtt.hls.min.js} | 4 +-- dist/alt/videojs.novtt.hls.min.js.map | 1 + ...eo.novtt.osmf.js => videojs.novtt.osmf.js} | 2 +- ....osmf.min.js => videojs.novtt.osmf.min.js} | 4 +-- dist/alt/videojs.novtt.osmf.min.js.map | 1 + dist/examples/hls-embed/index.html | 2 +- dist/examples/osmf-embed/index.html | 2 +- dist/examples/simple-embed/index.html | 6 +--- dist/video-js-5.0.2.zip | Bin 11480437 -> 0 bytes dist/video-js.css | 3 ++ dist/video-js.min.css | 2 +- dist/video.hls.min.js.map | 1 - dist/video.js | 2 +- dist/video.min.js | 2 +- dist/video.osmf.min.js.map | 1 - dist/{video.hls.js => videojs.hls.js} | 2 +- dist/{video.hls.min.js => videojs.hls.min.js} | 4 +-- dist/videojs.hls.min.js.map | 1 + dist/{video.osmf.js => videojs.osmf.js} | 2 +- ...{video.osmf.min.js => videojs.osmf.min.js} | 4 +-- dist/videojs.osmf.min.js.map | 1 + package.json | 2 +- 28 files changed, 43 insertions(+), 41 deletions(-) delete mode 100644 dist/alt/video.novtt.hls.min.js.map delete mode 100644 dist/alt/video.novtt.osmf.min.js.map rename dist/alt/{video.novtt.hls.js => videojs.novtt.hls.js} (99%) rename dist/alt/{video.novtt.hls.min.js => videojs.novtt.hls.min.js} (99%) create mode 100644 dist/alt/videojs.novtt.hls.min.js.map rename dist/alt/{video.novtt.osmf.js => videojs.novtt.osmf.js} (99%) rename dist/alt/{video.novtt.osmf.min.js => videojs.novtt.osmf.min.js} (99%) create mode 100644 dist/alt/videojs.novtt.osmf.min.js.map delete mode 100644 dist/video-js-5.0.2.zip delete mode 100644 dist/video.hls.min.js.map delete mode 100644 dist/video.osmf.min.js.map rename dist/{video.hls.js => videojs.hls.js} (99%) rename dist/{video.hls.min.js => videojs.hls.min.js} (99%) create mode 100644 dist/videojs.hls.min.js.map rename dist/{video.osmf.js => videojs.osmf.js} (99%) rename dist/{video.osmf.min.js => videojs.osmf.min.js} (99%) create mode 100644 dist/videojs.osmf.min.js.map diff --git a/build/grunt.js b/build/grunt.js index 259d1bd8a8..f48012cf71 100644 --- a/build/grunt.js +++ b/build/grunt.js @@ -188,7 +188,7 @@ module.exports = function(grunt) { }, // compression: 'DEFLATE', src: ['dist/**/*'], - dest: 'dist/video-js-full-' + version.full + '.zip' + dest: 'dist/videojs-full-' + version.full + '.zip' }, basic: { router: function (filepath) { @@ -203,7 +203,7 @@ module.exports = function(grunt) { 'dist/video-js.min.css', 'dist/video-js.swf', ], - dest: 'dist/video-js-' + version.full + '.zip' + dest: 'dist/videojs-' + version.full + '.zip' }, hls: { router: function (filepath) { @@ -213,12 +213,12 @@ module.exports = function(grunt) { src: [ 'dist/videojs.hls.js', 'dist/videojs.hls.min.js', - 'dist/videojs.hls.js.map', + 'dist/videojs.hls.min.js.map', 'dist/video-js.css', 'dist/video-js.min.css', 'dist/video-js.swf', ], - dest: 'dist/video-js-hls-' + version.full + '.zip' + dest: 'dist/videojs-hls-' + version.full + '.zip' }, osmf: { router: function (filepath) { @@ -228,13 +228,13 @@ module.exports = function(grunt) { src: [ 'dist/videojs.osmf.js', 'dist/videojs.osmf.min.js', - 'dist/videojs.osmf.js.map', + 'dist/videojs.osmf.min.js.map', 'dist/video-js.css', 'dist/video-js.min.css', 'dist/video-js.swf', - 'dist/video-js-osmf.swf', + 'dist/videojs-osmf.swf', ], - dest: 'dist/video-js-osmf-' + version.full + '.zip' + dest: 'dist/videojs-osmf-' + version.full + '.zip' }, }, version: { @@ -287,10 +287,10 @@ module.exports = function(grunt) { }, files: { src: [ // Files that you want to attach to Release - `dist/video-js-full-${version.full}.zip`, - `dist/video-js-${version.full}.zip`, - `dist/video-js-hls-${version.full}.zip`, - `dist/video-js-osmf-${version.full}.zip`, + `dist/videojs-full-${version.full}.zip`, + `dist/videojs-${version.full}.zip`, + `dist/videojs-hls-${version.full}.zip`, + `dist/videojs-osmf-${version.full}.zip`, ] } }, @@ -523,7 +523,10 @@ module.exports = function(grunt) { 'build', 'copy:dist', 'copy:examples', - 'zip:dist' + 'zip:dist', + 'zip:basic', + 'zip:hls', + 'zip:osmf', ]); // Default task - build and test diff --git a/dist/alt/video.novtt.hls.min.js.map b/dist/alt/video.novtt.hls.min.js.map deleted file mode 100644 index d50f16395a..0000000000 --- a/dist/alt/video.novtt.hls.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"video.novtt.hls.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/date/now.js","node_modules/lodash-compat/function/debounce.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/function/throttle.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/hasSymbols.js","node_modules/object.assign/implementation.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/function-bind/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/object.assign/polyfill.js","node_modules/object.assign/shim.js","node_modules/safe-json-parse/tuple.js","node_modules/tsml/tsml.js","node_modules/xhr/index.js","node_modules/xhr/node_modules/once/once.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js","node_modules/xhr/node_modules/parse-headers/parse-headers.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/mouse-time-display.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extend.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"getNative","nativeNow","Date","now","getTime","../internal/getNative",5,"debounce","func","wait","options","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","undefined","complete","isCalled","id","result","apply","thisArg","args","delayed","remaining","stamp","setTimeout","maxDelayed","trailing","debounced","arguments","leading","maxWait","leadingCall","TypeError","FUNC_ERROR_TEXT","isObject","nativeMax","Math","max","../date/now","../lang/isObject",6,"restParam","start","index","rest","Array","otherArgs",7,"throttle","./debounce",8,"arrayCopy","source","array",9,"arrayEach","iteratee",10,"baseCopy","props","object","key",11,"createBaseFor","baseFor","./createBaseFor",12,"baseForIn","keysIn","../object/keysIn","./baseFor",13,"baseMerge","customizer","stackA","stackB","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","isCommon","../lang/isArray","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",14,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",15,"toObject","baseProperty","./toObject",16,"bindCallback","argCount","identity","collection","accumulator","other","../utility/identity",17,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",18,"fromRight","keysFunc","iterable",19,"getLength","./baseProperty",20,"isNative","../lang/isNative",21,"isLength","./getLength","./isLength",22,"isHostObject","Object","toString",23,"reIsUint","test","MAX_SAFE_INTEGER","isIndex",24,"type","./isIndex",25,26,27,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",28,"support","unindexedChars","charAt","../support",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","objToString","nativeIsArray","../internal/isLength",31,"isFunction","funcTag","./isObject",32,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",33,34,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",35,"stringTag",36,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","enumPrototypes","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"arrayProto","splice","x","0","y","spliceObjects",42,43,"Symbol","getOwnPropertySymbols","iterator","obj","sym","symVal","getOwnPropertyNames","syms","descriptor","getOwnPropertyDescriptor","enumerable","object-keys",44,"bind","canBeObject","hasSymbols","propIsEnumerable","target","objTarget","./hasSymbols","function-bind",45,"defineProperties","implementation","getPolyfill","shim","./implementation","./polyfill","./shim","define-properties",46,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",47,"hasOwn","ctx","k",48,"ERROR_MESSAGE","slice","funcType","that","binder","bound","boundLength","boundArgs","join","Empty",49,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$console","$frame","$frameElement","$frames","$parent","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",50,"str","callee",51,"lacksProperEnumerationOrder","assign","letters","split","actual","assignHasPendingExceptions","preventExtensions","thrower",52,"polyfill",53,"SafeParseTuple","reviver","json","error","err",54,"clean","sa",55,"isEmpty","createXHR","callback","readystatechange","xhr","readyState","loadFunc","getBody","body","response","responseType","responseText","responseXML","isJson","JSON","parse","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","headers","url","uri","rawRequest","getAllResponseHeaders","parseHeaders","once","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","onload","onerror","onprogress","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","beforeSend","send","noop","global/window","parse-headers",56,"called",57,"forEach","list","context","forEachArray","forEachString","forEachObject","len","string","is-function",58,"alert","confirm","prompt",59,"trim","right",60,"arg","row","indexOf","toLowerCase","Constructor","instance","player_","play","__esModule","newObj","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_interopRequireDefault","_component","Dom","_interopRequireWildcard","_utilsDomJs","Button","_Component","player","_classCallCheck","createEl","attributes","_objectAssign2","className","buildCSSClass","tabIndex","role","el","controlTextEl_","handleClick","default","_globalWindow2","_globalWindow","Fn","_utilsFnJs","Component","ready","options_","_utilsMergeOptionsJs2","id_","Guid","newGUID","el_","childIndex_","initChildren","dispose","trigger","bubbles","children_","childNameIndex_","off","_utilsLogJs2","warn","tagName","properties","localize","languages","language","primaryCode","addChild","child","component","componentName","childFound","parentOptions","_this","opts","children","_name","handleAdd","_this2","first","guid","cleanRemover","Events","on","second","third","nodeName","one","_this3","_arguments","newFunc","isReady_","triggerReady","readyQueue","readyQueue_","dimension","widthOrHeight","num","skipListeners","style","pxIndex","touchStart","touchTimeThreshold","couldBeTap","event","touches","firstTouch","xdiff","pageX","touchDistance","sqrt","ydiff","tapMovementThreshold","noTap","touchTime","preventDefault","clearInterval","touchHolding","touchEnd","report","disposeFn","intervalId","setInterval","interval","getComponent","components_","extend","subObj","_name2","ControlBar","exitFullscreen","requestFullscreen","LiveDisplay","contentEl_","aria-live","appendChild","updateShowing","_button2","_button","MuteToggle","_Button","update","tech_","addClass","vol","volume","level","toMute","muted","localizedMute","controlText","removeElClass","addElClass","PlayToggle","removeClass","_playbackRateMenuItemJs2","_playbackRateMenuItemJs","PlaybackRateMenuButton","_MenuButton","labelEl_","createMenu","rates","playbackRates","currentRate","playbackRate","newRate","playbackRateSupported","PlaybackRateMenuItem","label","rate","parseFloat","selected","LoadProgressBar","buffered","duration","percent","time","end","width","percentify","bufferedEnd","part","left","_componentJs2","_componentJs","MouseTimeDisplay","handleMouseMove","position","findElPosition","parentNode","newTime","_utilsFormatTimeJs2","calculateDistance","PlayProgressBar","updateDataAttr","scrubbing","getCache","currentTime","_loadProgressBarJs","SeekBar","_Slider","stepBack","CustomControlSpacer","_Spacer","CaptionSettingsMenuItem","_TextTrackMenuItem","kind","CaptionsButton","_TextTrackButton","threshold","createItems","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","_menuMenuJs2","_menuMenuJs","ChaptersButton","items","tracks","textTracks","track","kind_","cues","chaptersTrack","menu","contentEl","cue","mi","_menuMenuItemJs2","_menuMenuItemJs","ChaptersTrackMenuItem","_MenuItem","OffTextTrackMenuItem","handleTracksChange","SubtitlesButton","_menuMenuButtonJs2","_menuMenuButtonJs","TextTrackButton","hide","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","TextTrackMenuItem","onchange","Event","_globalDocument2","createEvent","CurrentTimeDisplay","innerHTML","updateContent","localizedText","DurationDisplay","formattedTime","RemainingTimeDisplay","_sliderSliderJs2","_sliderSliderJs","VolumeBar","toFixed","setAttribute","VolumeControl","VolumeMenuButton","updateVisibility","inline","vertical","volumeUpdate","orientationClass","contentElType","_muteToggleJs2","ErrorDisplay","message","_utilsEventsJs","EventTarget","allowedEvents_","ael","addEventListener","extendFn","subClassMethods","methods","init","_utilsLog2","FullscreenApi","apiMap","specApi","browserApi","_objectAssign","MediaError","errorTypes","_menuJs2","_menuJs","MenuButton","title","unlockShowing","handleKeyPress","which","buttonPressed_","unpressButton","pressButton","MenuItem","_selected","append","_globalDocument","_utilsLogJs","_utilsToTitleCaseJs2","_utilsToTitleCaseJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_errorDisplayJs","reportTouchActivity","languagesToLower","poster_","poster","controls","scrubbing_","playerOptionsCopy","plugins","isAudio","Player","players","styleEl_","removeChild","attrs","getElAttributes","attr","stylesheet","createStyleElement","defaultsStyleEl","querySelector","fluid","aspectRatio","initNetworkState_","networkState","privDimension","_dimension","parsedVal","isNaN","bool","fluid_","ratio","updateStyleEl_","aspectRatio_","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","loadTech_","techName","unloadTech_","disposeMediaElement","techName_","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","vtt.js","src","cache_","startTime","techComponent","handleTechReady_","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechLoadStart_","handleTechWaiting_","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechEnded_","handleTechSeeking_","handleTechSeeked_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechProgress_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechSuspend_","handleTechAbort_","handleTechEmptied_","handleTechStalled_","handleTechLoadedData_","handleTechRateChange_","handleTechVolumeChange_","handleTechTextTrackChange_","usingNativeControls","techGet_","insertElFirst","addTechControlsListeners_","removeTechControlsListeners_","paused","hasStarted","_hasStarted","hasStarted_","handleTechClick_","button","techCall_","isScrubbing","seconds","percentAsDecimal","min","fsApi","fullscreenchange","documentFullscreenChange","isFullscreen","fullscreenElement","supportsFullScreen","_fullscreenApiJs2","fullWindowOnEscKey","exitFullWindow","documentElement","overflow","docOrigOverflow","selectSource","techOrder","tech","isSupported","b","canPlaySource","sourceList_","currentTech","load","sourceTech","controls_","error_","userActive","userActive_","stopPropagation","lastMoveX","lastMoveY","handleActivity","reportUserActivity","screenX","screenY","mouseInProgress","handleMouseUp","inactivityTimeout","userActivity_","tagOptions","dataSetup","_safeParseTuple","_safeJsonParseTuple2","hasChildNodes","childNodes","childName","baseOptions","notSupportedMessage","handleError_","flexNotSupported_","createElement","_buttonJs2","_buttonJs","PosterImage","setSrc","fallbackImg_","backgroundImage","autoSetup","vids","getElementsByTagName","audios","mediaEls","mediaEl","getAttribute","autoSetupTimeout","_windowLoaded","vjs","Slider","bar","getChild","barName","handleMouseDown","blockTextSelection","unblockTextSelection","progress","getPercent","percentage","vertical_","../component.js","../utils/dom.js","global/document","object.assign",108,"FlashRtmpDecorator","Flash","rtmp/mp4","rtmp/flv","streamFromParts","connection","stream","parts","streamBegin","connEnd","substring","isStreamingType","srcType","streamingFormats","isStreamingSrc","rtmpSourceHandler","handleSource","srcParts","_createSetter","attrUpper","toUpperCase","_api","val","_createGetter","vjs_getProperty","_tech2","_tech","_utilsUrlJs","setSource","_Tech","swf","objId","flashVars","readyFunction","errorEventProxyFunction","autoplay","params","wmode","bgcolor","Url","getAbsoluteURL","vjs_src","setCurrentTime","seekable","enterFullScreen","_readWrite","_readOnly","nativeSourceHandler","canHandleSource","guessMimeType","ext","getFileExtension","formats","video/flv","onReady","currSwf","getEl","checkReady","eventName","swfID","version","ActiveXObject","GetVariable","match","navigator","description","getEmbedCode","objTag","flashVarsString","paramsString","movie","flashvars","allowNetworking","_techJs2","_techJs","Html5","currentSrc","nodes","node","nodesLength","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","tt","handleTextTrackChange_","handleTextTrackAdd_","emulatedTt","clone","cloneNode","insertBefore","tagAttributes","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","setLoadstartFired","loadstartFired","triggerLoadstart","eventsToTrigger","handleTextTrackChange","srcElement","webkitEnterFullScreen","video","HAVE_METADATA","addRemoteTextTrack","removeTrack_","querySelectorAll","canPlayType","TEST_VID","supportsNativeTextTracks","supportsTextTracks","IS_FIREFOX","canControlPlaybackRate","patchCanPlayType","ANDROID_VERSION","mpegurlRE","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","removeAttribute","MediaLoader","playerOptions","_tracksTextTrack2","_tracksTextTrack","Tech","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","trackProgress","stopTrackingProgress","numBufferedPercent","bufferedPercent","bufferedPercent_","manualProgress","manualProgressOff","_mediaErrorJs2","textTrackListChanges","emulateTextTracks","script","updateDisplay","mode","setPoster","createTrackHelper","featuresVolumeControl","featuresFullscreenResize","handlers","sourceHandlers","selectSourceHandler","can","srcObj","originalSeekable","sh","disposeSourceHandler","sourceHandler_","TextTrackCueList","IS_IE8","prop","setCues_","get","oldLength","length_","defineProp","getCueById","rule","darkGray","lightGray","fontMap","monospace","sansSerif","serif","TextTrackDisplay","toggleDisplay","clearDisplay","updateForTrack","_i","cueDiv","displayState","overrides","color","firstChild","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","height","top","bottom","fontFamily","fontVariant","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","trackEl","addedTrack","addCue","_eventTarget2","_eventTarget","TextTrackList","tracks_","change","removetrack","_event","rtrack","getTrackById","selectedOption","selectedOptions","selectedIndex","setSelectedOption","option","TextTrackSettings","persistTextTrackSettings","saveSettings","getValues","textEdge","getSelectedOptionValue","fgColor","bgColor","bgOpacity","setValues","values","restoreSettings","ttDisplay","registerComponent","_textTrackCueList2","_textTrackCueList","_utilsGuidJs","TextTrack","TextTrackEnum","TextTrackMode","cues_","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","loadTrack","cuechange","removeCue","removed","parseCues","srcContent","parser","crossOrigin","isCrossOrigin","_xhr2","responseBody","O","fromIndex","abs","searchElement","IS_IPHONE","IS_IPAD","USER_AGENT","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","major","IS_NATIVE_ANDROID","bufferedDuration","_timeRangesJs","createTimeRange","_logJs2","_logJs","defaultBehaviors","messages","Proxy","_ret","handler","propName","_tsml2","_templateObject","getElData","elIdAttr","hasElData","removeElData","elData","element","classToRemove","hasElClass","attrName","attrValue","attrVal","knownBooleans","box","getBoundingClientRect","docEl","scrollLeft","pageXOffset","clientLeft","clientTop","scrollTop","pageYOffset","getPointerPosition","boxW","offsetWidth","boxH","offsetHeight","boxY","pageY","changedTouches","elem","_handleMultipleEvents","dispatcher","fixEvent","handlersCopy","m","isImmediatePropagationStopped","hash","removeType","_cleanUpEvents","elemData","parent","isPropagationStopped","defaultPrevented","targetData","disabled","old","relatedTarget","fromElement","toElement","returnValue","cancelBubble","returnTrue","returnFalse","stopImmediatePropagation","doc","clientY","detachEvent",125,"uid","h","floor","gm","guide","argsArray","console","log","history","unshift","_logType","mergeOptions",131,"createTimeRangesObj","ranges","getRange","rangeIndex","fnName","rangeCheck","createTimeRanges","href","addToBody","host","protocol","div","details","path","splitPathRe","pathParts","exec","urlInfo","parseUrl","_pluginsJs2","_pluginsJs","_tracksTextTrackJs","_utilsFormatTimeJs","_utilsCreateDeprecationProxyJs","_xhr","_techFlashJs","_techHtml5Js","getPlayers","_player2","_lodashCompatObjectMerge2","_merge"],"mappings":"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AAT5F,EAAG5K,EAAAo1B,yBACH5yB,EAAOxC,EAAAyR,OACE,kBAATvR,EAAGC,EAAAC,OACM,sFAGA/d,EAAA,kFAGH2d,EAAiBq1B,kBACjBC,0BAMhBC,GAFAv1B,EAAsBw1B,GAEtBnzC,EAAA,4KA0BE,IAAAjB,GAAO,QAAYA,GAAQ8C,EAAAV,EAAAie,GACzB,GAAA5P,EAIF,IAAY,gBAAR3N,GAAqB,CAQrB,GALW,IAAbA,EAAI+a,QAAS,OACX/a,EAAAA,EAAAuS,MAAA,IAIArV,EAAQq0C,aAAavxC,GAW1B,MARGV,6FAIAie,GACDrgB,EAAAq0C,aAAAvxC,GAAAud,MAAAA,GAGIrgB,EAAAq0C,aAAAvxC,wBAYP,KAAA2N,IAAAA,EAAAsS,kFAOA,OAAKtS,GAAa,QAAK,GAAE6jC,GAAK,WAAY7jC,EAAArO,EAAAie,gEAe5CuD,EAAM+N,EAAAC,mBAA6B,slBA6FnC5xB,EAAQ6qC,kBAAkBlsB,EAAA,WAAAksB,qLAwK1B,+BAAQ0J,EAAG,WAAOv0C,EAAAoC,QAAAqf,WAAA+yB,KAAAA,EAAA5zC,GAAAua,EAAAq5B,IAAA5zC,4RAyJjB,kBAAAnB,IAAAA,EAAA;ArItgBD;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
\n *
Button
\n *
\n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
\n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
myButton
\n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
/
'\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/alt/video.novtt.js b/dist/alt/video.novtt.js index 5eb7af9667..bcbae3bbeb 100644 --- a/dist/alt/video.novtt.js +++ b/dist/alt/video.novtt.js @@ -18024,7 +18024,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/alt/video.novtt.min.js b/dist/alt/video.novtt.min.js index f80bb2a6b4..e2f264a4b1 100644 --- a/dist/alt/video.novtt.min.js +++ b/dist/alt/video.novtt.min.js @@ -13,5 +13,5 @@ if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}fu this.off(m["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=k.getPointerPosition(this.el_,a);return this.vertical()?b.y:b.x},b.prototype.handleFocus=function(){this.on(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(i["default"]);i["default"].registerComponent("Slider",p),c["default"]=p,b.exports=c["default"]},{"../component.js":63,"../utils/dom.js":123,"global/document":1,"object.assign":45}],108:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],109:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=a.charAt(0).toUpperCase()+a.slice(1);A["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function i(a){A[a]=function(){return this.el_.vjs_getProperty(a)}}c.__esModule=!0;for(var j=a("./tech"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/time-ranges.js"),q=a("./flash-rtmp"),r=e(q),s=a("../component"),t=e(s),u=a("global/window"),v=e(u),w=a("object.assign"),x=e(w),y=v["default"].navigator,z=function(a){function b(c,d){f(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),v["default"].videojs=v["default"].videojs||{},v["default"].videojs.Flash=v["default"].videojs.Flash||{},v["default"].videojs.Flash.onReady=b.onReady,v["default"].videojs.Flash.onEvent=b.onEvent,v["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return g(b,a),b.prototype.createEl=function(){var a=this.options_;a.swf||(a.swf="//vjs.zencdn.net/swf/5.0.0-rc1/video-js.swf");var c=a.techId,d=x["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=x["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=x["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.ended()&&this.setCurrentTime(0),this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){return void 0===a?this.currentSrc():this.setSrc(a)},b.prototype.setSrc=function(a){if(a=o.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},k["default"].withSourceHandlers(z),z.nativeSourceHandler={},z.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=o.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in z.formats?"maybe":""},z.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},z.nativeSourceHandler.dispose=function(){},z.registerSourceHandler(z.nativeSourceHandler),z.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},z.onReady=function(a){var b=m.getEl(a),c=b&&b.tech;c&&c.el()&&z.checkReady(c)},z.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){z.checkReady(a)},50))},z.onEvent=function(a,b){var c=m.getEl(a).tech;c.trigger(b)},z.onError=function(a,b){var c=m.getEl(a).tech;return"srcnotfound"===b?c.error(4):void c.error("FLASH: "+b)},z.version=function(){var a="0,0,0";try{a=new v["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{y.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(y.plugins["Shockwave Flash 2.0"]||y.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},z.embed=function(a,b,c,d){var e=z.getEmbedCode(a,b,c,d),f=m.createEl("div",{innerHTML:e}).childNodes[0];return f},z.getEmbedCode=function(a,b,c,d){var e=''}),d=x["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=a+'="'+d[a]+'" '}),""+e+h+">"+g+""},r["default"](z),t["default"].registerComponent("Flash",z),c["default"]=z,b.exports=c["default"]},{"../component":63,"../utils/dom.js":123,"../utils/time-ranges.js":131,"../utils/url.js":133,"./flash-rtmp":108,"./tech":112,"global/window":2,"object.assign":45}],110:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./tech.js"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/fn.js"),q=d(p),r=a("../utils/log.js"),s=e(r),t=a("../utils/browser.js"),u=d(t),v=a("global/document"),w=e(v),x=a("global/window"),y=e(x),z=a("object.assign"),A=e(z),B=a("../utils/merge-options.js"),C=e(B),D=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=c.source;if(e&&(this.el_.currentSrc!==e.src||c.tag&&3===c.tag.initNetworkState_)?this.setSource(e):this.handleLateInit_(this.el_),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),m.setElAttributes(a,i)}return a},b.prototype.handleLateInit_=function(a){var b=this;if(0!==a.networkState&&3!==a.networkState){if(0===a.readyState){var c=function(){var a=!1,c=function(){a=!0};b.on("loadstart",c);var d=function(){a||this.trigger("loadstart")};return b.on("loadedmetadata",d),b.ready(function(){this.off("loadstart",c),this.off("loadedmetadata",d),a||this.trigger("loadstart")}),{v:void 0}}();if("object"==typeof c)return c.v}var d=["loadstart"];d.push("loadedmetadata"),a.readyState>=2&&d.push("loadeddata"),a.readyState>=3&&d.push("canplay"),a.readyState>=4&&d.push("canplaythrough"),this.ready(function(){d.forEach(function(a){this.trigger(a)},this)})}},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){s["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=y["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){return void 0===a?this.el_.src:void this.setSrc(a)},b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=w["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(i["default"]);D.TEST_VID=w["default"].createElement("video");var E=w["default"].createElement("track");E.kind="captions",E.srclang="en",E.label="English",D.TEST_VID.appendChild(E),D.isSupported=function(){try{D.TEST_VID.volume=.5}catch(a){return!1}return!!D.TEST_VID.canPlayType},i["default"].withSourceHandlers(D),D.nativeSourceHandler={},D.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return D.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=o.getFileExtension(a.src),b("video/"+c)):""},D.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},D.nativeSourceHandler.dispose=function(){},D.registerSourceHandler(D.nativeSourceHandler),D.canControlVolume=function(){var a=D.TEST_VID.volume;return D.TEST_VID.volume=a/2+.1,a!==D.TEST_VID.volume},D.canControlPlaybackRate=function(){var a=D.TEST_VID.playbackRate;return D.TEST_VID.playbackRate=a/2+.1,a!==D.TEST_VID.playbackRate},D.supportsNativeTextTracks=function(){var a;return a=!!D.TEST_VID.textTracks,a&&D.TEST_VID.textTracks.length>0&&(a="number"!=typeof D.TEST_VID.textTracks[0].mode),a&&u.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in D.TEST_VID.textTracks||(a=!1),a},D.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],D.prototype.featuresVolumeControl=D.canControlVolume(),D.prototype.featuresPlaybackRate=D.canControlPlaybackRate(),D.prototype.movingMediaElementInDOM=!u.IS_IOS,D.prototype.featuresFullscreenResize=!0,D.prototype.featuresProgressEvents=!0,D.prototype.featuresNativeTextTracks=D.supportsNativeTextTracks();var F=void 0,G=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,H=/^video\/mp4/i;D.patchCanPlayType=function(){u.ANDROID_VERSION>=4&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":F.call(this,a)}),u.IS_OLD_ANDROID&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&H.test(a)?"maybe":F.call(this,a)})},D.unpatchCanPlayType=function(){var a=D.TEST_VID.constructor.prototype.canPlayType;return D.TEST_VID.constructor.prototype.canPlayType=F,F=null,a},D.patchCanPlayType(),D.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},k["default"].registerComponent("Html5",D),c["default"]=D,b.exports=c["default"]},{"../component":63,"../utils/browser.js":120,"../utils/dom.js":123,"../utils/fn.js":125,"../utils/log.js":128,"../utils/merge-options.js":129,"../utils/url.js":133,"./tech.js":112,"global/document":1,"global/window":2,"object.assign":45}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;gb)for(c=b;d>c;c++)e.call(this,c)},j.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=j,b.exports=c["default"]},{"../utils/browser.js":120,"global/document":1}],114:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function i(a,b,c){try{a.style[b]=c}catch(d){}}c.__esModule=!0;var j=a("../component"),k=e(j),l=a("../menu/menu.js"),m=(e(l),a("../menu/menu-item.js")),n=(e(m),a("../menu/menu-button.js")),o=(e(n),a("../utils/fn.js")),p=d(o),q=a("global/document"),r=(e(q),a("global/window")),s=e(r),t="#222",u="#ccc",v={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},w=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),c.on("loadstart",p.bind(this,this.toggleDisplay)),c.on("texttrackchange",p.bind(this,this.updateDisplay)),c.ready(p.bind(this,function(){if(c.tech_&&c.tech_.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",p.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},n.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=n,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"global/document":1}],118:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function i(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),n.on(this.el().querySelector(".vjs-fg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".window-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-text-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-window-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-percent select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-edge-style select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-family select"),"change",p.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:j()})},b.prototype.getValues=function(){var a=this.el(),b=h(a.querySelector(".vjs-edge-style select")),c=h(a.querySelector(".vjs-font-family select")),d=h(a.querySelector(".vjs-fg-color > select")),e=h(a.querySelector(".vjs-text-opacity > select")),f=h(a.querySelector(".vjs-bg-color > select")),g=h(a.querySelector(".vjs-bg-opacity > select")),i=h(a.querySelector(".window-color > select")),j=h(a.querySelector(".vjs-window-opacity > select")),k=v["default"].parseFloat(h(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:g,textOpacity:e,windowOpacity:j,edgeStyle:b,fontFamily:c,color:d,backgroundColor:f,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();i(b.querySelector(".vjs-edge-style select"),a.edgeStyle),i(b.querySelector(".vjs-font-family select"),a.fontFamily),i(b.querySelector(".vjs-fg-color > select"),a.color),i(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),i(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),i(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),i(b.querySelector(".window-color > select"),a.windowColor),i(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),i(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=t["default"](v["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&r["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?v["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):v["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(l["default"]);l["default"].registerComponent("TextTrackSettings",w),c["default"]=w,b.exports=c["default"]},{"../component":63,"../utils/events.js":124,"../utils/fn.js":125,"../utils/log.js":128,"global/window":2,"safe-json-parse/tuple":53}],119:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var f=a("./text-track-cue-list"),g=e(f),h=a("../utils/fn.js"),i=d(h),j=a("../utils/guid.js"),k=d(j),l=a("../utils/browser.js"),m=d(l),n=a("./text-track-enums"),o=d(n),p=a("../utils/log.js"),q=e(p),r=a("../event-target"),s=e(r),t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("../utils/url.js"),y=a("xhr"),z=e(y),A=function E(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(m.IS_IE8){b=u["default"].createElement("custom");for(var c in E.prototype)b[c]=E.prototype[c]}b.tech_=a.tech;var d=o.TextTrackMode[a.mode]||"disabled",e=o.TextTrackKind[a.kind]||"subtitles",f=a.label||"",h=a.language||a.srclang||"",j=a.id||"vjs_text_track_"+k.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var l=new g["default"](b.cues_),n=new g["default"](b.activeCues_),p=!1,q=i.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return f},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return h},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return j},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){o.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?l:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return n;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var B=function F(a,b){if("function"!=typeof w["default"].WebVTT)return w["default"].setTimeout(function(){F(a,b)},25);var c=new w["default"].WebVTT.Parser(w["default"],w["default"].vttjs,w["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){q["default"].error(a)},c.parse(a),c.flush()},C=function(a,b){var c={uri:a},d=x.isCrossOrigin(a);d&&(c.cors=d),z["default"](c,i.bind(this,function(a,c,d){return a?q["default"].error(a,c):(b.loaded_=!0,void B(d,b))}))},D=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=A,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"../utils/guid.js":127,"../utils/log.js":128,"../utils/url.js":133,"./text-track-cue-list":113,"./text-track-enums":115,"global/document":1,"global/window":2,xhr:55}],120:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/AppleWebKit\/([\d.]+)/i.exec(i),k=j?parseFloat(j.pop()):null,l=/iPhone/i.test(i);c.IS_IPHONE=l;var m=/iPad/i.test(i);c.IS_IPAD=m;var n=/iPod/i.test(i);c.IS_IPOD=n;var o=l||m||n;c.IS_IOS=o;var p=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=p;var q=/Android/i.test(i);c.IS_ANDROID=q;var r=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=r;var s=q&&/webkit/i.test(i)&&2.3>r;c.IS_OLD_ANDROID=s;var t=q&&5>r&&537>k;c.IS_NATIVE_ANDROID=t;var u=/Firefox/i.test(i);c.IS_FIREFOX=u;var v=/Chrome/i.test(i);c.IS_CHROME=v;var w=/MSIE\s8\.0/.test(i);c.IS_IE8=w;var x=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=x;var y="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=y},{"global/document":1,"global/window":2}],121:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":131}],122:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":128}],123:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){return a.raw=b,a}function g(a){return 0===a.indexOf("#")&&(a=a.slice(1)),x["default"].getElementById(a)}function h(){var a=arguments.length<=0||void 0===arguments[0]?"div":arguments[0],b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],d=x["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var c=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?(D["default"].warn(F["default"](v,a,c)),d.setAttribute(a,c)):d[a]=c}),Object.getOwnPropertyNames(c).forEach(function(a){c[a];d.setAttribute(a,c[a])}),d}function i(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function j(a){var b=a[H];return b||(b=a[H]=B.newGUID()),G[b]||(G[b]={}),G[b]}function k(a){var b=a[H];return b?!!Object.getOwnPropertyNames(G[b]).length:!1}function l(a){var b=a[H];if(b){delete G[b];try{delete a[H]}catch(c){a.removeAttribute?a.removeAttribute(H):a[H]=null}}}function m(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function n(a,b){m(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function o(a,b){if(m(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1); -a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/alt/video.novtt.hls.js b/dist/alt/videojs.novtt.hls.js similarity index 99% rename from dist/alt/video.novtt.hls.js rename to dist/alt/videojs.novtt.hls.js index dc597f7915..a6b0733602 100644 --- a/dist/alt/video.novtt.hls.js +++ b/dist/alt/videojs.novtt.hls.js @@ -18024,7 +18024,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/alt/video.novtt.hls.min.js b/dist/alt/videojs.novtt.hls.min.js similarity index 99% rename from dist/alt/video.novtt.hls.min.js rename to dist/alt/videojs.novtt.hls.min.js index bf7d4b2d7d..227fe7547e 100644 --- a/dist/alt/video.novtt.hls.min.js +++ b/dist/alt/videojs.novtt.hls.min.js @@ -13,11 +13,11 @@ if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}fu this.off(m["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=k.getPointerPosition(this.el_,a);return this.vertical()?b.y:b.x},b.prototype.handleFocus=function(){this.on(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(i["default"]);i["default"].registerComponent("Slider",p),c["default"]=p,b.exports=c["default"]},{"../component.js":63,"../utils/dom.js":123,"global/document":1,"object.assign":45}],108:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],109:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=a.charAt(0).toUpperCase()+a.slice(1);A["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function i(a){A[a]=function(){return this.el_.vjs_getProperty(a)}}c.__esModule=!0;for(var j=a("./tech"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/time-ranges.js"),q=a("./flash-rtmp"),r=e(q),s=a("../component"),t=e(s),u=a("global/window"),v=e(u),w=a("object.assign"),x=e(w),y=v["default"].navigator,z=function(a){function b(c,d){f(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),v["default"].videojs=v["default"].videojs||{},v["default"].videojs.Flash=v["default"].videojs.Flash||{},v["default"].videojs.Flash.onReady=b.onReady,v["default"].videojs.Flash.onEvent=b.onEvent,v["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return g(b,a),b.prototype.createEl=function(){var a=this.options_;a.swf||(a.swf="//vjs.zencdn.net/swf/5.0.0-rc1/video-js.swf");var c=a.techId,d=x["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=x["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=x["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.ended()&&this.setCurrentTime(0),this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){return void 0===a?this.currentSrc():this.setSrc(a)},b.prototype.setSrc=function(a){if(a=o.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},k["default"].withSourceHandlers(z),z.nativeSourceHandler={},z.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=o.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in z.formats?"maybe":""},z.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},z.nativeSourceHandler.dispose=function(){},z.registerSourceHandler(z.nativeSourceHandler),z.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},z.onReady=function(a){var b=m.getEl(a),c=b&&b.tech;c&&c.el()&&z.checkReady(c)},z.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){z.checkReady(a)},50))},z.onEvent=function(a,b){var c=m.getEl(a).tech;c.trigger(b)},z.onError=function(a,b){var c=m.getEl(a).tech;return"srcnotfound"===b?c.error(4):void c.error("FLASH: "+b)},z.version=function(){var a="0,0,0";try{a=new v["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{y.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(y.plugins["Shockwave Flash 2.0"]||y.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},z.embed=function(a,b,c,d){var e=z.getEmbedCode(a,b,c,d),f=m.createEl("div",{innerHTML:e}).childNodes[0];return f},z.getEmbedCode=function(a,b,c,d){var e=''}),d=x["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=a+'="'+d[a]+'" '}),""+e+h+">"+g+""},r["default"](z),t["default"].registerComponent("Flash",z),c["default"]=z,b.exports=c["default"]},{"../component":63,"../utils/dom.js":123,"../utils/time-ranges.js":131,"../utils/url.js":133,"./flash-rtmp":108,"./tech":112,"global/window":2,"object.assign":45}],110:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./tech.js"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/fn.js"),q=d(p),r=a("../utils/log.js"),s=e(r),t=a("../utils/browser.js"),u=d(t),v=a("global/document"),w=e(v),x=a("global/window"),y=e(x),z=a("object.assign"),A=e(z),B=a("../utils/merge-options.js"),C=e(B),D=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=c.source;if(e&&(this.el_.currentSrc!==e.src||c.tag&&3===c.tag.initNetworkState_)?this.setSource(e):this.handleLateInit_(this.el_),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),m.setElAttributes(a,i)}return a},b.prototype.handleLateInit_=function(a){var b=this;if(0!==a.networkState&&3!==a.networkState){if(0===a.readyState){var c=function(){var a=!1,c=function(){a=!0};b.on("loadstart",c);var d=function(){a||this.trigger("loadstart")};return b.on("loadedmetadata",d),b.ready(function(){this.off("loadstart",c),this.off("loadedmetadata",d),a||this.trigger("loadstart")}),{v:void 0}}();if("object"==typeof c)return c.v}var d=["loadstart"];d.push("loadedmetadata"),a.readyState>=2&&d.push("loadeddata"),a.readyState>=3&&d.push("canplay"),a.readyState>=4&&d.push("canplaythrough"),this.ready(function(){d.forEach(function(a){this.trigger(a)},this)})}},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){s["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=y["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){return void 0===a?this.el_.src:void this.setSrc(a)},b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=w["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(i["default"]);D.TEST_VID=w["default"].createElement("video");var E=w["default"].createElement("track");E.kind="captions",E.srclang="en",E.label="English",D.TEST_VID.appendChild(E),D.isSupported=function(){try{D.TEST_VID.volume=.5}catch(a){return!1}return!!D.TEST_VID.canPlayType},i["default"].withSourceHandlers(D),D.nativeSourceHandler={},D.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return D.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=o.getFileExtension(a.src),b("video/"+c)):""},D.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},D.nativeSourceHandler.dispose=function(){},D.registerSourceHandler(D.nativeSourceHandler),D.canControlVolume=function(){var a=D.TEST_VID.volume;return D.TEST_VID.volume=a/2+.1,a!==D.TEST_VID.volume},D.canControlPlaybackRate=function(){var a=D.TEST_VID.playbackRate;return D.TEST_VID.playbackRate=a/2+.1,a!==D.TEST_VID.playbackRate},D.supportsNativeTextTracks=function(){var a;return a=!!D.TEST_VID.textTracks,a&&D.TEST_VID.textTracks.length>0&&(a="number"!=typeof D.TEST_VID.textTracks[0].mode),a&&u.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in D.TEST_VID.textTracks||(a=!1),a},D.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],D.prototype.featuresVolumeControl=D.canControlVolume(),D.prototype.featuresPlaybackRate=D.canControlPlaybackRate(),D.prototype.movingMediaElementInDOM=!u.IS_IOS,D.prototype.featuresFullscreenResize=!0,D.prototype.featuresProgressEvents=!0,D.prototype.featuresNativeTextTracks=D.supportsNativeTextTracks();var F=void 0,G=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,H=/^video\/mp4/i;D.patchCanPlayType=function(){u.ANDROID_VERSION>=4&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":F.call(this,a)}),u.IS_OLD_ANDROID&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&H.test(a)?"maybe":F.call(this,a)})},D.unpatchCanPlayType=function(){var a=D.TEST_VID.constructor.prototype.canPlayType;return D.TEST_VID.constructor.prototype.canPlayType=F,F=null,a},D.patchCanPlayType(),D.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},k["default"].registerComponent("Html5",D),c["default"]=D,b.exports=c["default"]},{"../component":63,"../utils/browser.js":120,"../utils/dom.js":123,"../utils/fn.js":125,"../utils/log.js":128,"../utils/merge-options.js":129,"../utils/url.js":133,"./tech.js":112,"global/document":1,"global/window":2,"object.assign":45}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;gb)for(c=b;d>c;c++)e.call(this,c)},j.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=j,b.exports=c["default"]},{"../utils/browser.js":120,"global/document":1}],114:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function i(a,b,c){try{a.style[b]=c}catch(d){}}c.__esModule=!0;var j=a("../component"),k=e(j),l=a("../menu/menu.js"),m=(e(l),a("../menu/menu-item.js")),n=(e(m),a("../menu/menu-button.js")),o=(e(n),a("../utils/fn.js")),p=d(o),q=a("global/document"),r=(e(q),a("global/window")),s=e(r),t="#222",u="#ccc",v={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},w=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),c.on("loadstart",p.bind(this,this.toggleDisplay)),c.on("texttrackchange",p.bind(this,this.updateDisplay)),c.ready(p.bind(this,function(){if(c.tech_&&c.tech_.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",p.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},n.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=n,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"global/document":1}],118:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function i(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),n.on(this.el().querySelector(".vjs-fg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".window-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-text-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-window-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-percent select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-edge-style select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-family select"),"change",p.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:j()})},b.prototype.getValues=function(){var a=this.el(),b=h(a.querySelector(".vjs-edge-style select")),c=h(a.querySelector(".vjs-font-family select")),d=h(a.querySelector(".vjs-fg-color > select")),e=h(a.querySelector(".vjs-text-opacity > select")),f=h(a.querySelector(".vjs-bg-color > select")),g=h(a.querySelector(".vjs-bg-opacity > select")),i=h(a.querySelector(".window-color > select")),j=h(a.querySelector(".vjs-window-opacity > select")),k=v["default"].parseFloat(h(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:g,textOpacity:e,windowOpacity:j,edgeStyle:b,fontFamily:c,color:d,backgroundColor:f,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();i(b.querySelector(".vjs-edge-style select"),a.edgeStyle),i(b.querySelector(".vjs-font-family select"),a.fontFamily),i(b.querySelector(".vjs-fg-color > select"),a.color),i(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),i(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),i(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),i(b.querySelector(".window-color > select"),a.windowColor),i(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),i(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=t["default"](v["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&r["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?v["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):v["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(l["default"]);l["default"].registerComponent("TextTrackSettings",w),c["default"]=w,b.exports=c["default"]},{"../component":63,"../utils/events.js":124,"../utils/fn.js":125,"../utils/log.js":128,"global/window":2,"safe-json-parse/tuple":53}],119:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var f=a("./text-track-cue-list"),g=e(f),h=a("../utils/fn.js"),i=d(h),j=a("../utils/guid.js"),k=d(j),l=a("../utils/browser.js"),m=d(l),n=a("./text-track-enums"),o=d(n),p=a("../utils/log.js"),q=e(p),r=a("../event-target"),s=e(r),t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("../utils/url.js"),y=a("xhr"),z=e(y),A=function E(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(m.IS_IE8){b=u["default"].createElement("custom");for(var c in E.prototype)b[c]=E.prototype[c]}b.tech_=a.tech;var d=o.TextTrackMode[a.mode]||"disabled",e=o.TextTrackKind[a.kind]||"subtitles",f=a.label||"",h=a.language||a.srclang||"",j=a.id||"vjs_text_track_"+k.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var l=new g["default"](b.cues_),n=new g["default"](b.activeCues_),p=!1,q=i.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return f},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return h},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return j},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){o.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?l:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return n;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var B=function F(a,b){if("function"!=typeof w["default"].WebVTT)return w["default"].setTimeout(function(){F(a,b)},25);var c=new w["default"].WebVTT.Parser(w["default"],w["default"].vttjs,w["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){q["default"].error(a)},c.parse(a),c.flush()},C=function(a,b){var c={uri:a},d=x.isCrossOrigin(a);d&&(c.cors=d),z["default"](c,i.bind(this,function(a,c,d){return a?q["default"].error(a,c):(b.loaded_=!0,void B(d,b))}))},D=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=A,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"../utils/guid.js":127,"../utils/log.js":128,"../utils/url.js":133,"./text-track-cue-list":113,"./text-track-enums":115,"global/document":1,"global/window":2,xhr:55}],120:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/AppleWebKit\/([\d.]+)/i.exec(i),k=j?parseFloat(j.pop()):null,l=/iPhone/i.test(i);c.IS_IPHONE=l;var m=/iPad/i.test(i);c.IS_IPAD=m;var n=/iPod/i.test(i);c.IS_IPOD=n;var o=l||m||n;c.IS_IOS=o;var p=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=p;var q=/Android/i.test(i);c.IS_ANDROID=q;var r=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=r;var s=q&&/webkit/i.test(i)&&2.3>r;c.IS_OLD_ANDROID=s;var t=q&&5>r&&537>k;c.IS_NATIVE_ANDROID=t;var u=/Firefox/i.test(i);c.IS_FIREFOX=u;var v=/Chrome/i.test(i);c.IS_CHROME=v;var w=/MSIE\s8\.0/.test(i);c.IS_IE8=w;var x=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=x;var y="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=y},{"global/document":1,"global/window":2}],121:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":131}],122:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":128}],123:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){return a.raw=b,a}function g(a){return 0===a.indexOf("#")&&(a=a.slice(1)),x["default"].getElementById(a)}function h(){var a=arguments.length<=0||void 0===arguments[0]?"div":arguments[0],b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],d=x["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var c=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?(D["default"].warn(F["default"](v,a,c)),d.setAttribute(a,c)):d[a]=c}),Object.getOwnPropertyNames(c).forEach(function(a){c[a];d.setAttribute(a,c[a])}),d}function i(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function j(a){var b=a[H];return b||(b=a[H]=B.newGUID()),G[b]||(G[b]={}),G[b]}function k(a){var b=a[H];return b?!!Object.getOwnPropertyNames(G[b]).length:!1}function l(a){var b=a[H];if(b){delete G[b];try{delete a[H]}catch(c){a.removeAttribute?a.removeAttribute(H):a[H]=null}}}function m(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function n(a,b){m(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function o(a,b){if(m(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1); -a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else{for(f=[],d=arguments.length,d=1;dd;++d)c[d].apply(this,f)}},this.dispose=function(){a={}}}};b.prototype.pipe=function(a){return this.on("data",function(b){a.push(b)}),this.on("done",function(){a.flush()}),a},b.prototype.push=function(a){this.trigger("data",a)},b.prototype.flush=function(){this.trigger("done")},a.muxjs=a.muxjs||{},a.muxjs.Stream=b}(this),function(a,b){b.ExpGolomb=function(a){var b=a.byteLength,c=0,d=0;this.length=function(){return 8*b},this.bitsAvailable=function(){return 8*b+d},this.loadWord=function(){var e=a.byteLength-b,f=new Uint8Array(4),g=Math.min(4,b);if(0===g)throw new Error("no bytes available");f.set(a.subarray(e,e+g)),c=new DataView(f.buffer).getUint32(0),d=8*g,b-=g},this.skipBits=function(a){var e;d>a?(c<<=a,d-=a):(a-=d,e=Math.floor(a/8),a-=8*e,b-=e,this.loadWord(),c<<=a,d-=a)},this.readBits=function(a){var e=Math.min(d,a),f=c>>>32-e;return d-=e,d>0?c<<=e:b>0&&this.loadWord(),e=a-e,e>0?f<a;++a)if(0!==(c&2147483648>>>a))return c<<=a,d-=a,a;return this.loadWord(),a+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var a=this.skipLeadingZeros();return this.readBits(a+1)-1},this.readExpGolomb=function(){var a=this.readUnsignedExpGolomb();return 1&a?1+a>>>1:-1*(a>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()}}(this,this.muxjs),function(a){a.videojs=a.videojs||{},a.muxjs=a.muxjs||{};var b=a.muxjs;b.FlvTag=function(a,c){var d,e=0,f=function(a,b){var c,d=a.position+b;d0)throw new Error("Attempted to create new NAL wihout closing the old one");e=this.length,this.length+=4,this.position=this.length},this.endNalUnit=function(a){var b,c;this.length===e+4?this.length-=4:e>0&&(b=e+4,c=this.length-b,this.position=e,this.view.setUint32(this.position,c),this.position=this.length,a&&a.push(this.bytes.subarray(b,b+c))),e=0},this.writeMetaDataDouble=function(a,b){var c;if(f(this,2+a.length+9),this.view.setUint16(this.position,a.length),this.position+=2,"width"===a)this.bytes.set(g,this.position),this.position+=5;else if("height"===a)this.bytes.set(h,this.position),this.position+=6;else if("videocodecid"===a)this.bytes.set(i,this.position),this.position+=12;else for(c=0;c>>16,this.bytes[14]=(65280&a)>>>8,this.bytes[15]=(255&a)>>>0;break;case b.FlvTag.AUDIO_TAG:this.bytes[11]=175,this.bytes[12]=c?0:1;break;case b.FlvTag.METADATA_TAG:this.position=11,this.view.setUint8(this.position,2),this.position++,this.view.setUint16(this.position,10),this.position+=2,this.bytes.set([111,110,77,101,116,97,68,97,116,97],this.position),this.position+=10,this.bytes[this.position]=8,this.position++,this.view.setUint32(this.position,e),this.position=this.length,this.bytes.set([0,0,9],this.position),this.position+=3,this.length=this.position}return d=this.length-11,this.bytes[1]=(16711680&d)>>>16,this.bytes[2]=(65280&d)>>>8,this.bytes[3]=(255&d)>>>0,this.bytes[4]=(16711680&this.dts)>>>16,this.bytes[5]=(65280&this.dts)>>>8,this.bytes[6]=(255&this.dts)>>>0,this.bytes[7]=(4278190080&this.dts)>>>24,this.bytes[8]=0,this.bytes[9]=0,this.bytes[10]=0,f(this,4),this.view.setUint32(this.length,this.length),this.length+=4,this.position+=4,this.bytes=this.bytes.subarray(0,this.length),this.frameTime=b.FlvTag.frameTime(this.bytes),this}},b.FlvTag.AUDIO_TAG=8,b.FlvTag.VIDEO_TAG=9,b.FlvTag.METADATA_TAG=18,b.FlvTag.isAudioFrame=function(a){return b.FlvTag.AUDIO_TAG===a[0]},b.FlvTag.isVideoFrame=function(a){return b.FlvTag.VIDEO_TAG===a[0]},b.FlvTag.isMetaData=function(a){return b.FlvTag.METADATA_TAG===a[0]},b.FlvTag.isKeyFrame=function(a){return b.FlvTag.isVideoFrame(a)?23===a[11]:b.FlvTag.isAudioFrame(a)?!0:b.FlvTag.isMetaData(a)?!0:!1},b.FlvTag.frameTime=function(a){var b=a[4]<<16;return b|=a[5]<<8,b|=a[6]<<0,b|=a[7]<<24}}(this),function(){var a,b=window.muxjs.ExpGolomb,c=window.muxjs.FlvTag;window.muxjs.H264ExtraData=a=function(){this.sps=[],this.pps=[]},a.prototype.extraDataExists=function(){return this.sps.length>0},a.prototype.scaling_list=function(a,b){var c,d,e=8,f=8;for(c=0;a>c;++c)0!==f&&(d=b.readExpGolomb(),f=(e+d+256)%256),e=0===f?e:f},a.prototype.getSps0Rbsp=function(){for(var a=this.sps[0],b=1,c=1,d=0,e=a.byteLength-2,f=new Uint8Array(a.byteLength);e>b;)0===a[b]&&0===a[b+1]&&3===a[b+2]&&(f.set(a.subarray(c,b+1),d),d+=b+1-c,c=b+3),b++;return f.set(a.subarray(c),d),f.subarray(0,d+(a.byteLength-c))},a.prototype.metaDataTag=function(a){var d,e,f,g,h,i,j,k,l,m,n,o,p,q=new c(c.METADATA_TAG),r=0,s=0,t=0,u=0;if(q.dts=a,q.pts=a,d=new b(this.getSps0Rbsp()),e=d.readUnsignedByte(),d.skipBits(16),d.skipUnsignedExpGolomb(),(100===e||110===e||122===e||244===e||44===e||83===e||86===e||118===e||128===e)&&(f=d.readUnsignedExpGolomb(),3===f&&d.skipBits(1),d.skipUnsignedExpGolomb(),d.skipUnsignedExpGolomb(),d.skipBits(1),d.readBoolean()))for(g=3!==f?8:12,h=0;g>h;++h)d.readBoolean()&&(6>h?this.scaling_list(16,d):this.scaling_list(64,d));if(d.skipUnsignedExpGolomb(),i=d.readUnsignedExpGolomb(),0===i)d.readUnsignedExpGolomb();else if(1===i)for(d.skipBits(1),d.skipExpGolomb(),d.skipExpGolomb(),j=d.readUnsignedExpGolomb(),h=0;j>h;++h)d.skipExpGolomb();return d.skipUnsignedExpGolomb(),d.skipBits(1),k=d.readUnsignedExpGolomb(),l=d.readUnsignedExpGolomb(),m=d.readBits(1),0===m&&d.skipBits(1),d.skipBits(1),n=d.readBoolean(),n&&(r=d.readUnsignedExpGolomb(),s=d.readUnsignedExpGolomb(),t=d.readUnsignedExpGolomb(),u=d.readUnsignedExpGolomb()),o=16*(k+1)-2*r-2*s,p=(2-m)*(l+1)*16-2*t-2*u,q.writeMetaDataDouble("videocodecid",7),q.writeMetaDataDouble("width",o),q.writeMetaDataDouble("height",p),q},a.prototype.extraDataTag=function(a){var b,d=new c(c.VIDEO_TAG,!0);for(d.dts=a,d.pts=a,d.writeByte(1),d.writeByte(this.sps[0][1]),d.writeByte(this.sps[0][2]),d.writeByte(this.sps[0][3]),d.writeByte(255),d.writeByte(225),d.writeShort(this.sps[0].length),d.writeBytes(this.sps[0]),d.writeByte(this.pps.length),b=0;be?e:r,e-=r,s=q+r;s>q;)switch(d){default:d=0;break;case 0:if(q>=s)return;if(255!==p[q])return q+=1,void(d=0);q+=1,d=1;break;case 1:if(q>=s)return;if(240!==(240&p[q]))return q+=1,void(d=0);g=!!(1&p[q]),q+=1,d=2;break;case 2:if(q>=s)return;h=((192&p[q])>>>6)+1,i=(60&p[q])>>>2,j=(1&p[q])<<2,q+=1,d=3;break;case 3:if(q>=s)return;j|=(192&p[q])>>>6,k=(3&p[q])<<11,q+=1,d=4;break;case 4:if(q>=s)return;k|=p[q]<<3,q+=1,d=5;break;case 5:if(q>=s)return;k|=(224&p[q])>>>5,k-=g?7:9,q+=1,d=6;break;case 6:if(q>=s)return;l=1024*((3&p[q])+1),m=1e3*l/c[i],t=h<<11|i<<7|j<<3,(t!==o||a-f>=1e3)&&(n=new b(b.METADATA_TAG),n.pts=a,n.dts=a,n.writeMetaDataDouble("audiocodecid",10),n.writeMetaDataBoolean("stereo",2===j),n.writeMetaDataDouble("audiosamplerate",c[i]),n.writeMetaDataDouble("audiosamplesize",16),this.tags.push(n),o=t,n=new b(b.AUDIO_TAG,!0),n.pts=a,n.dts=n.pts,n.view.setUint16(n.position,t),n.position+=2,n.length=Math.max(n.length,n.position),this.tags.push(n),f=a),q+=1,d=7;break;case 7:if(!g){if(2>s-q)return;q+=2}n=new b(b.AUDIO_TAG),n.pts=a,n.dts=a,d=8;break;case 8:for(;k;){if(q>=s)return;u=k>s-q?s-q:k,n.writeBytes(p,q,u),q+=u,k-=u}this.tags.push(n),d=0,a+=m}}}}(this),function(a){var b,c,d=a.muxjs.FlvTag,e=a.muxjs.H264ExtraData;a.muxjs.NALUnitType=c={unspecified:0,slice_layer_without_partitioning_rbsp_non_idr:1,slice_data_partition_a_layer_rbsp:2,slice_data_partition_b_layer_rbsp:3,slice_data_partition_c_layer_rbsp:4,slice_layer_without_partitioning_rbsp_idr:5,sei_rbsp:6,seq_parameter_set_rbsp:7,pic_parameter_set_rbsp:8,access_unit_delimiter_rbsp:9,end_of_seq_rbsp:10,end_of_stream_rbsp:11},a.muxjs.H264Stream=b=function(){this._next_pts=0,this._next_dts=0,this._h264Frame=null,this._oldExtraData=new e,this._newExtraData=new e,this._nalUnitType=-1,this._state=0,this.tags=[]},b.prototype.setTimeStampOffset=function(){},b.prototype.setNextTimeStamp=function(a,b,c){this._next_pts=a,this._next_dts=b,c&&this.finishFrame()},b.prototype.finishFrame=function(){this._h264Frame&&(this._newExtraData.extraDataExists()&&(this._oldExtraData=this._newExtraData,this._newExtraData=new e),this._oldExtraData.extraDataExists()&&(this._h264Frame.keyFrame||0===this.tags.length)&&(this.tags.push(this._oldExtraData.metaDataTag(this._h264Frame.pts)),this.tags.push(this._oldExtraData.extraDataTag(this._h264Frame.pts))),this._h264Frame.endNalUnit(),this.tags.push(this._h264Frame)),this._h264Frame=null,this._nalUnitType=-1,this._state=0},b.prototype.writeBytes=function(a,b,e){var f,g,h,i;if(b=b||0,e=e||0,!(0>=e))switch(this._state){default:case 0:this._state=1;case 1:if(a[b]<=1&&(f=this._h264Frame?this._h264Frame.nalUnitSize():0,f>=1&&0===this._h264Frame.negIndex(1))){if(1===a[b]&&f>=2&&0===this._h264Frame.negIndex(2))return this._h264Frame.length-=f>=3&&0===this._h264Frame.negIndex(3)?3:2,this._state=3,this.writeBytes(a,b+1,e-1);if(e>1&&0===a[b]&&1===a[b+1])return this._h264Frame.length-=f>=2&&0===this._h264Frame.negIndex(2)?2:1,this._state=3,this.writeBytes(a,b+2,e-2);if(e>2&&0===a[b]&&0===a[b+1]&&1===a[b+2])return this._state=3,this.writeBytes(a,b+3,e-3)}this._state=2;case 2:for(g=b,h=g+e,i=h-3;i>b;)if(a[b+2]>1)b+=3;else if(0!==a[b+1])b+=2;else if(0!==a[b])b+=1;else{if(1===a[b+2])return b>g&&this._h264Frame.writeBytes(a,g,b-g),this._state=3,b+=3,this.writeBytes(a,b,h-b);if(h-b>=4&&0===a[b+2]&&1===a[b+3])return b>g&&this._h264Frame.writeBytes(a,g,b-g),this._state=3,b+=4,this.writeBytes(a,b,h-b);b+=3}return this._state=1,void(this._h264Frame&&this._h264Frame.writeBytes(a,g,e));case 3:if(this._h264Frame)switch(this._nalUnitType){case c.seq_parameter_set_rbsp:this._h264Frame.endNalUnit(this._newExtraData.sps);break;case c.pic_parameter_set_rbsp:this._h264Frame.endNalUnit(this._newExtraData.pps);break;case c.slice_layer_without_partitioning_rbsp_idr:this._h264Frame.endNalUnit();break;default:this._h264Frame.endNalUnit()}return this._nalUnitType=31&a[b],this._h264Frame&&(this._nalUnitType===c.access_unit_delimiter_rbsp?this.finishFrame():this._nalUnitType===c.slice_layer_without_partitioning_rbsp_idr&&(this._h264Frame.keyFrame=!0)),this._h264Frame||(this._h264Frame=new d(d.VIDEO_TAG),this._h264Frame.pts=this._next_pts,this._h264Frame.dts=this._next_dts),this._h264Frame.startNalUnit(),this._state=2,this.writeBytes(a,b,e)}}}(this),function(a,b){"use strict";var c,d=function(a,b,c){var d,e="";for(d=b;c>d;d++)e+="%"+("00"+a[d].toString(16)).slice(-2);return e},e=function(b,c,e){return a.decodeURIComponent(d(b,c,e))},f=function(b,c,e){return a.unescape(d(b,c,e))},g={TXXX:function(a){var b;if(3===a.data[0])for(b=1;bi)){for(b={data:new Uint8Array(f),frames:[],pts:h[0].pts,dts:h[0].dts},k=0;f>k;)b.data.set(h[0].data,k),k+=h[0].data.byteLength,i-=h[0].data.byteLength,h.shift();c=10,64&b.data[5]&&(c+=4,c+=b.data[10]<<24|b.data[11]<<16|b.data[12]<<8|b.data[13],f-=b.data[16]<<24|b.data[17]<<16|b.data[18]<<8|b.data[19]);do{if(d=b.data[c+4]<<24|b.data[c+5]<<16|b.data[c+6]<<8|b.data[c+7],1>d)return void 0;j={id:String.fromCharCode(b.data[c],b.data[c+1],b.data[c+2],b.data[c+3]),data:b.data.subarray(c+10,c+d+10)},g[j.id]&&g[j.id](j),b.frames.push(j),c+=10,c+=d}while(f>c);this.trigger("data",b)}}},c.prototype=new b.Stream,b.MetadataStream=c}(window,window.muxjs),function(){var a,b,c=muxjs.FlvTag,d=muxjs.H264Stream,e=muxjs.AacStream,f=muxjs.MetadataStream;muxjs.SegmentParser=function(){var g,h=this,i=new Uint8Array(a),j=0,k=new d,l=new e;h.stream={programMapTable:{}},h.metadataStream=new f,h.getFlvHeader=function(a,b,d){var e,f,g,h=new Uint8Array(9),i=new DataView(h.buffer);return a=a||0,b=void 0===b?!0:b,d=void 0===d?!0:d,i.setUint8(0,70),i.setUint8(1,76),i.setUint8(2,86),i.setUint8(3,1),i.setUint8(4,(b?4:0)|(d?1:0)),i.setUint32(5,h.byteLength),0>=a?(f=new Uint8Array(h.byteLength+4),f.set(h),f.set([0,0,0,0],h.byteLength),f):(e=new c(c.METADATA_TAG),e.pts=e.dts=0,e.writeMetaDataDouble("duration",a),g=e.finalize().length,f=new Uint8Array(h.byteLength+g),f.set(h),f.set(i.byteLength,g),f)},h.flushTags=function(){k.finishFrame()},h.tagsAvailable=function(){return k.tags.length+l.tags.length},h.getNextTag=function(){var a;return a=k.tags.length?l.tags.length&&l.tags[0].dts0){if(b.byteLength+j0&&(i.set(b.subarray(d),j),j+=b.byteLength-d));g(b.subarray(d,d+a))?d+=a:d++}},g=function(c){var d,e,f,g,i,j,m,n,o,p,q,r,s,t,u,v,w,x,y=0,z=y+a,A=!!(64&c[y+1]),B=(31&c[y+1])<<8|c[y+2],C=(48&c[y+3])>>>4;if(y+=4,C>1&&(y+=c[y]+1),0===B){if(A&&(y+=1+c[y]),d=c[y],e=!!(1&c[y+5]))for(f=(15&c[y+1])<<8|c[y+2],y+=8,j=y+(f-5-4);j>y;y+=4)if(g=c[y]<<8|c[y+1],i=(31&c[y+2])<<8|c[y+3],0===g)h.stream.networkPid=i;else if(void 0===h.stream.pmtPid)h.stream.pmtPid=i;else if(h.stream.pmtPid!==i)throw new Error("TS has more that 1 program")}else if(B===h.stream.programMapTable[b.h264]||B===h.stream.programMapTable[b.adts]||B===h.stream.programMapTable[b.metadata]){if(A){if(0!==c[y+0]||0!==c[y+1]||1!==c[y+2])throw new Error("PES did not begin with start code");m=c[y+4]<<8|c[y+5],n=0!==(4&c[y+6]),o=c[y+7],p=c[y+8],y+=9,192&o&&(q=(14&c[y+0])<<28|(255&c[y+1])<<21|(254&c[y+2])<<13|(255&c[y+3])<<6|(254&c[y+4])>>>2,q/=45,r=q,64&o&&(r=(14&c[y+5])<<28|(255&c[y+6])<<21|(254&c[y+7])<<13|(255&c[y+8])<<6|(254&c[y+9])>>>2,r/=45)),y+=p,B===h.stream.programMapTable[b.h264]?k.setNextTimeStamp(q,r,n):B===h.stream.programMapTable[b.adts]&&l.setNextTimeStamp(q,m,n)}B===h.stream.programMapTable[b.adts]?l.writeBytes(c,y,z-y):B===h.stream.programMapTable[b.h264]?k.writeBytes(c,y,z-y):B===h.stream.programMapTable[b.metadata]&&h.metadataStream.push({pts:q,dts:r,data:c.subarray(y)})}else if(h.stream.pmtPid===B){if(A&&(y+=1+c[y]),2!==c[y],s=!!(1&c[y+5]))for(h.stream.programMapTable={},u=(15&c[y+1])<<8|c[y+2],t=(15&c[y+10])<<8|c[y+11],u-=t,u-=13,h.stream.programMapTable.pcrPid=(31&c[y+8])<<8|c[y+9],y+=12+t;u>0;){if(v=c[y+0],w=(31&c[y+1])<<8|c[y+2],v===b.h264&&h.stream.programMapTable[v]&&h.stream.programMapTable[v]!==w)throw new Error("Program has more than 1 video stream");if(v===b.adts&&h.stream.programMapTable[v]&&h.stream.programMapTable[v]!==w)throw new Error("Program has more than 1 audio Stream");h.stream.programMapTable[v]=w,x=(15&c[y+3])<<8|c[y+4],v===b.metadata&&(h.metadataStream.descriptor=new Uint8Array(c.subarray(y+5,y+5+x))),y+=5+x,u-=5+x}}else h.stream.networkPid===B||17===B||8191===B||h.stream.programMapTable.pcrPid;return!0},h.getTags=function(){return k.tags},h.stats={h264Tags:function(){return k.tags.length},minVideoPts:function(){return k.tags[0].pts},maxVideoPts:function(){return k.tags[k.tags.length-1].pts},aacTags:function(){return l.tags.length},minAudioPts:function(){return l.tags[0].pts},maxAudioPts:function(){return l.tags[l.tags.length-1].pts}}},muxjs.SegmentParser.MP2T_PACKET_LENGTH=a=188,muxjs.SegmentParser.STREAM_TYPES=b={h264:27,adts:15,metadata:21},muxjs.mp2t=muxjs.mp2t||{},muxjs.mp2t.H264_STREAM_TYPE=b.h264,muxjs.mp2t.ADTS_STREAM_TYPE=b.adts,muxjs.mp2t.METADATA_STREAM_TYPE=b.metadata}(window),function(a,b){"use strict";var c,d,e,f,g,h,i,j,k=0,l=videojs.EventTarget,m="blob:vjs-media-source/";j=a.WebKitDataCue||a.VTTCue,i=function(a){Object.defineProperties(a.frame,{id:{get:function(){return videojs.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),a.value.key}},value:{get:function(){return videojs.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),a.value.data}},privateData:{get:function(){return videojs.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),a.value.data}}})},c={mode:"auto"},videojs.MediaSource=videojs.extend(l,{constructor:function(b){var d;return this.settings_=videojs.mergeOptions(c,b),"auto"===this.settings_.mode&&videojs.MediaSource.supportsNativeMediaSources()||"html5"===this.settings_.mode?(d=new a.MediaSource,e(d),d.addEventListener("sourceopen",function(){var a=document.querySelector('[src="'+d.url_+'"]');(a||!a.parentNode)&&(d.player_=videojs(a.parentNode))}),d):new videojs.FlashMediaSource}}),videojs.MediaSource.supportsNativeMediaSources=function(){return!!a.MediaSource},e=function(a){a.virtualBuffers=[],a.addSourceBuffer_=a.addSourceBuffer,a.addSourceBuffer=f},f=function(a){var b,c;return/^video\/mp2t/i.test(a)?(c=a.split(";").slice(1).join(";"),c=c.replace(/avc1\.(\d+)\.(\d+)/i,function(a,b,c){var d=("00"+Number(b).toString(16)).slice(-2),e=("00"+Number(c).toString(16)).slice(-2);return"avc1."+d+"00"+e}),b=new d(this,c),this.virtualBuffers.push(b),b):this.addSourceBuffer_(a)},g=function(a,b,c){return function(){return a[b]&&a[b].updating?void 0:a.trigger(c)}},d=videojs.extend(l,{constructor:function(a,b){var c=this;this.timestampOffset_=0,this.pendingBuffers_=[],this.bufferUpdating_=!1,this.transmuxer_=new Worker(URL.createObjectURL(new Blob(['var muxjs={},transmuxer,initOptions={};!function(a,b){b.ExpGolomb=function(a){var b=a.byteLength,c=0,d=0;this.length=function(){return 8*b},this.bitsAvailable=function(){return 8*b+d},this.loadWord=function(){var e=a.byteLength-b,f=new Uint8Array(4),g=Math.min(4,b);if(0===g)throw new Error("no bytes available");f.set(a.subarray(e,e+g)),c=new DataView(f.buffer).getUint32(0),d=8*g,b-=g},this.skipBits=function(a){var e;d>a?(c<<=a,d-=a):(a-=d,e=Math.floor(a/8),a-=8*e,b-=e,this.loadWord(),c<<=a,d-=a)},this.readBits=function(a){var e=Math.min(d,a),f=c>>>32-e;return console.assert(32>a,"Cannot read more than 32 bits at a time"),d-=e,d>0?c<<=e:b>0&&this.loadWord(),e=a-e,e>0?f<a;++a)if(0!==(c&2147483648>>>a))return c<<=a,d-=a,a;return this.loadWord(),a+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var a=this.skipLeadingZeros();return this.readBits(a+1)-1},this.readExpGolomb=function(){var a=this.readUnsignedExpGolomb();return 1&a?1+a>>>1:-1*(a>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()}}(this,this.muxjs),function(a,b,c){"use strict";var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P;O=a.Uint8Array,P=a.DataView,function(){var a;A={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],smhd:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],styp:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[]};for(a in A)A.hasOwnProperty(a)&&(A[a]=[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)]);B=new O(["i".charCodeAt(0),"s".charCodeAt(0),"o".charCodeAt(0),"m".charCodeAt(0)]),D=new O(["a".charCodeAt(0),"v".charCodeAt(0),"c".charCodeAt(0),"1".charCodeAt(0)]),C=new O([0,0,0,1]),E=new O([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),F=new O([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),G={video:E,audio:F},J=new O([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),I=new O([0,0,0,0,0,0,0,0]),K=new O([0,0,0,0,0,0,0,0]),L=K,M=new O([0,0,0,0,0,0,0,0,0,0,0,0]),N=K,H=new O([0,0,0,1,0,0,0,0,0,0,0,0])}(),d=function(a){var b,c,d,e=[],f=0;for(b=1;b>>1,a.samplingfrequencyindex<<7|a.channelcount<<3,6,1,2]))},g=function(){return d(A.ftyp,B,C,B,D)},s=function(a){return d(A.hdlr,G[a])},h=function(a){return d(A.mdat,a)},r=function(a){var b=new O([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,a.duration>>>24&255,a.duration>>>16&255,a.duration>>>8&255,255&a.duration,85,196,0,0]);return a.samplerate&&(b[12]=a.samplerate>>>24&255,b[13]=a.samplerate>>>16&255,b[14]=a.samplerate>>>8&255,b[15]=255&a.samplerate),d(A.mdhd,b)},q=function(a){return d(A.mdia,r(a),s(a.type),j(a))},i=function(a){return d(A.mfhd,new O([0,0,0,0,(4278190080&a)>>24,(16711680&a)>>16,(65280&a)>>8,255&a]))},j=function(a){return d(A.minf,"video"===a.type?d(A.vmhd,H):d(A.smhd,I),e(),u(a))},k=function(a,b){for(var c=[],e=b.length;e--;)c[e]=x(b[e]);return d.apply(null,[A.moof,i(a)].concat(c))},l=function(a){for(var b=a.length,c=[];b--;)c[b]=o(a[b]);return d.apply(null,[A.moov,n(4294967295)].concat(c).concat(m(a)))},m=function(a){for(var b=a.length,c=[];b--;)c[b]=y(a[b]);return d.apply(null,[A.mvex].concat(c))},n=function(a){var b=new O([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&a)>>24,(16711680&a)>>16,(65280&a)>>8,255&a,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return d(A.mvhd,b)},t=function(a){var b,c,e=a.samples||[],f=new O(4+e.length);for(c=0;c>>8),f.push(255&c[b].byteLength),f=f.concat(Array.prototype.slice.call(c[b]));for(b=0;b>>8),g.push(255&e[b].byteLength),g=g.concat(Array.prototype.slice.call(e[b]));return d(A.avc1,new O([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&a.width)>>8,255&a.width,(65280&a.height)>>8,255&a.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),d(A.avcC,new O([1,a.profileIdc,a.profileCompatibility,a.levelIdc,255].concat([c.length]).concat(f).concat([e.length]).concat(g))),d(A.btrt,new O([0,28,156,128,0,45,198,192,0,45,198,192])))},b=function(a){return d(A.mp4a,new O([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&a.channelcount)>>8,255&a.channelcount,(65280&a.samplesize)>>8,255&a.samplesize,0,0,0,0,(65280&a.samplerate)>>8,255&a.samplerate,0,0]),f(a))}}(),w=function(){return d(A.styp,B,C,B)},p=function(a){var b=new O([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,0,(4278190080&a.duration)>>24,(16711680&a.duration)>>16,(65280&a.duration)>>8,255&a.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&a.width)>>8,255&a.width,0,0,(65280&a.height)>>8,255&a.height,0,0]);return d(A.tkhd,b)},x=function(a){var b,c,e,f,g;return b=d(A.tfhd,new O([0,0,0,58,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),c=d(A.tfdt,new O([0,0,0,0,a.baseMediaDecodeTime>>>24&255,a.baseMediaDecodeTime>>>16&255,a.baseMediaDecodeTime>>>8&255,255&a.baseMediaDecodeTime])),g=88,"audio"===a.type?(e=z(a,g),d(A.traf,b,c,e)):(f=t(a),e=z(a,f.length+g),d(A.traf,b,c,e,f))},o=function(a){return a.duration=a.duration||4294967295,d(A.trak,p(a),q(a))},y=function(a){var b=new O([0,0,0,0,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return"video"!==a.type&&(b[b.length-1]=0),d(A.trex,b)},function(){var a,b,e;e=function(a,b){var d=0,e=0,f=0,g=0;return a.length&&(a[0].duration!==c&&(d=1),a[0].size!==c&&(e=2),a[0].flags!==c&&(f=4),a[0].compositionTimeOffset!==c&&(g=8)),[0,0,d|e|f|g,1,(4278190080&a.length)>>>24,(16711680&a.length)>>>16,(65280&a.length)>>>8,255&a.length,(4278190080&b)>>>24,(16711680&b)>>>16,(65280&b)>>>8,255&b]},b=function(a,b){var c,f,g,h;for(f=a.samples||[],b+=20+16*f.length,c=e(f,b),h=0;h>>24,(16711680&g.duration)>>>16,(65280&g.duration)>>>8,255&g.duration,(4278190080&g.size)>>>24,(16711680&g.size)>>>16,(65280&g.size)>>>8,255&g.size,g.flags.isLeading<<2|g.flags.dependsOn,g.flags.isDependedOn<<6|g.flags.hasRedundancy<<4|g.flags.paddingValue<<1|g.flags.isNonSyncSample,61440&g.flags.degradationPriority,15&g.flags.degradationPriority,(4278190080&g.compositionTimeOffset)>>>24,(16711680&g.compositionTimeOffset)>>>16,(65280&g.compositionTimeOffset)>>>8,255&g.compositionTimeOffset]);return d(A.trun,new O(c))},a=function(a,b){var c,f,g,h;for(f=a.samples||[],b+=20+8*f.length,c=e(f,b),h=0;h>>24,(16711680&g.duration)>>>16,(65280&g.duration)>>>8,255&g.duration,(4278190080&g.size)>>>24,(16711680&g.size)>>>16,(65280&g.size)>>>8,255&g.size]);return d(A.trun,new O(c))},z=function(c,d){return"audio"===c.type?a(c,d):b(c,d)}}(),b.mp4={ftyp:g,mdat:h,moof:k,moov:l,initSegment:function(a){var b,c=g(),d=l(a);return b=new O(c.byteLength+d.byteLength),b.set(c),b.set(d,c.byteLength),b}}}(this,this.muxjs),function(a,b){var c=function(){this.init=function(){var a={};this.on=function(b,c){a[b]||(a[b]=[]),a[b].push(c)},this.off=function(b,c){var d;return a[b]?(d=a[b].indexOf(c),a[b].splice(d,1),d>-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else{for(f=[],d=arguments.length,d=1;dd;++d)c[d].apply(this,f)}},this.dispose=function(){a={}}}};c.prototype.pipe=function(a){return this.on("data",function(b){a.push(b)}),this.on("done",function(){a.flush()}),a},c.prototype.push=function(a){this.trigger("data",a)},c.prototype.flush=function(){this.trigger("done")},a.muxjs=a.muxjs||{},a.muxjs.Stream=c}(this),function(a,b,c){"use strict";var d,e=function(a,b,c){var d,e="";for(d=b;c>d;d++)e+="%"+("00"+a[d].toString(16)).slice(-2);return e},f=function(b,c,d){return a.decodeURIComponent(e(b,c,d))},g=function(b,c,d){return a.unescape(e(b,c,d))},h={TXXX:function(a){var b;if(3===a.data[0]){for(b=1;bi)){for(b={data:new Uint8Array(f),frames:[],pts:g[0].pts,dts:g[0].dts},k=0;f>k;)b.data.set(g[0].data,k),k+=g[0].data.byteLength,i-=g[0].data.byteLength,g.shift();c=10,64&b.data[5]&&(c+=4,c+=b.data[10]<<24|b.data[11]<<16|b.data[12]<<8|b.data[13],f-=b.data[16]<<24|b.data[17]<<16|b.data[18]<<8|b.data[19]);do{if(d=b.data[c+4]<<24|b.data[c+5]<<16|b.data[c+6]<<8|b.data[c+7],1>d)return console.log("Malformed ID3 frame encountered. Skipping metadata parsing.");j={id:String.fromCharCode(b.data[c],b.data[c+1],b.data[c+2],b.data[c+3]),data:b.data.subarray(c+10,c+d+10)},j.key=j.id,h[j.id]&&h[j.id](j),b.frames.push(j),c+=10,c+=d}while(f>c);this.trigger("data",b)}}}},d.prototype=new b.Stream,b.mp2t=b.mp2t||{},b.mp2t.MetadataStream=d}(this,this.muxjs),function(a,b,c){"use strict";var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;q=188,v=71,r=27,s=15,t=21,u=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],w=b.mp4,d=function(){var a=new Uint8Array(q),b=0;d.prototype.init.call(this),this.push=function(c){var d,e=0,f=q;for(b?(d=new Uint8Array(c.byteLength+b),d.set(a),d.set(c,b),b=0):d=c;ff;)g.programMapTable[(31&a[f+1])<<8|a[f+2]]=a[f],f+=((15&a[f+3])<<8|a[f+4])+5;for(b.programMapTable=g.programMapTable;g.packetsWaitingForPmt.length;)g.processPes_.apply(g,g.packetsWaitingForPmt.shift())}},f=function(a,b){var c;return b.payloadUnitStartIndicator?(b.dataAlignmentIndicator=0!==(4&a[6]),c=a[7],192&c&&(b.pts=(14&a[9])<<28|(255&a[10])<<21|(254&a[11])<<13|(255&a[12])<<6|(254&a[13])>>>2,b.pts*=2,b.pts+=2&a[13],b.dts=b.pts,64&c&&(b.dts=(14&a[14])<<28|(255&a[15])<<21|(254&a[16])<<13|(255&a[17])<<6|(254&a[18])>>>2,b.dts*=2,b.dts+=2&a[18])),void(b.data=a.subarray(9+a[8]))):void(b.data=a)},this.push=function(b){var d={},e=4;d.payloadUnitStartIndicator=!!(64&b[1]),d.pid=31&b[1],d.pid<<=8,d.pid|=b[2],(48&b[3])>>>4>1&&(e+=b[e]+1),0===d.pid?(d.type="pat",a(b.subarray(e),d),this.trigger("data",d)):d.pid===this.pmtPid?(d.type="pmt",a(b.subarray(e),d),this.trigger("data",d)):this.programMapTable===c?this.packetsWaitingForPmt.push([b,e,d]):this.processPes_(b,e,d)},this.processPes_=function(a,b,c){c.streamType=this.programMapTable[c.pid],c.type="pes",f(a.subarray(b),c),this.trigger("data",c)}},e.prototype=new b.Stream,e.STREAM_TYPES={h264:27,adts:15},f=function(){var a,b={data:[],size:0},c={data:[],size:0},d={data:[],size:0},e=function(b,c){var d,e={type:c,data:new Uint8Array(b.size)},f=0;if(b.data.length){for(e.trackId=b.data[0].pid,e.pts=b.data[0].pts,e.dts=b.data[0].dts;b.data.length;)d=b.data.shift(),e.data.set(d.data,f),f+=d.data.byteLength;b.size=0,a.trigger("data",e)}};f.prototype.init.call(this),a=this,this.push=function(f){({pat:function(){},pes:function(){var a,g;switch(f.streamType){case r:a=b,g="video";break;case s:a=c,g="audio";break;case t:a=d,g="timed-metadata";break;default:return}f.payloadUnitStartIndicator&&e(a,g),a.data.push(f),a.size+=f.data.byteLength},pmt:function(){var b,c,d={type:"metadata",tracks:[]},e=f.programMapTable;for(b in e)e.hasOwnProperty(b)&&(c={timelineStartInfo:{}},c.id=+b,e[b]===r?(c.codec="avc",c.type="video"):e[b]===s&&(c.codec="adts",c.type="audio"),d.tracks.push(c));a.trigger("data",d)}})[f.type]()},this.flush=function(){e(b,"video"),e(c,"audio"),e(d,"timed-metadata"),this.trigger("done")}},f.prototype=new b.Stream,j=function(){var a,b,d=0;j.prototype.init.call(this),a=this,this.push=function(a){var e,f,g,h;if("audio"===a.type)for(b?(h=b,b=new Uint8Array(h.byteLength+a.data.byteLength),b.set(h),b.set(a.data,h.byteLength)):b=a.data;d+5>5,g=d+e,b.byteLength>>6&3)+1,channelcount:(1&b[d+2])<<3|(192&b[d+3])>>>6,samplerate:u[(60&b[d+2])>>>2],samplingfrequencyindex:(60&b[d+2])>>>2,samplesize:16,data:b.subarray(d+7+f,g)}),b.byteLength===g)return void(b=c);b=b.subarray(g),d=0}else console.log("adts desync"),d++}},j.prototype=new b.Stream,h=function(a){var b=[],d=0,e=0,f=0;h.prototype.init.call(this),this.push=function(e){n(a,e),a&&a.channelcount===c&&(a.audioobjecttype=e.audioobjecttype,a.channelcount=e.channelcount,a.samplerate=e.samplerate,a.samplingfrequencyindex=e.samplingfrequencyindex,a.samplesize=e.samplesize),b.push(e),d+=e.data.byteLength},this.setEarliestDts=function(a){f=a},this.flush=function(){var c,g,h,i,j,k,l;if(0===d)return void this.trigger("done");for(a.minSegmentDts=f?(a.minSegmentDts=Math.min(a.minSegmentDts,b.dts),!0):(d-=b.data.byteLength,!1)})),h=new Uint8Array(d),a.samples=[],j=0;b.length;)g=b[0],i={size:g.data.byteLength,duration:1024},a.samples.push(i),h.set(g.data,j),j+=g.data.byteLength,b.shift();d=0,k=w.mdat(h),p(a),l=w.moof(e,[a]),c=new Uint8Array(l.byteLength+k.byteLength),e++,c.set(l),c.set(k,l.byteLength),o(a),this.trigger("data",{track:a,boxes:c}),this.trigger("done")}},h.prototype=new b.Stream,l=function(){var a,b,c=0;l.prototype.init.call(this),this.push=function(d){var e;for(b?(e=new Uint8Array(b.byteLength+d.data.byteLength),e.set(b),e.set(d.data,b.byteLength),b=e):b=d.data;c3&&this.trigger("data",b.subarray(c+3)),b=null,c=0,this.trigger("done")}},l.prototype=new b.Stream,k=function(){var a,c,d,e,f,g,h,i=new l;k.prototype.init.call(this),a=this,this.push=function(a){"video"===a.type&&(c=a.trackId,d=a.pts,e=a.dts,i.push(a))},i.on("data",function(b){var h={trackId:c,pts:d,dts:e,data:b};switch(31&b[0]){case 5:h.nalUnitType="slice_layer_without_partitioning_rbsp_idr";break;case 6:h.nalUnitType="sei_rbsp";break;case 7:h.nalUnitType="seq_parameter_set_rbsp",h.escapedRBSP=f(b.subarray(1)),h.config=g(h.escapedRBSP);break;case 8:h.nalUnitType="pic_parameter_set_rbsp";break;case 9:h.nalUnitType="access_unit_delimiter_rbsp"}a.trigger("data",h)}),i.on("done",function(){a.trigger("done")}),this.flush=function(){i.flush()},h=function(a,b){var c,d,e=8,f=8;for(c=0;a>c;c++)0!==f&&(d=b.readExpGolomb(),f=(e+d+256)%256),e=0===f?e:f},f=function(a){for(var b,c,d=a.byteLength,e=[],f=1;d-2>f;)0===a[f]&&0===a[f+1]&&3===a[f+2]?(e.push(f+2),f+=2):f++;if(0===e.length)return a;b=d-e.length,c=new Uint8Array(b);var g=0;for(f=0;b>f;g++,f++)g===e[0]&&(g++,e.shift()),c[f]=a[g];return c},g=function(a){var c,d,e,f,g,i,j,k,l,m,n,o,p=0,q=0,r=0,s=0;if(c=new b.ExpGolomb(a),d=c.readUnsignedByte(),f=c.readUnsignedByte(),e=c.readUnsignedByte(),c.skipUnsignedExpGolomb(),(100===d||110===d||122===d||244===d||44===d||83===d||86===d||118===d||128===d||138===d||139===d||134===d)&&(g=c.readUnsignedExpGolomb(),3===g&&c.skipBits(1),c.skipUnsignedExpGolomb(),c.skipUnsignedExpGolomb(),c.skipBits(1),c.readBoolean()))for(n=3!==g?8:12,o=0;n>o;o++)c.readBoolean()&&(6>o?h(16,c):h(64,c));if(c.skipUnsignedExpGolomb(),i=c.readUnsignedExpGolomb(),0===i)c.readUnsignedExpGolomb();else if(1===i)for(c.skipBits(1),c.skipExpGolomb(),c.skipExpGolomb(),j=c.readUnsignedExpGolomb(),o=0;j>o;o++)c.skipExpGolomb();return c.skipUnsignedExpGolomb(),c.skipBits(1),k=c.readUnsignedExpGolomb(),l=c.readUnsignedExpGolomb(),m=c.readBits(1),0===m&&c.skipBits(1),c.skipBits(1),c.readBoolean()&&(p=c.readUnsignedExpGolomb(),q=c.readUnsignedExpGolomb(),r=c.readUnsignedExpGolomb(),s=c.readUnsignedExpGolomb()),{profileIdc:d,levelIdc:e,profileCompatibility:f,width:16*(k+1)-2*p-2*q,height:(2-m)*(l+1)*16-2*r-2*s}}},k.prototype=new b.Stream,g=function(a){var b,d,e=0,f=[],h=0;g.prototype.init.call(this),delete a.minPTS,this.push=function(c){n(a,c),"seq_parameter_set_rbsp"!==c.nalUnitType||b||(b=c.config,a.width=b.width,a.height=b.height,a.sps=[c.data],a.profileIdc=b.profileIdc,a.levelIdc=b.levelIdc,a.profileCompatibility=b.profileCompatibility),"pic_parameter_set_rbsp"!==c.nalUnitType||d||(d=c.data,a.pps=[c.data]),f.push(c),h+=c.data.byteLength},this.flush=function(){var g,i,j,k,l,m,n,q,r;if(0!==h){for(n=new Uint8Array(h+4*f.length),q=new DataView(n.buffer),a.samples=[],r={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0}},m=0;f.length;)i=f[0],"access_unit_delimiter_rbsp"===i.nalUnitType&&(g&&(r.duration=i.dts-g.dts,a.samples.push(r)),r={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0},compositionTimeOffset:i.pts-i.dts},g=i),"slice_layer_without_partitioning_rbsp_idr"===i.nalUnitType&&(r.flags.dependsOn=2),r.size+=4,r.size+=i.data.byteLength,q.setUint32(m,i.data.byteLength),m+=4,n.set(i.data,m),m+=i.data.byteLength,f.shift();a.samples.length&&(r.duration=a.samples[a.samples.length-1].duration),a.samples.push(r),h=0,k=w.mdat(n),p(a),this.trigger("timelineStartInfo",a.timelineStartInfo),j=w.moof(e,[a]),l=new Uint8Array(j.byteLength+k.byteLength),e++,l.set(j),l.set(k,j.byteLength),o(a),this.trigger("data",{track:a,boxes:l}),b=c,d=c,this.trigger("done")}}},g.prototype=new b.Stream,n=function(a,b){"number"==typeof b.pts&&(a.timelineStartInfo.pts===c?a.timelineStartInfo.pts=b.pts:a.timelineStartInfo.pts=Math.min(a.timelineStartInfo.pts,b.pts)),"number"==typeof b.dts&&(a.timelineStartInfo.dts===c?a.timelineStartInfo.dts=b.dts:a.timelineStartInfo.dts=Math.min(a.timelineStartInfo.dts,b.dts),a.minSegmentDts===c?a.minSegmentDts=b.dts:a.minSegmentDts=Math.min(a.minSegmentDts,b.dts),a.maxSegmentDts===c?a.maxSegmentDts=b.dts:a.maxSegmentDts=Math.max(a.maxSegmentDts,b.dts))},o=function(a){delete a.minSegmentDts,delete a.maxSegmentDts},p=function(a){var b,c=9e4;a.baseMediaDecodeTime=a.minSegmentDts-a.timelineStartInfo.dts,"audio"===a.type&&(b=a.samplerate/c,a.baseMediaDecodeTime*=b,a.baseMediaDecodeTime=Math.floor(a.baseMediaDecodeTime))},m=function(a){this.numberOfTracks=0,this.metadataStream=a.metadataStream,"undefined"!=typeof a.remux?this.remuxTracks=!!a.remux:this.remuxTracks=!0,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,m.prototype.init.call(this),this.push=function(a){return a.text?this.pendingCaptions.push(a):a.frames?this.pendingMetadata.push(a):(this.pendingTracks.push(a.track),this.pendingBoxes.push(a.boxes),this.pendingBytes+=a.boxes.byteLength,"video"===a.track.type&&(this.videoTrack=a.track),void("audio"===a.track.type&&(this.audioTrack=a.track)))}},m.prototype=new b.Stream,m.prototype.flush=function(){var a,c,d,e,f=0,g={captions:[],metadata:[]},h=0;if(!(0===this.pendingTracks.length||this.remuxTracks&&this.pendingTracks.lengthc;c++)e=3*c,f={type:3&b[e+2],pts:a},4&b[e+2]&&(f.ccData=b[e+3]<<8|b[e+4],g.push(f));return g},h=function(){h.prototype.init.call(this),this.field1_=new v,this.field1_.on("data",this.trigger.bind(this,"data"))};h.prototype=new b.Stream,h.prototype.push=function(a){var b,c,h,i;if("sei_rbsp"===a.nalUnitType&&(b=e(a.data),b.payloadType===d&&(c=f(b))))for(h=g(a.pts,c),i=0;i>>8,16===(240&d))return;this[this.mode_](a.pts,d,255&b)}}};v.prototype=new b.Stream,v.prototype.flushDisplayed=function(a){var b,c;for(c=0;ca;a++)this.displayed_[a]=this.displayed_[a+1];this.displayed_[t]=""},b.mp2t=b.mp2t||{},b.mp2t.CaptionStream=h,b.mp2t.Cea608Stream=v}(this,this.muxjs);var wireTransmuxerEvents=function(a){a.on("data",function(a){a.data=a.data.buffer,postMessage({action:"data",segment:a},[a.data])}),a.captionStream&&a.captionStream.on("data",function(a){postMessage({action:"caption",data:a})}),a.on("done",function(a){postMessage({action:"done"})})},messageHandlers={init:function(a){initOptions=a&&a.options||{},this.defaultInit()},defaultInit:function(){transmuxer=new muxjs.mp2t.Transmuxer(initOptions),wireTransmuxerEvents(transmuxer)},push:function(a){var b=new Uint8Array(a.data);transmuxer.push(b)},resetTransmuxer:function(a){this.defaultInit()},flush:function(a){transmuxer.flush()}};onmessage=function(a){transmuxer||"init"===a.data.action||messageHandlers.defaultInit(),a.data&&a.data.action&&messageHandlers[a.data.action]&&messageHandlers[a.data.action](a.data)};'],{ type:"application/javascript"}))),this.transmuxer_.onmessage=function(d){if("data"===d.data.action){var e=d.data.segment;return e.data=new Uint8Array(e.data),"video"===e.type?c.videoBuffer_||(c.videoBuffer_=a.addSourceBuffer_("video/mp4;"+(b||"codecs=avc1.4d400d")),c.videoBuffer_.timestampOffset=c.timestampOffset_,c.videoBuffer_.addEventListener("updatestart",g(c,"audioBuffer_","updatestart")),c.videoBuffer_.addEventListener("update",g(c,"audioBuffer_","update")),c.videoBuffer_.addEventListener("updateend",g(c,"audioBuffer_","updateend"))):"audio"===e.type?c.audioBuffer_||(c.audioBuffer_=a.addSourceBuffer_("audio/mp4;"+(b||"codecs=mp4a.40.2")),c.audioBuffer_.timestampOffset=c.timestampOffset_,c.audioBuffer_.addEventListener("updatestart",g(c,"videoBuffer_","updatestart")),c.audioBuffer_.addEventListener("update",g(c,"videoBuffer_","update")),c.audioBuffer_.addEventListener("updateend",g(c,"videoBuffer_","updateend"))):"combined"===e.type&&(c.videoBuffer_||(c.videoBuffer_=a.addSourceBuffer_("video/mp4;"+(b||"codecs=avc1.4d400d, mp4a.40.2")),c.videoBuffer_.timestampOffset=c.timestampOffset_,c.videoBuffer_.addEventListener("updatestart",g(c,"videoBuffer_","updatestart")),c.videoBuffer_.addEventListener("update",g(c,"videoBuffer_","update")),c.videoBuffer_.addEventListener("updateend",g(c,"videoBuffer_","updateend")))),e.captions&&e.captions.length&&!c.inbandTextTrack_&&(c.inbandTextTrack_=a.player_.addTextTrack("captions")),e.metadata&&e.metadata.length&&!c.metadataTrack_&&(c.metadataTrack_=a.player_.addTextTrack("metadata","Timed Metadata"),c.metadataTrack_.inBandMetadataTrackDispatchType=e.metadata.dispatchType),void c.pendingBuffers_.push(e)}return"done"===d.data.action?void c.processPendingSegments_():void 0},Object.defineProperty(this,"timestampOffset",{get:function(){return this.timestampOffset_},set:function(a){"number"==typeof a&&a>=0&&(this.timestampOffset_=a,this.videoBuffer_&&(this.videoBuffer_.timestampOffset=a),this.audioBuffer_&&(this.audioBuffer_.timestampOffset=a),this.transmuxer_.postMessage({action:"resetTransmuxer"}))}}),Object.defineProperty(this,"updating",{get:function(){return this.bufferUpdating_||this.audioBuffer_&&this.audioBuffer_.updating||this.videoBuffer_&&this.videoBuffer_.updating}}),Object.defineProperty(this,"buffered",{get:function(){var a=null,b=null,c=0,d=[],e=[];if(!(this.videoBuffer_&&0!==this.videoBuffer_.buffered.length||this.audioBuffer_&&0!==this.audioBuffer_.buffered.length))return videojs.createTimeRange();if(!this.videoBuffer_)return this.audioBuffer_.buffered;if(!this.audioBuffer_)return this.audioBuffer_.buffered;for(var f=this.videoBuffer_.buffered,g=this.audioBuffer_.buffered,h=f.length;h--;)d.push({time:f.start(h),type:"start"}),d.push({time:f.end(h),type:"end"});for(h=g.length;h--;)d.push({time:g.start(h),type:"start"}),d.push({time:g.end(h),type:"end"});for(d.sort(function(a,b){return a.time-b.time}),h=0;h=a&&c.removeCue(e)},remove:function(a,b){this.videoBuffer_&&this.videoBuffer_.remove(a,b),this.audioBuffer_&&this.audioBuffer_.remove(a,b),this.removeCuesFromTrack_(a,b,this.metadataTrack_),this.removeCuesFromTrack_(a,b,this.inbandTextTrack_)},processPendingSegments_:function(){var a={video:{segments:[],bytes:0},audio:{segments:[],bytes:0},captions:[],metadata:[]};a=this.pendingBuffers_.reduce(function(a,b){var c=b.type,d=b.data;return"combined"===c&&(c="video"),a[c].segments.push(d),a[c].bytes+=d.byteLength,b.captions&&(a.captions=a.captions.concat(b.captions)),b.metadata&&(a.metadata=a.metadata.concat(b.metadata)),a},a),a.captions.forEach(function(a){this.inbandTextTrack_.addCue(new VTTCue(a.startTime+this.timestampOffset,a.endTime+this.timestampOffset,a.text))},this),a.metadata.forEach(function(a){var b=a.cueTime+this.timestampOffset;a.frames.forEach(function(a){var c=new j(b,b,a.value||a.url||a.data||"");c.frame=a,c.value=a,i(c),this.metadataTrack_.addCue(c)},this)},this),this.concatAndAppendSegments_(a.video,this.videoBuffer_),this.concatAndAppendSegments_(a.audio,this.audioBuffer_),this.pendingBuffers_.length=0,this.bufferUpdating_=!1},concatAndAppendSegments_:function(a,b){var c,d=0;a.bytes&&(c=new Uint8Array(a.bytes),a.segments.forEach(function(a){c.set(a,d),d+=a.byteLength}),b.appendBuffer(c))},abort:function(){this.videoBuffer_&&this.videoBuffer_.abort(),this.audioBuffer_&&this.audioBuffer_.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"resetTransmuxer"}),this.pendingBuffers_.length=0,this.bufferUpdating_=!1}}),videojs.FlashMediaSource=videojs.extend(l,{constructor:function(){var a=this;this.sourceBuffers=[],this.readyState="closed",this.on(["sourceopen","webkitsourceopen"],function(b){this.swfObj=document.getElementById(b.swfId),this.tech_=this.swfObj.tech,this.readyState="open",this.tech_.on("seeking",function(){for(var b=a.sourceBuffers.length;b--;)a.sourceBuffers[b].abort()}),this.swfObj&&this.swfObj.vjs_load()})}}),videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL=4194304,videojs.FlashMediaSource.TICKS_PER_SECOND=60,videojs.FlashMediaSource.prototype.addSourceBuffer=function(a){var b;if(0!==a.indexOf("video/mp2t"))throw new Error("NotSupportedError (Video.js)");return b=new videojs.FlashSourceBuffer(this),this.sourceBuffers.push(b),b};try{Object.defineProperty(videojs.FlashMediaSource.prototype,"duration",{get:function(){return this.swfObj?this.swfObj.vjs_getProperty("duration"):0/0},set:function(a){return this.swfObj.vjs_setProperty("duration",a),a}})}catch(n){videojs.FlashMediaSource.prototype.duration=0/0}videojs.FlashMediaSource.prototype.endOfStream=function(a){"network"===a?this.tech_.error(2):"decode"===a&&this.tech_.error(3),this.readyState="ended"},videojs.mediaSources={},videojs.MediaSource.open=function(a,b){var c=videojs.mediaSources[a];if(!c)throw new Error("Media Source not found (Video.js)");c.trigger({type:"sourceopen",swfId:b})},h=function(b){a.setTimeout(b,Math.ceil(1e3/videojs.FlashMediaSource.TICKS_PER_SECOND))},videojs.FlashSourceBuffer=videojs.extend(l,{constructor:function(c){var d;this.buffer_=[],this.bufferSize_=0,this.basePtsOffset_=0/0,this.source=c,this.updating=!1,this.timestampOffset_=0,this.segmentParser_=new b.SegmentParser,d=a.btoa(String.fromCharCode.apply(null,Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))),this.source.swfObj.vjs_appendBuffer(d),Object.defineProperty(this,"timestampOffset",{get:function(){return this.timestampOffset_},set:function(a){"number"==typeof a&&a>=0&&(this.timestampOffset_=a,this.source.swfObj.vjs_discontinuity(),this.basePtsOffset_=0/0)}}),Object.defineProperty(this,"buffered",{get:function(){return videojs.createTimeRange(0,this.source.swfObj.vjs_getProperty("buffered"))}})},appendBuffer:function(a){var b,c;if(this.updating)throw b=new Error("SourceBuffer.append() cannot be called while an update is in progress"),b.name="InvalidStateError",b.code=11,b;0===this.buffer_.length&&h(this.processBuffer_.bind(this)),this.updating=!0,this.source.readyState="open",this.trigger({type:"update"}),c=this.tsToFlv_(a),this.buffer_.push(c),this.bufferSize_+=c.byteLength},abort:function(){this.buffer_=[],this.bufferSize_=0,this.source.swfObj.vjs_abort(),this.updating&&(this.updating=!1,this.trigger({type:"updateend"}))},remove:function(){this.trigger({type:"update"}),this.trigger({type:"updateend"})},processBuffer_:function(){var b,c,d,e,f,g,i;if(this.buffer_.length){for(f=document.hidden?videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL:Math.ceil(videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL/videojs.FlashMediaSource.TICKS_PER_SECOND),e=new Uint8Array(Math.min(f,this.bufferSize_)),c=e.byteLength;c;)b=this.buffer_[0].subarray(0,c),e.set(b,e.byteLength-c),b.byteLengthc;c++)g+=String.fromCharCode(e[c]);i=a.btoa(g),this.source.swfObj.CallFunction(''+i+""),0!==this.bufferSize_?h(this.processBuffer_.bind(this)):(this.updating=!1,this.trigger({type:"updateend"}),"ended"===this.source.readyState&&this.source.swfObj.vjs_endOfStream())}},tsToFlv_:function(a){var b,c,d,e,f=0,g=[],h=this.source.tech_,i=0;for(this.segmentParser_.parseSegmentBinaryData(a),this.segmentParser_.flushTags();this.segmentParser_.tagsAvailable();)g.push(this.segmentParser_.getNextTag());if(isNaN(this.basePtsOffset_)&&g.length&&(this.basePtsOffset_=g[0].pts),h.seeking())for(e=h.currentTime()-this.timestampOffset,e*=1e3,e+=this.basePtsOffset_;i=2},b.Hls=b.extend(i,{constructor:function(a,c){var d,e=this;i.call(this,a),a.options_&&a.options_.playerId&&(d=b(a.options_.playerId),d.hls||Object.defineProperty(d,"hls",{get:function(){return b.log.warn("player.hls is deprecated. Use player.tech.hls instead."),e}})),this.tech_=a,this.source_=c.source,this.mode_=c.mode,this.pendingSegment_=null,this.bytesReceived=0,this.loadingState_="none","none"!==this.tech_.preload()&&(this.loadingState_="meta"),this.segmentBuffer_=[],this.startCheckingBuffer_(),this.on(this.tech_,"seeking",function(){this.setCurrentTime(this.tech_.currentTime())}),this.on(this.tech_,"play",this.play)}}),b.Hls.canPlaySource=function(){return b.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")},b.HlsSourceHandler=function(a){return{canHandleSource:function(a){var c=/^application\/(?:x-|vnd\.apple\.)mpegurl/i;return b.Hls.supportsNativeHls?!1:c.test(a.type)},handleSource:function(c,d){return"flash"===a&&d.setTimeout(function(){d.trigger("loadstart")},1),d.hls=new b.Hls(d,{source:c,mode:a}),d.hls.src(c.src),d.hls}}},b.MediaSource.supportsNativeMediaSources()&&b.getComponent("Html5").registerSourceHandler(b.HlsSourceHandler("html5")),b.getComponent("Flash").registerSourceHandler(b.HlsSourceHandler("flash")),b.Hls.GOAL_BUFFER_LENGTH=30,b.Hls.prototype.src=function(a){var c;a&&(this.mediaSource=new b.MediaSource({mode:this.mode_}),this.segmentBuffer_=[],this.mediaSource.addEventListener("sourceopen",this.handleSourceOpen.bind(this)),this.mediaIndex=0,this.options_={},this.source_.withCredentials!==d?this.options_.withCredentials=this.source_.withCredentials:b.options.hls&&(this.options_.withCredentials=b.options.hls.withCredentials),this.playlists=new b.Hls.PlaylistLoader(this.source_.src,this.options_.withCredentials),this.playlists.on("loadedmetadata",function(){var a,b,e,f,g,h,i;c=this.playlists.media(),c.endList&&"metadata"!==this.tech_.preload()&&"none"!==this.tech_.preload()&&(this.loadingState_="segments"),this.bandwidth===d&&this.setBandwidth({bandwidth:5*this.playlists.bandwidth}),this.setupSourceBuffer_(),a=this.selectPlaylist(),e=c.attributes&&c.attributes.BANDWIDTH||0,f=a.attributes&&a.attributes.BANDWIDTH||0,g=c.segments&&c.segments[this.mediaIndex].duration||c.targetDuration,h=g*f/this.bandwidth,h||(h=1/0),i=10,f>e&&i>=h?(this.playlists.media(a),b=function(){this.setupFirstPlay(),this.fillBuffer(),this.tech_.trigger("loadedmetadata"),this.playlists.off("loadedplaylist",b)}.bind(this),this.playlists.on("loadedplaylist",b)):(this.setupFirstPlay(),this.fillBuffer(),this.tech_.trigger("loadedmetadata"))}.bind(this)),this.playlists.on("error",function(){2===this.playlists.error.code?this.mediaSource.endOfStream("network"):4===this.playlists.error.code&&this.mediaSource.endOfStream("decode"),this.tech_.error(this.playlists.error)}.bind(this)),this.playlists.on("loadedplaylist",function(){var a=this.playlists.media();a&&(this.updateDuration(this.playlists.media()),this.mediaIndex=b.Hls.translateMediaIndex(this.mediaIndex,c,a),c=a,this.fetchKeys_())}.bind(this)),this.playlists.on("mediachange",function(){e&&this.cancelKeyXhr(),this.tech_.trigger({type:"mediachange",bubbles:!0})}.bind(this)),this.tech_.el()&&this.tech_.src(b.URL.createObjectURL(this.mediaSource)))},b.Hls.getMediaIndexForLive_=function(a){if(!a.segments)return 0;for(var b=a.segments.length,c=0,d=3*(a.targetDuration||10);d>c&&b>0;)c+=a.segments[b-1].duration,b--;return b},b.Hls.prototype.handleSourceOpen=function(){this.sourceBuffer||this.setupSourceBuffer_(),this.tech_.autoplay()&&this.play()},b.Hls.prototype.setupSourceBuffer_=function(){var a,b=this.playlists.media();b&&"open"===this.mediaSource.readyState&&(a="video/mp2t",b.attributes&&b.attributes.CODECS&&(a+='; codecs="'+b.attributes.CODECS+'"'),this.sourceBuffer=this.mediaSource.addSourceBuffer(a),this.sourceBuffer.addEventListener("updateend",function(){var a,b,c=this.pendingSegment_;if(this.pendingSegment_=null,this.duration()!==1/0&&this.mediaIndex===this.playlists.media().segments.length&&this.mediaSource.endOfStream(),2===this.tech_.buffered().length&&c.playlist===this.playlists.media())for(a=this.tech_.buffered().length;a--;)if(this.tech_.currentTime()=d&&a.removeCue(a.cues[e])})},b.Hls.prototype.addCuesForMetadata_=function(c){var d,e,f,g,h,i,j,k,l;for(j=this.playlists.expired_,j+=b.Hls.Playlist.duration(c.playlist,c.playlist.mediaSequence,c.playlist.mediaSequence+c.mediaIndex),i=c.playlist.segments[c.mediaIndex],h=Math.min(isFinite(i.minVideoPts)?i.minVideoPts:1/0,isFinite(i.minAudioPts)?i.minAudioPts:1/0);c.pendingMetadata.length;){for(g=c.pendingMetadata[0].metadata,k=c.pendingMetadata[0].textTrack,d=0;d=e)return a=b.createTimeRanges(f.start(c),f.end(c)),a.indexOf=c,a;return a=b.createTimeRanges(),a.indexOf=-1,a},b.Hls.prototype.fillBuffer=function(a){var c,d,e=this.tech_,f=e.currentTime(),g=this.findCurrentBuffered_(),h=0;"segments"===this.loadingState_&&e.currentSrc()&&this.playlists&&(this.segmentXhr_||"HAVE_NOTHING"!==this.playlists.state&&this.playlists.media()&&this.playlists.media().segments&&"SWITCHING_MEDIA"!==this.playlists.state&&(c=this.playlists.media().segments[this.mediaIndex],c&&(g&&g.length&&(h=Math.max(0,g.end(0)-f)),"number"!=typeof a&&h>=b.Hls.GOAL_BUFFER_LENGTH||(d=this.playlistUriToUrl(c.uri),this.loadSegment(d,a)))))},b.Hls.prototype.playlistUriToUrl=function(a){var b;return b=this.playlists.media().uri===this.source_.src?g(this.source_.src,a):g(g(this.source_.src,this.playlists.media().uri||""),a)},b.Hls.prototype.setBandwidth=function(a){this.segmentXhrTime=a.roundTripTime,this.bandwidth=a.bandwidth,this.bytesReceived+=a.bytesReceived||0,this.tech_.trigger("bandwidthupdate")},b.Hls.prototype.loadSegment=function(a,c){var d=this;this.segmentXhr_=b.Hls.xhr({uri:a,responseType:"arraybuffer",withCredentials:this.source_.withCredentials},function(b,e){var f;return d.segmentXhr_=null,e.timedout?(d.bandwidth=1,d.playlists.media(d.selectPlaylist())):!e.aborted&&b?(d.error={status:e.status,message:"HLS segment request error at URL: "+a,code:e.status>=500?4:2},void d.mediaIndex++):void(e.response&&(d.setBandwidth(e),f={mediaIndex:d.mediaIndex,playlist:d.playlists.media(),offset:c,bytes:null,encryptedBytes:null,decrypter:null,pendingMetadata:[]},f.playlist.segments[f.mediaIndex].key?f.encryptedBytes=new Uint8Array(e.response):f.bytes=new Uint8Array(e.response),d.segmentBuffer_.push(f),d.tech_.trigger("progress"),d.drainBuffer(),d.mediaIndex++,d.playlists.media(d.selectPlaylist())))})},b.Hls.prototype.drainBuffer=function(a){var c,d,e,g,h,i,j,k,l=0,m=0!==this.tech_.buffered().length,n=this.findCurrentBuffered_(),o=!(n&&n.length),p=this.segmentBuffer_;if(p.length&&this.sourceBuffer&&!this.sourceBuffer.updating){if(c=p[0],d=c.mediaIndex,e=c.playlist,g=c.offset,h=c.bytes,i=e.segments[d],i.key&&!h)return f(i.key)?p.shift():i.key.bytes?c.decrypter?void 0:(k=i.key.iv||new Uint32Array([0,0,0,d+e.mediaSequence]),j=new b.Hls.Decrypter(c.encryptedBytes,i.key.bytes,k,function(a,b){c.bytes=b}),void(c.decrypter=j)):this.fetchKeys_();if(a=a||{},this.addCuesForMetadata_(c),this.tech_.seeking()&&o){if(m)return void this.sourceBuffer.remove(0,1/0);c.playlist.discontinuityStarts.length&&(c.mediaIndex>0&&(l=b.Hls.Playlist.duration(c.playlist,0,c.mediaIndex)),this.sourceBuffer.timestampOffset=l)}else i.discontinuity&&(this.sourceBuffer.timestampOffset=n.end(0));this.sourceBuffer.appendBuffer(h),this.pendingSegment_=p.shift()}},b.Hls.prototype.fetchKeys_=function(){var a,c,d,g,h,i,j,k;if(!e&&this.segmentBuffer_.length)for(d=this,g=this.player(),h=this.options_,k=function(a){return function(b,c){return e=null,b||!c.response||16!==c.response.byteLength?(a.retries=a.retries||0,a.retries++,void(c.aborted||d.fetchKeys_())):(j=new DataView(c.response),a.bytes=new Uint32Array([j.getUint32(0),j.getUint32(4),j.getUint32(8),j.getUint32(12)]),void d.checkBuffer_())}},a=0;ad.segments.length||0>e?b.Hls.getMediaIndexForLive_(d)+1:e):0},b.Hls.getMediaIndexByTime=function(){return b.log.warn("getMediaIndexByTime is deprecated. Use PlaylistLoader.getMediaIndexForTime_ instead."),0},b.Hls.comparePlaylistBandwidth=function(b,c){var d,e;return b.attributes&&b.attributes.BANDWIDTH&&(d=b.attributes.BANDWIDTH),d=d||a.Number.MAX_VALUE,c.attributes&&c.attributes.BANDWIDTH&&(e=c.attributes.BANDWIDTH),e=e||a.Number.MAX_VALUE,d-e},b.Hls.comparePlaylistResolution=function(b,c){var d,e;return b.attributes&&b.attributes.RESOLUTION&&b.attributes.RESOLUTION.width&&(d=b.attributes.RESOLUTION.width),d=d||a.Number.MAX_VALUE,c.attributes&&c.attributes.RESOLUTION&&c.attributes.RESOLUTION.width&&(e=c.attributes.RESOLUTION.width),e=e||a.Number.MAX_VALUE,d===e&&b.attributes.BANDWIDTH&&c.attributes.BANDWIDTH?b.attributes.BANDWIDTH-c.attributes.BANDWIDTH:d-e},g=b.Hls.resolveUrl=function(a,b){var d,e,f=c.querySelector("base"),g=c.querySelector("head"),h=c.createElement("a"),i=f;return f?d=f.href:i=g.appendChild(c.createElement("base")),i.href=a,h.href=b,e=h.href,f?f.href=d:g.removeChild(i),e}}(window,window.videojs,document),function(a){"use strict";a.Hls.xhr=function(b,c){b=a.mergeOptions({timeout:45e3},b);var d=a.xhr(b,function(a,b){!a&&d.response&&(d.responseTime=(new Date).getTime(),d.roundTripTime=d.responseTime-d.requestTime,d.bytesReceived=d.response.byteLength||d.response.length,d.bandwidth||(d.bandwidth=Math.floor(d.bytesReceived/d.roundTripTime*8*1e3))),d.timedout=a||d.timedout?d.timedout||"ETIMEDOUT"===a.code:!1,a||200===b.statusCode||0===b.statusCode||(a=new Error("XHR Failed with a response of: "+(d&&(d.response||d.responseText)))),c(a,d)});return d.requestTime=(new Date).getTime(),d}}(window.videojs),function(a){var b=function(){this.init=function(){var a={};this.on=function(b,c){a[b]||(a[b]=[]),a[b].push(c)},this.off=function(b,c){var d;return a[b]?(d=a[b].indexOf(c),a[b].splice(d,1),d>-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else for(f=Array.prototype.slice.call(arguments,1),e=c.length,d=0;e>d;++d)c[d].apply(this,f)},this.dispose=function(){a={}}}};b.prototype.pipe=function(a){this.on("data",function(b){a.push(b)})},a.Hls.Stream=b}(window.videojs),function(a,b,c,d,e){var f,g,h,i=function(){},j=function(){var a="[^=]*",b='"[^"]*"|[^,]*',c="(?:"+a+")=(?:"+b+")";return new RegExp("(?:^|,)("+c+")")}(),k=function(a){for(var b,c=a.split(j),d=c.length,e={};d--;)""!==c[d]&&(b=/([^=]*)=(.*)/.exec(c[d]).slice(1),b[0]=b[0].replace(/^\s+|\s+$/g,""),b[1]=b[1].replace(/^\s+|\s+$/g,""),b[1]=b[1].replace(/^['"](.*)['"]$/g,"$1"),e[b[0]]=b[1]);return e},l=a.Hls.Stream;f=function(){var a="";f.prototype.init.call(this),this.push=function(b){var c;for(a+=b,c=a.indexOf("\n");c>-1;c=a.indexOf("\n"))this.trigger("data",a.substring(0,c)),a=a.substring(c+1)}},f.prototype=new l,g=function(){g.prototype.init.call(this)},g.prototype=new l,g.prototype.push=function(a){var c,d;return a=a.replace(/^\s+|\s+$/g,""),0!==a.length?"#"!==a[0]?void this.trigger("data",{type:"uri",uri:a}):0!==a.indexOf("#EXT")?void this.trigger("data",{type:"comment",text:a.slice(1)}):(a=a.replace("\r",""),(c=/^#EXTM3U/.exec(a))?void this.trigger("data",{type:"tag",tagType:"m3u"}):(c=/^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(a))?(d={type:"tag",tagType:"inf"},c[1]&&(d.duration=parseFloat(c[1])),c[2]&&(d.title=c[2]),void this.trigger("data",d)):(c=/^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"targetduration"},c[1]&&(d.duration=b(c[1],10)),void this.trigger("data",d)):(c=/^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"totalduration"},c[1]&&(d.duration=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-VERSION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"version"},c[1]&&(d.version=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"media-sequence"},c[1]&&(d.number=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"discontinuity-sequence"},c[1]&&(d.number=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(a))?(d={type:"tag",tagType:"playlist-type"},c[1]&&(d.playlistType=c[1]),void this.trigger("data",d)):(c=/^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"byterange"},c[1]&&(d.length=b(c[1],10)),c[2]&&(d.offset=b(c[2],10)),void this.trigger("data",d)):(c=/^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(a))?(d={type:"tag",tagType:"allow-cache"},c[1]&&(d.allowed=!/NO/.test(c[1])),void this.trigger("data",d)):(c=/^#EXT-X-STREAM-INF:?(.*)$/.exec(a))?(d={type:"tag",tagType:"stream-inf"},c[1]&&(d.attributes=k(c[1]),d.attributes.RESOLUTION&&!function(){var a=d.attributes.RESOLUTION.split("x"),c={};a[0]&&(c.width=b(a[0],10)),a[1]&&(c.height=b(a[1],10)),d.attributes.RESOLUTION=c}(),d.attributes.BANDWIDTH&&(d.attributes.BANDWIDTH=b(d.attributes.BANDWIDTH,10)),d.attributes["PROGRAM-ID"]&&(d.attributes["PROGRAM-ID"]=b(d.attributes["PROGRAM-ID"],10))),void this.trigger("data",d)):(c=/^#EXT-X-ENDLIST/.exec(a))?void this.trigger("data",{type:"tag",tagType:"endlist"}):(c=/^#EXT-X-DISCONTINUITY/.exec(a))?void this.trigger("data",{type:"tag",tagType:"discontinuity"}):(c=/^#EXT-X-KEY:?(.*)$/.exec(a))?(d={type:"tag",tagType:"key"},c[1]&&(d.attributes=k(c[1]),d.attributes.IV&&("0x"===d.attributes.IV.substring(0,2)&&(d.attributes.IV=d.attributes.IV.substring(2)),d.attributes.IV=d.attributes.IV.match(/.{8}/g),d.attributes.IV[0]=b(d.attributes.IV[0],16),d.attributes.IV[1]=b(d.attributes.IV[1],16),d.attributes.IV[2]=b(d.attributes.IV[2],16),d.attributes.IV[3]=b(d.attributes.IV[3],16),d.attributes.IV=new Uint32Array(d.attributes.IV))),void this.trigger("data",d)):void this.trigger("data",{type:"tag",data:a.slice(4,a.length)})):void 0},h=function(){var a,b=this,j=[],k={};h.prototype.init.call(this),this.lineStream=new f,this.parseStream=new g,this.lineStream.pipe(this.parseStream),this.manifest={allowCache:!0,discontinuityStarts:[]},this.parseStream.on("data",function(f){({tag:function(){(({"allow-cache":function(){this.manifest.allowCache=f.allowed,"allowed"in f||(this.trigger("info",{message:"defaulting allowCache to YES"}),this.manifest.allowCache=!0)},byterange:function(){var a={};"length"in f&&(k.byterange=a,a.length=f.length,"offset"in f||(this.trigger("info",{message:"defaulting offset to zero"}),f.offset=0)),"offset"in f&&(k.byterange=a,a.offset=f.offset)},endlist:function(){this.manifest.endList=!0},inf:function(){"mediaSequence"in this.manifest||(this.manifest.mediaSequence=0,this.trigger("info",{message:"defaulting media sequence to zero"})),"discontinuitySequence"in this.manifest||(this.manifest.discontinuitySequence=0,this.trigger("info",{message:"defaulting discontinuity sequence to zero"})),f.duration>=0&&(k.duration=f.duration),this.manifest.segments=j},key:function(){return f.attributes?"NONE"===f.attributes.METHOD?void(a=null):f.attributes.URI?(f.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),a={method:f.attributes.METHOD||"AES-128",uri:f.attributes.URI},void(f.attributes.IV!==e&&(a.iv=f.attributes.IV))):void this.trigger("warn",{message:"ignoring key declaration without URI"}):void this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function(){return c(f.number)?void(this.manifest.mediaSequence=f.number):void this.trigger("warn",{message:"ignoring invalid media sequence: "+f.number})},"discontinuity-sequence":function(){return c(f.number)?void(this.manifest.discontinuitySequence=f.number):void this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+f.number})},"playlist-type":function(){return/VOD|EVENT/.test(f.playlistType)?void(this.manifest.playlistType=f.playlistType):void this.trigger("warn",{message:"ignoring unknown playlist type: "+f.playlist})},"stream-inf":function(){return this.manifest.playlists=j,f.attributes?(k.attributes||(k.attributes={}),void(k.attributes=d(k.attributes,f.attributes))):void this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},discontinuity:function(){k.discontinuity=!0,this.manifest.discontinuityStarts.push(j.length)},targetduration:function(){return!c(f.duration)||f.duration<0?void this.trigger("warn",{message:"ignoring invalid target duration: "+f.duration}):void(this.manifest.targetDuration=f.duration)},totalduration:function(){return!c(f.duration)||f.duration<0?void this.trigger("warn",{ message:"ignoring invalid total duration: "+f.duration}):void(this.manifest.totalDuration=f.duration)}})[f.tagType]||i).call(b)},uri:function(){k.uri=f.uri,j.push(k),!this.manifest.targetDuration||"duration"in k||(this.trigger("warn",{message:"defaulting segment duration to the target duration"}),k.duration=this.manifest.targetDuration),a&&(k.key=a),k={}},comment:function(){}})[f.type].call(b)})},h.prototype=new l,h.prototype.push=function(a){this.lineStream.push(a)},h.prototype.end=function(){this.lineStream.push("\n")},window.videojs.m3u8={LineStream:f,ParseStream:g,Parser:h}}(window.videojs,window.parseInt,window.isFinite,window.videojs.mergeOptions),function(a,b){"use strict";var c,d,e,f,g,h,i,j,k=10;g=function(a,b){return a=isFinite(a)?a:1/0,b=isFinite(b)?b:1/0,Math.min(a,b)},h=function(a,b){return a=isFinite(a)?a:-(1/0),b=isFinite(b)?b:-(1/0),Math.max(a,b)},d=function(a,b){return a-b},c=function(a,b,c,e){var f,g=[],h=(a.discontinuityStarts||[]).concat(c),j=0;if(b>=c)return 0;for(h.sort(d),f=0;fb){g.push({start:b,end:h[f]}),f++;break}for(;f=c){g.push({start:h[f-1],end:c});break}g.push({start:g[g.length-1].end,end:h[f]})}for(f=0;f=e&&(d=a.segments[f],void 0===d.maxVideoPts&&void 0===d.maxAudioPts);f--)i+=d.duration||j;return f>=e&&(i+=.001*(h(a.segments[f].maxVideoPts,a.segments[f].maxAudioPts)-g(a.segments[e].minVideoPts,a.segments[e].minAudioPts))),i},f=function(a,b,d,e){var f,g,i=0;return void 0===b&&(b=a.mediaSequence||0),void 0===d&&(d=b+(a.segments||[]).length),f=a.targetDuration||k,g=h(a.mediaSequence-b,0),i+=g*f,i+=c(a,b+g-a.mediaSequence,d-a.mediaSequence,e)},e=function(b,c,d,e){if(!b)return 0;if(void 0===e&&(e=!0),void 0===c&&void 0===d){if(b.totalDuration)return b.totalDuration;if(!b.endList)return a.Infinity}return f(b,c,d,e)},j=function(a){var c,d,h,i,j,l,m;if(!a.segments)return b.createTimeRange();if(a.endList)return b.createTimeRange(0,e(a));if(c=0,d=f(a,a.mediaSequence,a.mediaSequence+a.segments.length),i=a.targetDuration||k,!a.endList)for(h=3*i,m=a.segments.length-1;m>=0&&h>0;m--)j=a.segments[m],l=g(e(a,a.mediaSequence+m,a.mediaSequence+m+1),h),h-=l,d-=l;return b.createTimeRange(c,d)},b.Hls.Playlist={duration:e,seekable:j}}(window,window.videojs),function(a,b){"use strict";var c=b.Hls.resolveUrl,d=b.Hls.xhr,e=b.Hls.Playlist,f=b.mergeOptions,g=function(a,b){var c,d,e=!1,g=f(a,{});for(c=a.playlists.length;c--;)if(d=g.playlists[c],d.uri===b.uri){if(d.segments&&b.segments&&d.segments.length===b.segments.length&&d.mediaSequence===b.mediaSequence)continue;g.playlists[c]=f(d,b),g.playlists[b.uri]=g.playlists[c],d.segments&&(g.playlists[c].segments=h(d.segments,b.segments,b.mediaSequence-d.mediaSequence)),e=!0}return e?g:null},h=function(a,b,c){var d,e,g=b.slice();for(c=c||0,d=Math.min(a.length,b.length+c),e=c;d>e;e++)g[e-c]=f(a[e],g[e-c]);return g},i=function(e,f){var h,j,k,l,m=this;if(i.prototype.init.call(this),!e)throw new Error("A non-empty playlist URL is required");l=function(c,d,e){var f,h,i;return m.setBandwidth(k||d),k=null,c?(m.error={status:d.status,message:"HLS playlist request error at URL: "+e,responseText:d.responseText,code:d.status>=500?4:2},m.trigger("error")):(m.state="HAVE_METADATA",f=new b.m3u8.Parser,f.push(d.responseText),f.end(),f.manifest.uri=e,i=g(m.master,f.manifest),h=1e3*(f.manifest.targetDuration||10),i?(m.master=i,m.updateMediaPlaylist_(f.manifest)):h/=2,m.media().endList||(a.clearTimeout(j),j=a.setTimeout(function(){m.trigger("mediaupdatetimeout")},h)),void m.trigger("loadedplaylist"))},m.state="HAVE_NOTHING",m.expired_=0,h=this.dispose,m.dispose=function(){k&&(k.onreadystatechange=null,k.abort(),k=null),a.clearTimeout(j),h.call(this)},m.media=function(a){var b=!1;if(!a)return m.media_;if("HAVE_NOTHING"===m.state||"HAVE_MASTER"===m.state)throw new Error("Cannot switch media playlist from "+m.state);if("string"==typeof a){if(!m.master.playlists[a])throw new Error("Unknown playlist URI: "+a);a=m.master.playlists[a]}if(b=a.uri!==m.media_.uri,m.master.playlists[a.uri].endList)return k&&(k.onreadystatechange=null,k.abort(),k=null),m.state="HAVE_METADATA",m.media_=a,void(b&&m.trigger("mediachange"));if(b){if(m.state="SWITCHING_MEDIA",k){if(c(m.master.uri,a.uri)===k.url)return;k.onreadystatechange=null,k.abort(),k=null}k=d({uri:c(m.master.uri,a.uri),withCredentials:f},function(b,c){l(b,c,a.uri),m.trigger("mediachange")})}},m.setBandwidth=function(a){m.bandwidth=a.bandwidth},m.on("mediaupdatetimeout",function(){"HAVE_METADATA"===m.state&&(m.state="HAVE_CURRENT_METADATA",k=d({uri:c(m.master.uri,m.media().uri),withCredentials:f},function(a,b){l(a,b,m.media().uri)}))}),k=d({uri:e,withCredentials:f},function(g,h){var i,j;if(k=null,g)return m.error={status:h.status,message:"HLS playlist request error at URL: "+e,responseText:h.responseText,code:2},m.trigger("error");if(i=new b.m3u8.Parser,i.push(h.responseText),i.end(),m.state="HAVE_MASTER",i.manifest.uri=e,i.manifest.playlists){for(m.master=i.manifest,j=m.master.playlists.length;j--;)m.master.playlists[m.master.playlists[j].uri]=m.master.playlists[j];return k=d({uri:c(e,i.manifest.playlists[0].uri),withCredentials:f},function(a,b){l(a,b,i.manifest.playlists[0].uri),a||m.trigger("loadedmetadata")}),m.trigger("loadedplaylist")}return m.master={uri:a.location.href,playlists:[{uri:e}]},m.master.playlists[e]=m.master.playlists[0],l(null,h,e),m.trigger("loadedmetadata")})};i.prototype=new b.Hls.Stream,i.prototype.updateMediaPlaylist_=function(a){var b;this.media_&&(b=a.mediaSequence-this.media_.mediaSequence,this.expired_+=e.duration(this.media_,this.media_.mediaSequence,a.mediaSequence)),this.media_=this.master.playlists[a.uri]},i.prototype.updateTimelineOffset=function(a,b){var c=e.duration(this.media_,this.media_.mediaSequence,this.media_.mediaSequence+a);this.expired_=b-c},i.prototype.getMediaIndexForTime_=function(a){var b;if(!this.media_)return 0;if(a-=this.expired_,0>a)return 0;for(b=0;b=a)return b;return this.media_.segments.length-1},b.Hls.PlaylistLoader=i}(window,window.videojs),!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),(b.pkcs7||(b.pkcs7={})).unpad=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>8|a>>>24},d=function(a){this._precompute();var b,c,d,e,f,g=this._tables[0][4],h=this._tables[1],i=a.length,j=1;if(4!==i&&6!==i&&8!==i)throw new Error("Invalid aes key size");for(e=a.slice(0),f=[],this._key=[e,f],b=i;4*i+28>b;b++)d=e[b-1],(b%i===0||8===i&&b%i===4)&&(d=g[d>>>24]<<24^g[d>>16&255]<<16^g[d>>8&255]<<8^g[255&d],b%i===0&&(d=d<<8^d>>>24^j<<24,j=j<<1^283*(j>>7))),e[b]=e[b-i]^d;for(c=0;b;c++,b--)d=e[3&c?b:b-4],f[c]=4>=b||4>c?d:h[0][g[d>>>24]]^h[1][g[d>>16&255]]^h[2][g[d>>8&255]]^h[3][g[255&d]]},d.prototype={_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var a,b,c,d,e,f,g,h,i,j=this._tables[0],k=this._tables[1],l=j[4],m=k[4],n=[],o=[];for(a=0;256>a;a++)o[(n[a]=a<<1^283*(a>>7))^a]=a;for(b=c=0;!l[b];b^=d||1,c=o[c]||1)for(g=c^c<<1^c<<2^c<<3^c<<4,g=g>>8^255&g^99,l[b]=g,m[g]=b,f=n[e=n[d=n[b]]],i=16843009*f^65537*e^257*d^16843008*b,h=257*n[g]^16843008*g,a=0;4>a;a++)j[a][b]=h=h<<24^h>>>8,k[a][g]=i=i<<24^i>>>8;for(a=0;5>a;a++)j[a]=j[a].slice(0),k[a]=k[a].slice(0)},decrypt:function(a,b,c,d,e,f){var g,h,i,j,k=this._key[1],l=a^k[0],m=d^k[1],n=c^k[2],o=b^k[3],p=k.length/4-2,q=4,r=this._tables[1],s=r[0],t=r[1],u=r[2],v=r[3],w=r[4];for(j=0;p>j;j++)g=s[l>>>24]^t[m>>16&255]^u[n>>8&255]^v[255&o]^k[q],h=s[m>>>24]^t[n>>16&255]^u[o>>8&255]^v[255&l]^k[q+1],i=s[n>>>24]^t[o>>16&255]^u[l>>8&255]^v[255&m]^k[q+2],o=s[o>>>24]^t[l>>16&255]^u[m>>8&255]^v[255&n]^k[q+3],q+=4,l=g,m=h,n=i;for(j=0;4>j;j++)e[(3&-j)+f]=w[l>>>24]<<24^w[m>>16&255]<<16^w[n>>8&255]<<8^w[255&o]^k[q++],g=l,l=m,m=n,n=o,o=g}},g=function(a,b,c){var e,f,g,i,j,k,l,m,n,o=new Int32Array(a.buffer,a.byteOffset,a.byteLength>>2),p=new d(Array.prototype.slice.call(b)),q=new Uint8Array(a.byteLength),r=new Int32Array(q.buffer);for(e=c[0],f=c[1],g=c[2],i=c[3],n=0;n logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/alt/video.novtt.osmf.js b/dist/alt/videojs.novtt.osmf.js similarity index 99% rename from dist/alt/video.novtt.osmf.js rename to dist/alt/videojs.novtt.osmf.js index 04b3cadc1e..fc3fa95463 100644 --- a/dist/alt/video.novtt.osmf.js +++ b/dist/alt/videojs.novtt.osmf.js @@ -18024,7 +18024,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/alt/video.novtt.osmf.min.js b/dist/alt/videojs.novtt.osmf.min.js similarity index 99% rename from dist/alt/video.novtt.osmf.min.js rename to dist/alt/videojs.novtt.osmf.min.js index 9d248aa1d5..7002f20947 100644 --- a/dist/alt/video.novtt.osmf.min.js +++ b/dist/alt/videojs.novtt.osmf.min.js @@ -13,5 +13,5 @@ if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}fu this.off(m["default"],"touchend",this.handleMouseUp),this.update()},b.prototype.update=function(){if(this.el_){var a=this.getPercent(),b=this.bar;if(b){("number"!=typeof a||a!==a||0>a||a===1/0)&&(a=0);var c=(100*a).toFixed(2)+"%";this.vertical()?b.el().style.height=c:b.el().style.width=c}}},b.prototype.calculateDistance=function(a){var b=k.getPointerPosition(this.el_,a);return this.vertical()?b.y:b.x},b.prototype.handleFocus=function(){this.on(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleKeyPress=function(a){37===a.which||40===a.which?(a.preventDefault(),this.stepBack()):(38===a.which||39===a.which)&&(a.preventDefault(),this.stepForward())},b.prototype.handleBlur=function(){this.off(m["default"],"keydown",this.handleKeyPress)},b.prototype.handleClick=function(a){a.stopImmediatePropagation(),a.preventDefault()},b.prototype.vertical=function(a){return void 0===a?this.vertical_||!1:(this.vertical_=!!a,this.addClass(this.vertical_?"vjs-slider-vertical":"vjs-slider-horizontal"),this)},b}(i["default"]);i["default"].registerComponent("Slider",p),c["default"]=p,b.exports=c["default"]},{"../component.js":63,"../utils/dom.js":123,"global/document":1,"object.assign":45}],108:[function(a,b,c){"use strict";function d(a){return a.streamingFormats={"rtmp/mp4":"MP4","rtmp/flv":"FLV"},a.streamFromParts=function(a,b){return a+"&"+b},a.streamToParts=function(a){var b={connection:"",stream:""};if(!a)return b;var c=a.indexOf("&"),d=void 0;return-1!==c?d=c+1:(c=d=a.lastIndexOf("/")+1,0===c&&(c=d=a.length)),b.connection=a.substring(0,c),b.stream=a.substring(d,a.length),b},a.isStreamingType=function(b){return b in a.streamingFormats},a.RTMP_RE=/^rtmp[set]?:\/\//i,a.isStreamingSrc=function(b){return a.RTMP_RE.test(b)},a.rtmpSourceHandler={},a.rtmpSourceHandler.canHandleSource=function(b){return a.isStreamingType(b.type)||a.isStreamingSrc(b.src)?"maybe":""},a.rtmpSourceHandler.handleSource=function(b,c){var d=a.streamToParts(b.src);c.setRtmpConnection(d.connection),c.setRtmpStream(d.stream)},a.registerSourceHandler(a.rtmpSourceHandler),a}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],109:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=a.charAt(0).toUpperCase()+a.slice(1);A["set"+b]=function(b){return this.el_.vjs_setProperty(a,b)}}function i(a){A[a]=function(){return this.el_.vjs_getProperty(a)}}c.__esModule=!0;for(var j=a("./tech"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/time-ranges.js"),q=a("./flash-rtmp"),r=e(q),s=a("../component"),t=e(s),u=a("global/window"),v=e(u),w=a("object.assign"),x=e(w),y=v["default"].navigator,z=function(a){function b(c,d){f(this,b),a.call(this,c,d),c.source&&this.ready(function(){this.setSource(c.source)},!0),c.startTime&&this.ready(function(){this.load(),this.play(),this.currentTime(c.startTime)},!0),v["default"].videojs=v["default"].videojs||{},v["default"].videojs.Flash=v["default"].videojs.Flash||{},v["default"].videojs.Flash.onReady=b.onReady,v["default"].videojs.Flash.onEvent=b.onEvent,v["default"].videojs.Flash.onError=b.onError,this.on("seeked",function(){this.lastSeekTarget_=void 0})}return g(b,a),b.prototype.createEl=function(){var a=this.options_;a.swf||(a.swf="//vjs.zencdn.net/swf/5.0.0-rc1/video-js.swf");var c=a.techId,d=x["default"]({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.preload,loop:a.loop,muted:a.muted},a.flashVars),e=x["default"]({wmode:"opaque",bgcolor:"#000000"},a.params),f=x["default"]({id:c,name:c,"class":"vjs-tech"},a.attributes);return this.el_=b.embed(a.swf,d,e,f),this.el_.tech=this,this.el_},b.prototype.play=function(){this.ended()&&this.setCurrentTime(0),this.el_.vjs_play()},b.prototype.pause=function(){this.el_.vjs_pause()},b.prototype.src=function(a){return void 0===a?this.currentSrc():this.setSrc(a)},b.prototype.setSrc=function(a){if(a=o.getAbsoluteURL(a),this.el_.vjs_src(a),this.autoplay()){var b=this;this.setTimeout(function(){b.play()},0)}},b.prototype.seeking=function(){return void 0!==this.lastSeekTarget_},b.prototype.setCurrentTime=function(b){var c=this.seekable();c.length&&(b=b>c.start(0)?b:c.start(0),b=b=10},k["default"].withSourceHandlers(z),z.nativeSourceHandler={},z.nativeSourceHandler.canHandleSource=function(a){function b(a){var b=o.getFileExtension(a);return b?"video/"+b:""}var c;return c=a.type?a.type.replace(/;.*/,"").toLowerCase():b(a.src),c in z.formats?"maybe":""},z.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},z.nativeSourceHandler.dispose=function(){},z.registerSourceHandler(z.nativeSourceHandler),z.formats={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},z.onReady=function(a){var b=m.getEl(a),c=b&&b.tech;c&&c.el()&&z.checkReady(c)},z.checkReady=function(a){a.el()&&(a.el().vjs_getProperty?a.triggerReady():this.setTimeout(function(){z.checkReady(a)},50))},z.onEvent=function(a,b){var c=m.getEl(a).tech;c.trigger(b)},z.onError=function(a,b){var c=m.getEl(a).tech;return"srcnotfound"===b?c.error(4):void c.error("FLASH: "+b)},z.version=function(){var a="0,0,0";try{a=new v["default"].ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(b){try{y.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(y.plugins["Shockwave Flash 2.0"]||y.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(c){}}return a.split(",")},z.embed=function(a,b,c,d){var e=z.getEmbedCode(a,b,c,d),f=m.createEl("div",{innerHTML:e}).childNodes[0];return f},z.getEmbedCode=function(a,b,c,d){var e=''}),d=x["default"]({data:a,width:"100%",height:"100%"},d),Object.getOwnPropertyNames(d).forEach(function(a){h+=a+'="'+d[a]+'" '}),""+e+h+">"+g+""},r["default"](z),t["default"].registerComponent("Flash",z),c["default"]=z,b.exports=c["default"]},{"../component":63,"../utils/dom.js":123,"../utils/time-ranges.js":131,"../utils/url.js":133,"./flash-rtmp":108,"./tech":112,"global/window":2,"object.assign":45}],110:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var h=a("./tech.js"),i=e(h),j=a("../component"),k=e(j),l=a("../utils/dom.js"),m=d(l),n=a("../utils/url.js"),o=d(n),p=a("../utils/fn.js"),q=d(p),r=a("../utils/log.js"),s=e(r),t=a("../utils/browser.js"),u=d(t),v=a("global/document"),w=e(v),x=a("global/window"),y=e(x),z=a("object.assign"),A=e(z),B=a("../utils/merge-options.js"),C=e(B),D=function(a){function b(c,d){f(this,b),a.call(this,c,d);var e=c.source;if(e&&(this.el_.currentSrc!==e.src||c.tag&&3===c.tag.initNetworkState_)?this.setSource(e):this.handleLateInit_(this.el_),this.el_.hasChildNodes()){for(var g=this.el_.childNodes,h=g.length,i=[];h--;){var j=g[h],k=j.nodeName.toLowerCase();"track"===k&&(this.featuresNativeTextTracks?this.remoteTextTracks().addTrack_(j.track):i.push(j))}for(var l=0;l=0;g--){var h=f[g],i={};"undefined"!=typeof this.options_[h]&&(i[h]=this.options_[h]),m.setElAttributes(a,i)}return a},b.prototype.handleLateInit_=function(a){var b=this;if(0!==a.networkState&&3!==a.networkState){if(0===a.readyState){var c=function(){var a=!1,c=function(){a=!0};b.on("loadstart",c);var d=function(){a||this.trigger("loadstart")};return b.on("loadedmetadata",d),b.ready(function(){this.off("loadstart",c),this.off("loadedmetadata",d),a||this.trigger("loadstart")}),{v:void 0}}();if("object"==typeof c)return c.v}var d=["loadstart"];d.push("loadedmetadata"),a.readyState>=2&&d.push("loadeddata"),a.readyState>=3&&d.push("canplay"),a.readyState>=4&&d.push("canplaythrough"),this.ready(function(){d.forEach(function(a){this.trigger(a)},this)})}},b.prototype.proxyNativeTextTracks_=function(){var a=this.el().textTracks;a&&a.addEventListener&&(a.addEventListener("change",this.handleTextTrackChange_),a.addEventListener("addtrack",this.handleTextTrackAdd_),a.addEventListener("removetrack",this.handleTextTrackRemove_))},b.prototype.handleTextTrackChange=function(){var a=this.textTracks();this.textTracks().trigger({type:"change",target:a,currentTarget:a,srcElement:a})},b.prototype.handleTextTrackAdd=function(a){this.textTracks().addTrack_(a.track)},b.prototype.handleTextTrackRemove=function(a){this.textTracks().removeTrack_(a.track)},b.prototype.play=function(){this.el_.play()},b.prototype.pause=function(){this.el_.pause()},b.prototype.paused=function(){return this.el_.paused},b.prototype.currentTime=function(){return this.el_.currentTime},b.prototype.setCurrentTime=function(a){try{this.el_.currentTime=a}catch(b){s["default"](b,"Video is not ready. (Video.js)")}},b.prototype.duration=function(){return this.el_.duration||0},b.prototype.buffered=function(){return this.el_.buffered},b.prototype.volume=function(){return this.el_.volume},b.prototype.setVolume=function(a){this.el_.volume=a},b.prototype.muted=function(){return this.el_.muted},b.prototype.setMuted=function(a){this.el_.muted=a},b.prototype.width=function(){return this.el_.offsetWidth},b.prototype.height=function(){return this.el_.offsetHeight},b.prototype.supportsFullScreen=function(){if("function"==typeof this.el_.webkitEnterFullScreen){var a=y["default"].navigator.userAgent;if(/Android/.test(a)||!/Chrome|Mac OS X 10.5/.test(a))return!0}return!1},b.prototype.enterFullScreen=function(){var a=this.el_;"webkitDisplayingFullscreen"in a&&this.one("webkitbeginfullscreen",function(){this.one("webkitendfullscreen",function(){this.trigger("fullscreenchange",{isFullscreen:!1})}),this.trigger("fullscreenchange",{isFullscreen:!0})}),a.paused&&a.networkState<=a.HAVE_METADATA?(this.el_.play(),this.setTimeout(function(){a.pause(),a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()},b.prototype.exitFullScreen=function(){this.el_.webkitExitFullScreen()},b.prototype.src=function(a){return void 0===a?this.el_.src:void this.setSrc(a)},b.prototype.setSrc=function(a){this.el_.src=a},b.prototype.load=function(){this.el_.load()},b.prototype.currentSrc=function(){return this.el_.currentSrc},b.prototype.poster=function(){return this.el_.poster},b.prototype.setPoster=function(a){this.el_.poster=a},b.prototype.preload=function(){return this.el_.preload},b.prototype.setPreload=function(a){this.el_.preload=a},b.prototype.autoplay=function(){return this.el_.autoplay},b.prototype.setAutoplay=function(a){this.el_.autoplay=a},b.prototype.controls=function(){return this.el_.controls},b.prototype.setControls=function(a){this.el_.controls=!!a},b.prototype.loop=function(){return this.el_.loop},b.prototype.setLoop=function(a){this.el_.loop=a},b.prototype.error=function(){return this.el_.error},b.prototype.seeking=function(){return this.el_.seeking},b.prototype.seekable=function(){return this.el_.seekable},b.prototype.ended=function(){return this.el_.ended},b.prototype.defaultMuted=function(){return this.el_.defaultMuted},b.prototype.playbackRate=function(){return this.el_.playbackRate},b.prototype.played=function(){return this.el_.played},b.prototype.setPlaybackRate=function(a){this.el_.playbackRate=a},b.prototype.networkState=function(){return this.el_.networkState},b.prototype.readyState=function(){return this.el_.readyState},b.prototype.videoWidth=function(){return this.el_.videoWidth},b.prototype.videoHeight=function(){return this.el_.videoHeight},b.prototype.textTracks=function(){return a.prototype.textTracks.call(this)},b.prototype.addTextTrack=function(b,c,d){return this.featuresNativeTextTracks?this.el_.addTextTrack(b,c,d):a.prototype.addTextTrack.call(this,b,c,d)},b.prototype.addRemoteTextTrack=function(){var b=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!this.featuresNativeTextTracks)return a.prototype.addRemoteTextTrack.call(this,b);var c=w["default"].createElement("track");return b.kind&&(c.kind=b.kind),b.label&&(c.label=b.label),(b.language||b.srclang)&&(c.srclang=b.language||b.srclang),b["default"]&&(c["default"]=b["default"]),b.id&&(c.id=b.id),b.src&&(c.src=b.src),this.el().appendChild(c),this.remoteTextTracks().addTrack_(c.track),c},b.prototype.removeRemoteTextTrack=function(b){if(!this.featuresNativeTextTracks)return a.prototype.removeRemoteTextTrack.call(this,b);var c,d;for(this.remoteTextTracks().removeTrack_(b),c=this.el().querySelectorAll("track"),d=c.length;d--;)(b===c[d]||b===c[d].track)&&this.el().removeChild(c[d])},b}(i["default"]);D.TEST_VID=w["default"].createElement("video");var E=w["default"].createElement("track");E.kind="captions",E.srclang="en",E.label="English",D.TEST_VID.appendChild(E),D.isSupported=function(){try{D.TEST_VID.volume=.5}catch(a){return!1}return!!D.TEST_VID.canPlayType},i["default"].withSourceHandlers(D),D.nativeSourceHandler={},D.nativeSourceHandler.canHandleSource=function(a){function b(a){try{return D.TEST_VID.canPlayType(a)}catch(b){return""}}var c;return a.type?b(a.type):a.src?(c=o.getFileExtension(a.src),b("video/"+c)):""},D.nativeSourceHandler.handleSource=function(a,b){b.setSrc(a.src)},D.nativeSourceHandler.dispose=function(){},D.registerSourceHandler(D.nativeSourceHandler),D.canControlVolume=function(){var a=D.TEST_VID.volume;return D.TEST_VID.volume=a/2+.1,a!==D.TEST_VID.volume},D.canControlPlaybackRate=function(){var a=D.TEST_VID.playbackRate;return D.TEST_VID.playbackRate=a/2+.1,a!==D.TEST_VID.playbackRate},D.supportsNativeTextTracks=function(){var a;return a=!!D.TEST_VID.textTracks,a&&D.TEST_VID.textTracks.length>0&&(a="number"!=typeof D.TEST_VID.textTracks[0].mode),a&&u.IS_FIREFOX&&(a=!1),!a||"onremovetrack"in D.TEST_VID.textTracks||(a=!1),a},D.Events=["loadstart","suspend","abort","error","emptied","stalled","loadedmetadata","loadeddata","canplay","canplaythrough","playing","waiting","seeking","seeked","ended","durationchange","timeupdate","progress","play","pause","ratechange","volumechange"],D.prototype.featuresVolumeControl=D.canControlVolume(),D.prototype.featuresPlaybackRate=D.canControlPlaybackRate(),D.prototype.movingMediaElementInDOM=!u.IS_IOS,D.prototype.featuresFullscreenResize=!0,D.prototype.featuresProgressEvents=!0,D.prototype.featuresNativeTextTracks=D.supportsNativeTextTracks();var F=void 0,G=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,H=/^video\/mp4/i;D.patchCanPlayType=function(){u.ANDROID_VERSION>=4&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&G.test(a)?"maybe":F.call(this,a)}),u.IS_OLD_ANDROID&&(F||(F=D.TEST_VID.constructor.prototype.canPlayType),D.TEST_VID.constructor.prototype.canPlayType=function(a){return a&&H.test(a)?"maybe":F.call(this,a)})},D.unpatchCanPlayType=function(){var a=D.TEST_VID.constructor.prototype.canPlayType;return D.TEST_VID.constructor.prototype.canPlayType=F,F=null,a},D.patchCanPlayType(),D.disposeMediaElement=function(a){if(a){for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src"),"function"==typeof a.load&&!function(){try{a.load()}catch(b){}}()}},k["default"].registerComponent("Html5",D),c["default"]=D,b.exports=c["default"]},{"../component":63,"../utils/browser.js":120,"../utils/dom.js":123,"../utils/fn.js":125,"../utils/log.js":128,"../utils/merge-options.js":129,"../utils/url.js":133,"./tech.js":112,"global/document":1,"global/window":2,"object.assign":45}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}c.__esModule=!0;var g=a("../component"),h=d(g),i=a("global/window"),j=(d(i),a("../utils/to-title-case.js")),k=d(j),l=function(a){function b(c,d,f){if(e(this,b),a.call(this,c,d,f),d.playerOptions.sources&&0!==d.playerOptions.sources.length)c.src(d.playerOptions.sources);else for(var g=0,i=d.playerOptions.techOrder;gb)for(c=b;d>c;c++)e.call(this,c)},j.prototype.getCueById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=j,b.exports=c["default"]},{"../utils/browser.js":120,"global/document":1}],114:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a,b){return"rgba("+parseInt(a[1]+a[1],16)+","+parseInt(a[2]+a[2],16)+","+parseInt(a[3]+a[3],16)+","+b+")"}function i(a,b,c){try{a.style[b]=c}catch(d){}}c.__esModule=!0;var j=a("../component"),k=e(j),l=a("../menu/menu.js"),m=(e(l),a("../menu/menu-item.js")),n=(e(m),a("../menu/menu-button.js")),o=(e(n),a("../utils/fn.js")),p=d(o),q=a("global/document"),r=(e(q),a("global/window")),s=e(r),t="#222",u="#ccc",v={monospace:"monospace",sansSerif:"sans-serif",serif:"serif",monospaceSansSerif:'"Andale Mono", "Lucida Console", monospace',monospaceSerif:'"Courier New", monospace',proportionalSansSerif:"sans-serif",proportionalSerif:"serif",casual:'"Comic Sans MS", Impact, fantasy',script:'"Monotype Corsiva", cursive',smallcaps:'"Andale Mono", "Lucida Console", monospace, sans-serif'},w=function(a){function b(c,d,e){f(this,b),a.call(this,c,d,e),c.on("loadstart",p.bind(this,this.toggleDisplay)),c.on("texttrackchange",p.bind(this,this.updateDisplay)),c.ready(p.bind(this,function(){if(c.tech_&&c.tech_.featuresNativeTextTracks)return void this.hide();c.on("fullscreenchange",p.bind(this,this.updateDisplay));for(var a=this.options_.playerOptions.tracks||[],b=0;bc;c++)if(b=this[c],b===a){this.tracks_.splice(c,1);break}this.trigger({type:"removetrack",track:b})},n.prototype.getTrackById=function(a){for(var b=null,c=0,d=this.length;d>c;c++){var e=this[c];if(e.id===a){b=e;break}}return b},c["default"]=n,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"global/document":1}],118:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function h(a){var b=void 0;return a.selectedOptions?b=a.selectedOptions[0]:a.options&&(b=a.options[a.options.selectedIndex]),b.value}function i(a,b){if(b){var c=void 0;for(c=0;c select").selectedIndex=0,this.el().querySelector(".vjs-bg-color > select").selectedIndex=0,this.el().querySelector(".window-color > select").selectedIndex=0,this.el().querySelector(".vjs-text-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-bg-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-window-opacity > select").selectedIndex=0,this.el().querySelector(".vjs-edge-style select").selectedIndex=0,this.el().querySelector(".vjs-font-family select").selectedIndex=0,this.el().querySelector(".vjs-font-percent select").selectedIndex=2,this.updateDisplay()})),n.on(this.el().querySelector(".vjs-fg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".window-color > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-text-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-bg-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-window-opacity > select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-percent select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-edge-style select"),"change",p.bind(this,this.updateDisplay)),n.on(this.el().querySelector(".vjs-font-family select"),"change",p.bind(this,this.updateDisplay)),this.options_.persistTextTrackSettings&&this.restoreSettings()}return g(b,a),b.prototype.createEl=function(){return a.prototype.createEl.call(this,"div",{className:"vjs-caption-settings vjs-modal-overlay",innerHTML:j()})},b.prototype.getValues=function(){var a=this.el(),b=h(a.querySelector(".vjs-edge-style select")),c=h(a.querySelector(".vjs-font-family select")),d=h(a.querySelector(".vjs-fg-color > select")),e=h(a.querySelector(".vjs-text-opacity > select")),f=h(a.querySelector(".vjs-bg-color > select")),g=h(a.querySelector(".vjs-bg-opacity > select")),i=h(a.querySelector(".window-color > select")),j=h(a.querySelector(".vjs-window-opacity > select")),k=v["default"].parseFloat(h(a.querySelector(".vjs-font-percent > select"))),l={backgroundOpacity:g,textOpacity:e,windowOpacity:j,edgeStyle:b,fontFamily:c,color:d,backgroundColor:f,windowColor:i,fontPercent:k};for(var m in l)(""===l[m]||"none"===l[m]||"fontPercent"===m&&1===l[m])&&delete l[m];return l},b.prototype.setValues=function(a){var b=this.el();i(b.querySelector(".vjs-edge-style select"),a.edgeStyle),i(b.querySelector(".vjs-font-family select"),a.fontFamily),i(b.querySelector(".vjs-fg-color > select"),a.color),i(b.querySelector(".vjs-text-opacity > select"),a.textOpacity),i(b.querySelector(".vjs-bg-color > select"),a.backgroundColor),i(b.querySelector(".vjs-bg-opacity > select"),a.backgroundOpacity),i(b.querySelector(".window-color > select"),a.windowColor),i(b.querySelector(".vjs-window-opacity > select"),a.windowOpacity);var c=a.fontPercent;c&&(c=c.toFixed(2)),i(b.querySelector(".vjs-font-percent > select"),c)},b.prototype.restoreSettings=function(){var a=t["default"](v["default"].localStorage.getItem("vjs-text-track-settings")),b=a[0],c=a[1];b&&r["default"].error(b),c&&this.setValues(c)},b.prototype.saveSettings=function(){if(this.options_.persistTextTrackSettings){var a=this.getValues();try{Object.getOwnPropertyNames(a).length>0?v["default"].localStorage.setItem("vjs-text-track-settings",JSON.stringify(a)):v["default"].localStorage.removeItem("vjs-text-track-settings")}catch(b){}}},b.prototype.updateDisplay=function(){var a=this.player_.getChild("textTrackDisplay");a&&a.updateDisplay()},b}(l["default"]);l["default"].registerComponent("TextTrackSettings",w),c["default"]=w,b.exports=c["default"]},{"../component":63,"../utils/events.js":124,"../utils/fn.js":125,"../utils/log.js":128,"global/window":2,"safe-json-parse/tuple":53}],119:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var f=a("./text-track-cue-list"),g=e(f),h=a("../utils/fn.js"),i=d(h),j=a("../utils/guid.js"),k=d(j),l=a("../utils/browser.js"),m=d(l),n=a("./text-track-enums"),o=d(n),p=a("../utils/log.js"),q=e(p),r=a("../event-target"),s=e(r),t=a("global/document"),u=e(t),v=a("global/window"),w=e(v),x=a("../utils/url.js"),y=a("xhr"),z=e(y),A=function E(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];if(!a.tech)throw new Error("A tech was not provided.");var b=this;if(m.IS_IE8){b=u["default"].createElement("custom");for(var c in E.prototype)b[c]=E.prototype[c]}b.tech_=a.tech;var d=o.TextTrackMode[a.mode]||"disabled",e=o.TextTrackKind[a.kind]||"subtitles",f=a.label||"",h=a.language||a.srclang||"",j=a.id||"vjs_text_track_"+k.newGUID();("metadata"===e||"chapters"===e)&&(d="hidden"),b.cues_=[],b.activeCues_=[];var l=new g["default"](b.cues_),n=new g["default"](b.activeCues_),p=!1,q=i.bind(b,function(){this.activeCues,p&&(this.trigger("cuechange"),p=!1)});return"disabled"!==d&&b.tech_.on("timeupdate",q),Object.defineProperty(b,"kind",{get:function(){return e},set:Function.prototype}),Object.defineProperty(b,"label",{get:function(){return f},set:Function.prototype}),Object.defineProperty(b,"language",{get:function(){return h},set:Function.prototype}),Object.defineProperty(b,"id",{get:function(){return j},set:Function.prototype}),Object.defineProperty(b,"mode",{get:function(){return d},set:function(a){o.TextTrackMode[a]&&(d=a,"showing"===d&&this.tech_.on("timeupdate",q),this.trigger("modechange"))}}),Object.defineProperty(b,"cues",{get:function(){return this.loaded_?l:null},set:Function.prototype}),Object.defineProperty(b,"activeCues",{get:function(){if(!this.loaded_)return null;if(0===this.cues.length)return n;for(var a=this.tech_.currentTime(),b=[],c=0,d=this.cues.length;d>c;c++){var e=this.cues[c];e.startTime<=a&&e.endTime>=a?b.push(e):e.startTime===e.endTime&&e.startTime<=a&&e.startTime+.5>=a&&b.push(e)}if(p=!1,b.length!==this.activeCues_.length)p=!0;else for(var c=0;cc;c++){var e=this.cues_[c];e===a&&(this.cues_.splice(c,1),b=!0)}b&&this.cues.setCues_(this.cues_)};var B=function F(a,b){if("function"!=typeof w["default"].WebVTT)return w["default"].setTimeout(function(){F(a,b)},25);var c=new w["default"].WebVTT.Parser(w["default"],w["default"].vttjs,w["default"].WebVTT.StringDecoder());c.oncue=function(a){b.addCue(a)},c.onparsingerror=function(a){q["default"].error(a)},c.parse(a),c.flush()},C=function(a,b){var c={uri:a},d=x.isCrossOrigin(a);d&&(c.cors=d),z["default"](c,i.bind(this,function(a,c,d){return a?q["default"].error(a,c):(b.loaded_=!0,void B(d,b))}))},D=function(a,b){if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return-1;var e=+b||0;if(Math.abs(e)===1/0&&(e=0),e>=d)return-1;for(var f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(f in c&&c[f]===a)return f;f++}return-1};c["default"]=A,b.exports=c["default"]},{"../event-target":95,"../utils/browser.js":120,"../utils/fn.js":125,"../utils/guid.js":127,"../utils/log.js":128,"../utils/url.js":133,"./text-track-cue-list":113,"./text-track-enums":115,"global/document":1,"global/window":2,xhr:55}],120:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=h["default"].navigator.userAgent,j=/AppleWebKit\/([\d.]+)/i.exec(i),k=j?parseFloat(j.pop()):null,l=/iPhone/i.test(i);c.IS_IPHONE=l;var m=/iPad/i.test(i);c.IS_IPAD=m;var n=/iPod/i.test(i);c.IS_IPOD=n;var o=l||m||n;c.IS_IOS=o;var p=function(){var a=i.match(/OS (\d+)_/i);return a&&a[1]?a[1]:void 0}();c.IOS_VERSION=p;var q=/Android/i.test(i);c.IS_ANDROID=q;var r=function(){var a,b,c=i.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);return c?(a=c[1]&&parseFloat(c[1]),b=c[2]&&parseFloat(c[2]),a&&b?parseFloat(c[1]+"."+c[2]):a?a:null):null}();c.ANDROID_VERSION=r;var s=q&&/webkit/i.test(i)&&2.3>r;c.IS_OLD_ANDROID=s;var t=q&&5>r&&537>k;c.IS_NATIVE_ANDROID=t;var u=/Firefox/i.test(i);c.IS_FIREFOX=u;var v=/Chrome/i.test(i);c.IS_CHROME=v;var w=/MSIE\s8\.0/.test(i);c.IS_IE8=w;var x=!!("ontouchstart"in h["default"]||h["default"].DocumentTouch&&f["default"]instanceof h["default"].DocumentTouch);c.TOUCH_ENABLED=x;var y="backgroundSize"in f["default"].createElement("video").style;c.BACKGROUND_SIZE_SUPPORTED=y},{"global/document":1,"global/window":2}],121:[function(a,b,c){"use strict";function d(a,b){var c,d,f=0;if(!b)return 0;a&&a.length||(a=e.createTimeRange(0,0));for(var g=0;gb&&(d=b),f+=d-c;return f/b}c.__esModule=!0,c.bufferedPercent=d;var e=a("./time-ranges.js")},{"./time-ranges.js":131}],122:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("./log.js"),f=d(e),g={get:function(a,b){return a[b]},set:function(a,b,c){return a[b]=c,!0}};c["default"]=function(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];if("function"==typeof Proxy){var c=function(){var c={};return Object.keys(b).forEach(function(a){g.hasOwnProperty(a)&&(c[a]=function(){return f["default"].warn(b[a]),g[a].apply(this,arguments)})}),{v:new Proxy(a,c)}}();if("object"==typeof c)return c.v}return a},b.exports=c["default"]},{"./log.js":128}],123:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){return a.raw=b,a}function g(a){return 0===a.indexOf("#")&&(a=a.slice(1)),x["default"].getElementById(a)}function h(){var a=arguments.length<=0||void 0===arguments[0]?"div":arguments[0],b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],c=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],d=x["default"].createElement(a);return Object.getOwnPropertyNames(b).forEach(function(a){var c=b[a];-1!==a.indexOf("aria-")||"role"===a||"type"===a?(D["default"].warn(F["default"](v,a,c)),d.setAttribute(a,c)):d[a]=c}),Object.getOwnPropertyNames(c).forEach(function(a){c[a];d.setAttribute(a,c[a])}),d}function i(a,b){b.firstChild?b.insertBefore(a,b.firstChild):b.appendChild(a)}function j(a){var b=a[H];return b||(b=a[H]=B.newGUID()),G[b]||(G[b]={}),G[b]}function k(a){var b=a[H];return b?!!Object.getOwnPropertyNames(G[b]).length:!1}function l(a){var b=a[H];if(b){delete G[b];try{delete a[H]}catch(c){a.removeAttribute?a.removeAttribute(H):a[H]=null}}}function m(a,b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")}function n(a,b){m(a,b)||(a.className=""===a.className?b:a.className+" "+b)}function o(a,b){if(m(a,b)){for(var c=a.className.split(" "),d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1); -a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e=10},e.onLoadedData=function(){var a=this;a.options_.autoplay?a.play():a.options_.preload&&(a.currentTime()&&a.currentTime(0),a.play(),a.pause(),a.bigPlayButton.show(),a.bigPlayButton.one("click",function(){a.bigPlayButton.hide()}))},e.onEnded=function(){this.options().loop&&this.currentTime(0),this.pause()},e.onReady=function(a){e.log_enabled&&b.log("OSMF","Ready",a),d.onReady(a);var f=c.getElementById(a).player;f.currentSrc()&&f.currentSrc().length>0&&f.tech.el_.vjs_src(f.currentSrc())},e.onError=function(a,d){var f=c.getElementById(a).player;"loaderror"==d&&(d="srcnotfound"),e.log_enabled&&b.log("OSMF","Error",d),f.tech.options_.reconnectOnError&&!f.tech.reconnecting_&&(f.tech.reconnecting_=!0,f.trigger("waiting"),setTimeout(function(){f.src(f.currentSrc()),f.tech.reconnecting_=!1,f.error(null)},5e3)),f.error({code:4,msg:""})},e.onEvent=function(a,f){var g=c.getElementById(a).player;"playing"===f&&g.tech.firstplay===!1&&(e.log_enabled&&b.log("OSMF","Event",a,"loadstart"),g.trigger("loadstart"),g.tech.loadstart=!0,e.log_enabled&&b.log("OSMF","Event",a,"firstplay"),g.trigger("firstplay"),g.tech.firstplay=!0),"buffering"==f?f="waiting":"ready"==f&&(f="loadeddata"),d.onEvent(a,f),"timeupdate"!==f&&e.log_enabled&&b.log("OSMF","Event",a,f)},e.prototype.supportsFullScreen=function(){return!1},e.prototype.enterFullScreen=function(){return!1},b.options.osmf={},b.options.techOrder.push("osmf"),b.registerComponent("Osmf",e)}(window,window.videojs,document); -//# sourceMappingURL=video.novtt.osmf.min.js.map \ No newline at end of file +a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e=10},e.onLoadedData=function(){var a=this;a.options_.autoplay?a.play():a.options_.preload&&(a.currentTime()&&a.currentTime(0),a.play(),a.pause(),a.bigPlayButton.show(),a.bigPlayButton.one("click",function(){a.bigPlayButton.hide()}))},e.onEnded=function(){this.options().loop&&this.currentTime(0),this.pause()},e.onReady=function(a){e.log_enabled&&b.log("OSMF","Ready",a),d.onReady(a);var f=c.getElementById(a).player;f.currentSrc()&&f.currentSrc().length>0&&f.tech.el_.vjs_src(f.currentSrc())},e.onError=function(a,d){var f=c.getElementById(a).player;"loaderror"==d&&(d="srcnotfound"),e.log_enabled&&b.log("OSMF","Error",d),f.tech.options_.reconnectOnError&&!f.tech.reconnecting_&&(f.tech.reconnecting_=!0,f.trigger("waiting"),setTimeout(function(){f.src(f.currentSrc()),f.tech.reconnecting_=!1,f.error(null)},5e3)),f.error({code:4,msg:""})},e.onEvent=function(a,f){var g=c.getElementById(a).player;"playing"===f&&g.tech.firstplay===!1&&(e.log_enabled&&b.log("OSMF","Event",a,"loadstart"),g.trigger("loadstart"),g.tech.loadstart=!0,e.log_enabled&&b.log("OSMF","Event",a,"firstplay"),g.trigger("firstplay"),g.tech.firstplay=!0),"buffering"==f?f="waiting":"ready"==f&&(f="loadeddata"),d.onEvent(a,f),"timeupdate"!==f&&e.log_enabled&&b.log("OSMF","Event",a,f)},e.prototype.supportsFullScreen=function(){return!1},e.prototype.enterFullScreen=function(){return!1},b.options.osmf={},b.options.techOrder.push("osmf"),b.registerComponent("Osmf",e)}(window,window.videojs,document); +//# sourceMappingURL=videojs.novtt.osmf.min.js.map \ No newline at end of file diff --git a/dist/alt/videojs.novtt.osmf.min.js.map b/dist/alt/videojs.novtt.osmf.min.js.map new file mode 100644 index 0000000000..930b0db650 --- /dev/null +++ b/dist/alt/videojs.novtt.osmf.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"videojs.novtt.osmf.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/date/now.js","node_modules/lodash-compat/function/debounce.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/function/throttle.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/hasSymbols.js","node_modules/object.assign/implementation.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/function-bind/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/object.assign/polyfill.js","node_modules/object.assign/shim.js","node_modules/safe-json-parse/tuple.js","node_modules/tsml/tsml.js","node_modules/xhr/index.js","node_modules/xhr/node_modules/once/once.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js","node_modules/xhr/node_modules/parse-headers/parse-headers.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/mouse-time-display.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extend.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"getNative","nativeNow","Date","now","getTime","../internal/getNative",5,"debounce","func","wait","options","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","undefined","complete","isCalled","id","result","apply","thisArg","args","delayed","remaining","stamp","setTimeout","maxDelayed","trailing","debounced","arguments","leading","maxWait","leadingCall","TypeError","FUNC_ERROR_TEXT","isObject","nativeMax","Math","max","../date/now","../lang/isObject",6,"restParam","start","index","rest","Array","otherArgs",7,"throttle","./debounce",8,"arrayCopy","source","array",9,"arrayEach","iteratee",10,"baseCopy","props","object","key",11,"createBaseFor","baseFor","./createBaseFor",12,"baseForIn","keysIn","../object/keysIn","./baseFor",13,"baseMerge","customizer","stackA","stackB","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","isCommon","../lang/isArray","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",14,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",15,"toObject","baseProperty","./toObject",16,"bindCallback","argCount","identity","collection","accumulator","other","../utility/identity",17,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",18,"fromRight","keysFunc","iterable",19,"getLength","./baseProperty",20,"isNative","../lang/isNative",21,"isLength","./getLength","./isLength",22,"isHostObject","Object","toString",23,"reIsUint","test","MAX_SAFE_INTEGER","isIndex",24,"type","./isIndex",25,26,27,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",28,"support","unindexedChars","charAt","../support",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","objToString","nativeIsArray","../internal/isLength",31,"isFunction","funcTag","./isObject",32,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",33,34,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",35,"stringTag",36,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","enumPrototypes","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"arrayProto","splice","x","0","y","spliceObjects",42,43,"Symbol","getOwnPropertySymbols","iterator","obj","sym","symVal","getOwnPropertyNames","syms","descriptor","getOwnPropertyDescriptor","enumerable","object-keys",44,"bind","canBeObject","hasSymbols","propIsEnumerable","target","objTarget","./hasSymbols","function-bind",45,"defineProperties","implementation","getPolyfill","shim","./implementation","./polyfill","./shim","define-properties",46,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",47,"hasOwn","ctx","k",48,"ERROR_MESSAGE","slice","funcType","that","binder","bound","boundLength","boundArgs","join","Empty",49,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$console","$frame","$frameElement","$frames","$parent","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",50,"str","callee",51,"lacksProperEnumerationOrder","assign","letters","split","actual","assignHasPendingExceptions","preventExtensions","thrower",52,"polyfill",53,"SafeParseTuple","reviver","json","error","err",54,"clean","sa",55,"isEmpty","createXHR","callback","readystatechange","xhr","readyState","loadFunc","getBody","body","response","responseType","responseText","responseXML","isJson","JSON","parse","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","headers","url","uri","rawRequest","getAllResponseHeaders","parseHeaders","once","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","onload","onerror","onprogress","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","beforeSend","send","noop","global/window","parse-headers",56,"called",57,"forEach","list","context","forEachArray","forEachString","forEachObject","len","string","is-function",58,"alert","confirm","prompt",59,"trim","right",60,"arg","row","indexOf","toLowerCase","Constructor","instance","player_","play","__esModule","newObj","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_interopRequireDefault","_component","Dom","_interopRequireWildcard","_utilsDomJs","Button","_Component","player","_classCallCheck","createEl","attributes","_objectAssign2","className","buildCSSClass","tabIndex","role","el","controlTextEl_","handleClick","default","_globalWindow2","_globalWindow","Fn","_utilsFnJs","Component","ready","options_","_utilsMergeOptionsJs2","id_","Guid","newGUID","el_","childIndex_","initChildren","dispose","trigger","bubbles","children_","childNameIndex_","off","_utilsLogJs2","warn","tagName","properties","localize","languages","language","primaryCode","addChild","child","component","componentName","childFound","parentOptions","_this","opts","children","_name","handleAdd","_this2","first","guid","cleanRemover","Events","on","second","third","nodeName","one","_this3","_arguments","newFunc","isReady_","triggerReady","readyQueue","readyQueue_","dimension","widthOrHeight","num","skipListeners","style","pxIndex","touchStart","touchTimeThreshold","couldBeTap","event","touches","firstTouch","xdiff","pageX","touchDistance","sqrt","ydiff","tapMovementThreshold","noTap","touchTime","preventDefault","clearInterval","touchHolding","touchEnd","report","disposeFn","intervalId","setInterval","interval","getComponent","components_","extend","subObj","_name2","ControlBar","exitFullscreen","requestFullscreen","LiveDisplay","contentEl_","aria-live","appendChild","updateShowing","_button2","_button","MuteToggle","_Button","update","tech_","addClass","vol","volume","level","toMute","muted","localizedMute","controlText","removeElClass","addElClass","PlayToggle","removeClass","_playbackRateMenuItemJs2","_playbackRateMenuItemJs","PlaybackRateMenuButton","_MenuButton","labelEl_","createMenu","rates","playbackRates","currentRate","playbackRate","newRate","playbackRateSupported","PlaybackRateMenuItem","label","rate","parseFloat","selected","LoadProgressBar","buffered","duration","percent","time","end","width","percentify","bufferedEnd","part","left","_componentJs2","_componentJs","MouseTimeDisplay","handleMouseMove","position","findElPosition","parentNode","newTime","_utilsFormatTimeJs2","calculateDistance","PlayProgressBar","updateDataAttr","scrubbing","getCache","currentTime","_loadProgressBarJs","SeekBar","_Slider","stepBack","CustomControlSpacer","_Spacer","CaptionSettingsMenuItem","_TextTrackMenuItem","kind","CaptionsButton","_TextTrackButton","threshold","createItems","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","_menuMenuJs2","_menuMenuJs","ChaptersButton","items","tracks","textTracks","track","kind_","cues","chaptersTrack","menu","contentEl","cue","mi","_menuMenuItemJs2","_menuMenuItemJs","ChaptersTrackMenuItem","_MenuItem","OffTextTrackMenuItem","handleTracksChange","SubtitlesButton","_menuMenuButtonJs2","_menuMenuButtonJs","TextTrackButton","hide","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","TextTrackMenuItem","onchange","Event","_globalDocument2","createEvent","CurrentTimeDisplay","innerHTML","updateContent","localizedText","DurationDisplay","formattedTime","RemainingTimeDisplay","_sliderSliderJs2","_sliderSliderJs","VolumeBar","toFixed","setAttribute","VolumeControl","VolumeMenuButton","updateVisibility","inline","vertical","volumeUpdate","orientationClass","contentElType","_muteToggleJs2","ErrorDisplay","message","_utilsEventsJs","EventTarget","allowedEvents_","ael","addEventListener","extendFn","subClassMethods","methods","init","_utilsLog2","FullscreenApi","apiMap","specApi","browserApi","_objectAssign","MediaError","errorTypes","_menuJs2","_menuJs","MenuButton","title","unlockShowing","handleKeyPress","which","buttonPressed_","unpressButton","pressButton","MenuItem","_selected","append","_globalDocument","_utilsLogJs","_utilsToTitleCaseJs2","_utilsToTitleCaseJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_errorDisplayJs","reportTouchActivity","languagesToLower","poster_","poster","controls","scrubbing_","playerOptionsCopy","plugins","isAudio","Player","players","styleEl_","removeChild","attrs","getElAttributes","attr","stylesheet","createStyleElement","defaultsStyleEl","querySelector","fluid","aspectRatio","initNetworkState_","networkState","privDimension","_dimension","parsedVal","isNaN","bool","fluid_","ratio","updateStyleEl_","aspectRatio_","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","loadTech_","techName","unloadTech_","disposeMediaElement","techName_","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","vtt.js","src","cache_","startTime","techComponent","handleTechReady_","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechLoadStart_","handleTechWaiting_","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechEnded_","handleTechSeeking_","handleTechSeeked_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechProgress_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechSuspend_","handleTechAbort_","handleTechEmptied_","handleTechStalled_","handleTechLoadedData_","handleTechRateChange_","handleTechVolumeChange_","handleTechTextTrackChange_","usingNativeControls","techGet_","insertElFirst","addTechControlsListeners_","removeTechControlsListeners_","paused","hasStarted","_hasStarted","hasStarted_","handleTechClick_","button","techCall_","isScrubbing","seconds","percentAsDecimal","min","fsApi","fullscreenchange","documentFullscreenChange","isFullscreen","fullscreenElement","supportsFullScreen","_fullscreenApiJs2","fullWindowOnEscKey","exitFullWindow","documentElement","overflow","docOrigOverflow","selectSource","techOrder","tech","isSupported","b","canPlaySource","sourceList_","currentTech","load","sourceTech","controls_","error_","userActive","userActive_","stopPropagation","lastMoveX","lastMoveY","handleActivity","reportUserActivity","screenX","screenY","mouseInProgress","handleMouseUp","inactivityTimeout","userActivity_","tagOptions","dataSetup","_safeParseTuple","_safeJsonParseTuple2","hasChildNodes","childNodes","childName","baseOptions","notSupportedMessage","handleError_","flexNotSupported_","createElement","_buttonJs2","_buttonJs","PosterImage","setSrc","fallbackImg_","backgroundImage","autoSetup","vids","getElementsByTagName","audios","mediaEls","mediaEl","getAttribute","autoSetupTimeout","_windowLoaded","vjs","Slider","bar","getChild","barName","handleMouseDown","blockTextSelection","unblockTextSelection","progress","getPercent","percentage","vertical_","../component.js","../utils/dom.js","global/document","object.assign",108,"FlashRtmpDecorator","Flash","rtmp/mp4","rtmp/flv","streamFromParts","connection","stream","parts","streamBegin","connEnd","substring","isStreamingType","srcType","streamingFormats","isStreamingSrc","rtmpSourceHandler","handleSource","srcParts","_createSetter","attrUpper","toUpperCase","_api","val","_createGetter","vjs_getProperty","_tech2","_tech","_utilsUrlJs","setSource","_Tech","swf","objId","flashVars","readyFunction","errorEventProxyFunction","autoplay","params","wmode","bgcolor","Url","getAbsoluteURL","vjs_src","setCurrentTime","seekable","enterFullScreen","_readWrite","_readOnly","nativeSourceHandler","canHandleSource","guessMimeType","ext","getFileExtension","formats","video/flv","onReady","currSwf","getEl","checkReady","eventName","swfID","version","ActiveXObject","GetVariable","match","navigator","description","getEmbedCode","objTag","flashVarsString","paramsString","movie","flashvars","allowNetworking","_techJs2","_techJs","Html5","currentSrc","nodes","node","nodesLength","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","tt","handleTextTrackChange_","handleTextTrackAdd_","emulatedTt","clone","cloneNode","insertBefore","tagAttributes","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","setLoadstartFired","loadstartFired","triggerLoadstart","eventsToTrigger","handleTextTrackChange","srcElement","webkitEnterFullScreen","video","HAVE_METADATA","addRemoteTextTrack","removeTrack_","querySelectorAll","canPlayType","TEST_VID","supportsNativeTextTracks","supportsTextTracks","IS_FIREFOX","canControlPlaybackRate","patchCanPlayType","ANDROID_VERSION","mpegurlRE","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","removeAttribute","MediaLoader","playerOptions","_tracksTextTrack2","_tracksTextTrack","Tech","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","trackProgress","stopTrackingProgress","numBufferedPercent","bufferedPercent","bufferedPercent_","manualProgress","manualProgressOff","_mediaErrorJs2","textTrackListChanges","emulateTextTracks","script","updateDisplay","mode","setPoster","createTrackHelper","featuresVolumeControl","featuresFullscreenResize","handlers","sourceHandlers","selectSourceHandler","can","srcObj","originalSeekable","sh","disposeSourceHandler","sourceHandler_","TextTrackCueList","IS_IE8","prop","setCues_","get","oldLength","length_","defineProp","getCueById","rule","darkGray","lightGray","fontMap","monospace","sansSerif","serif","TextTrackDisplay","toggleDisplay","clearDisplay","updateForTrack","_i","cueDiv","displayState","overrides","color","firstChild","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","height","top","bottom","fontFamily","fontVariant","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","trackEl","addedTrack","addCue","_eventTarget2","_eventTarget","TextTrackList","tracks_","change","removetrack","_event","rtrack","getTrackById","selectedOption","selectedOptions","selectedIndex","setSelectedOption","option","TextTrackSettings","persistTextTrackSettings","saveSettings","getValues","textEdge","getSelectedOptionValue","fgColor","bgColor","bgOpacity","setValues","values","restoreSettings","ttDisplay","registerComponent","_textTrackCueList2","_textTrackCueList","_utilsGuidJs","TextTrack","TextTrackEnum","TextTrackMode","cues_","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","loadTrack","cuechange","removeCue","removed","parseCues","srcContent","parser","crossOrigin","isCrossOrigin","_xhr2","responseBody","O","fromIndex","abs","searchElement","IS_IPHONE","IS_IPAD","USER_AGENT","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","major","IS_NATIVE_ANDROID","bufferedDuration","_timeRangesJs","createTimeRange","_logJs2","_logJs","defaultBehaviors","messages","Proxy","_ret","handler","propName","_tsml2","_templateObject","getElData","elIdAttr","hasElData","removeElData","elData","element","classToRemove","hasElClass","attrName","attrValue","attrVal","knownBooleans","box","getBoundingClientRect","docEl","scrollLeft","pageXOffset","clientLeft","clientTop","scrollTop","pageYOffset","getPointerPosition","boxW","offsetWidth","boxH","offsetHeight","boxY","pageY","changedTouches","elem","_handleMultipleEvents","dispatcher","fixEvent","handlersCopy","m","isImmediatePropagationStopped","hash","removeType","_cleanUpEvents","elemData","parent","isPropagationStopped","defaultPrevented","targetData","disabled","old","relatedTarget","fromElement","toElement","returnValue","cancelBubble","returnTrue","returnFalse","stopImmediatePropagation","doc","clientY","detachEvent",125,"uid","h","floor","gm","guide","argsArray","console","log","history","unshift","_logType","mergeOptions",131,"createTimeRangesObj","ranges","getRange","rangeIndex","fnName","rangeCheck","createTimeRanges","href","addToBody","host","protocol","div","details","path","splitPathRe","pathParts","exec","urlInfo","parseUrl","_pluginsJs2","_pluginsJs","_tracksTextTrackJs","_utilsFormatTimeJs","_utilsCreateDeprecationProxyJs","_xhr","_techFlashJs","_techHtml5Js","getPlayers","_player2","_lodashCompatObjectMerge2","_merge"],"mappings":"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AAT5F,EAAG5K,EAAAo1B,yBACH5yB,EAAOxC,EAAAyR,OACE,kBAATvR,EAAGC,EAAAC,OACM,sFAGA/d,EAAA,kFAGH2d,EAAiBq1B,kBACjBC,0BAMhBC,GAFAv1B,EAAsBw1B,GAEtBnzC,EAAA,4KA0BE,IAAAjB,GAAO,QAAYA,GAAQ8C,EAAAV,EAAAie,GACzB,GAAA5P,EAIF,IAAY,gBAAR3N,GAAqB,CAQrB,GALW,IAAbA,EAAI+a,QAAS,OACX/a,EAAAA,EAAAuS,MAAA,IAIArV,EAAQq0C,aAAavxC,GAW1B,MARGV,6FAIAie,GACDrgB,EAAAq0C,aAAAvxC,GAAAud,MAAAA,GAGIrgB,EAAAq0C,aAAAvxC,wBAYP,KAAA2N,IAAAA,EAAAsS,kFAOA,OAAKtS,GAAa,QAAK,GAAE6jC,GAAK,WAAY7jC,EAAArO,EAAAie,gEAe5CuD,EAAM+N,EAAAC,mBAA6B,slBA6FnC5xB,EAAQ6qC,kBAAkBlsB,EAAA,WAAAksB,qLAwK1B,+BAAQ0J,EAAG,WAAOv0C,EAAAoC,QAAAqf,WAAA+yB,KAAAA,EAAA5zC,GAAAua,EAAAq5B,IAAA5zC,4RAyJjB,kBAAAnB,IAAAA,EAAA;ArItgBD;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/examples/hls-embed/index.html b/dist/examples/hls-embed/index.html index 2a1bf68978..fcd16902f4 100644 --- a/dist/examples/hls-embed/index.html +++ b/dist/examples/hls-embed/index.html @@ -24,7 +24,7 @@ diff --git a/dist/examples/osmf-embed/index.html b/dist/examples/osmf-embed/index.html index 38857cd849..3dbdfc8273 100644 --- a/dist/examples/osmf-embed/index.html +++ b/dist/examples/osmf-embed/index.html @@ -25,7 +25,7 @@ diff --git a/dist/examples/simple-embed/index.html b/dist/examples/simple-embed/index.html index de7a0edcbb..2adc6a0a84 100644 --- a/dist/examples/simple-embed/index.html +++ b/dist/examples/simple-embed/index.html @@ -25,11 +25,7 @@ diff --git a/dist/video-js-5.0.2.zip b/dist/video-js-5.0.2.zip deleted file mode 100644 index 22e1867a23bb22833317fb82133409d2b4b62666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11480437 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

    tV`rOof$<*{d%`9yQP9)7P_>a^3;sXDR zi9SskXWMmWj5B>j%H&$H^^*DWb&IRw)*_Vg0lQrVovjWo5)3>-aL`bj}1H zST$MO{taSo$WlCapzY7WUm-RrC>2LC1Cr>FNf#Obh@(}hqLqYnC1JF_XydBYq)i^< zd2Up4O>Kf&-a1Yb3z@sYMfFWfkni{mb88^jQo8*V@Ktlhy8H4W0|*(Jnol;od$fHQ zHF;i+&;EIE_xYaCCG8cA#_x-W<j*ErTP)trJ(SP|>!%HpR=d zDvm(jbN3?nZMt=%fidSm^nCR462gDa45bw(!;kZ~o~3i;v^u|PPq4F@ZCI2)Mlx40 zBeJUUcV|u&W%B)?eB#o(9nr#D(uy*{Sup29HPG)2f*0Fd@zX=8KPcFBsdAU(BcTjp zW22p-KJ4!1YoOSY16RVUHSI>Gy-UQx%x;4_a^bO>NDtC|mZdq*o>)@^is%QFw?7&! z(i$BvoWA=WD3~#Z9kJ$9WD&qENwE$=F^aGJMT&ByJ+6e7XxxpMc$-jD)5F{|FISlE z!qp}Ml!WPSazTBi24VS`E6vcFcF)h=Ets94x{AcPl#yw~!;9gPoRX@$3cl4Q6j`Gy zO(`08Pb%Inm=+;p;_3>ER?sMF%en0xv{@K%JT@LogtI2?Rv~XI3f5rRN_$;t_R+X| z_VISX?B||&dyU!Csz>sL+Q+0@ao7}-`OEm$V|ABObXS^oZ%AIHVezIL5b3huYnG=Uxo@bSc(Q7fU9hVa+gcjM!=tCL6Jc0K)jaRo|B_j znsAX!-96!=!Ga0XdT(()t4x^ejC&pyevp29ak=5IKkXu+d!=a??YpO4G*~e0SNd%I zJDi>LHfJZg&?TC58NfJ}BJkCy+xC^(l+#WR`vwktv9nZp3dYq(9(_x(K^YC^aAn>f zk6KPZv08}c9$SQLGQO~DUEyXnGyMuRMp+2WN_zHE11z{KmtyTJ8}Y|JVKfgSlxc*j z+ue2dKZ|zq?s}r-josDhFCYMba2W@UCQYK_XHIj0!#3rZE<-x12q!PJ`~paT`Ux|q z`v6(k4BfU;az>fTd7#Zh5td0J82cT!q8FrOfMQ@XV{WS%pUqj~n8DQ#h-l$`Q0yH( z1aJ$}B|X_yy~r=1z&EqBv9hCbB}FUb4N^bN%soB>k3+p@qF>)A$USc}MwGM8a>_)g zXtZQb>|#F=YNE7m8m04v?u&!V@x-bsdZIWp)(OjGe86e|Fbn*Q&gB;BNT0f z?9Iyp)>50IOgWM9OVDw7RzbBo8ls|06CDJjW6N>tMi~k=;hzr7EuKP&^33hZpBgOD z7@|jqg!>Kc<%3ICCqYp}Fp(KxVzG^fy?*`rt(U+huqmX6t=z?xub{P0zV$8jaR+Ti zvrmY9nH>8orv!ejC*9{OUzc3Y2J?d@q1E%`_|oLR*8M4sS?;K0ExCsURq;#87gx-b zU;T=y^7CbL6;MT~7Y_$mG+Q=bZMs`!Vmaq(k%i{k?3}X-V$X#pURswIn}edvsgB-T zqyuDrFidd=y;5t!-6)G1gMc)a4VY*nrIJ|U2@Wi-i%}p|txKe@o$;~*0*)b6Q$$%T z%G>1?0N!Jelwj1e1w^F=6^9uUUWKT4ZB3{XhG^sQUo{jA(96_G>RC# zf$9pE2M55_4TN~d&(vEbRz_39nzVRbWoOl?A_Pd+eM6T+5V{U%e0?+ND4a~i{~*4=cz7g7hLKv7zyaDGm@d@h3op#B9>armxmHj1`#q{B{oRkcd3Bb z9wcl=Op-Rj21RLH+s$Jry);kbWWw&n+S}4`R5BTLA4>E-4H5SJK~_e%>>#nR9N zhR!{7esK35BEF~?-9sgTGn7Y`N5k}0ohtTygX@{X+WTnN3I09Z%oKHiNQjyyBODMS z3<=!&N&GS{BIMNYCw-7ZOFj3QB3(_#v6slKc^u;pPh@Z3!Zdedpy6BJ0|m+iSNAR` zT9x~tc-)UAbe2m!C2-KXb%G<|PxHJ7a9egda0MZTMxSXj6a;6=VlFi&^8>Eogx{h7 z%QYR6>45U^5P45jg6>4$0%c>v|LM^xLXKGAj0)A%Y3; z4krq=bEV3%1B%*fDJ8aq%6L+6a*x?^-2wcUjA;;+MUWgzYqaFLhAA61Vw11?`k$Y6EJB4r!q&!o(m&GpE}EtbMfKZA0Hh0D>-#^NOoNE92?RV9tXkbHtrOh#uX%#Vl4N$k7P z)?~Z9F9@MT)KZQmcd*Z&9sfWjsbmllRG7F!?B?FBTTh?uZQr_eUmMUyI=uujDK1`8 zG}JtL97rBsu7{vTm$W_LxxvKSU(d|yz&W6q3PNEX9;8<&ifW5nSx|ROEp2R#=;FBx zN*#x>vmFZJ2m}M=J&2+W9j9J!i(oi=CG-nW+;#Li=ZJ}G#@%cqnv^^vo&|S^1Fd8j zD_j|8*2Y2fmIx}HO@Wc>a>!sP-aJTr_X2X!aCS8QPtY0yN6v8D70RShZ_Y*LocdVk z%R;#n?H|MZkwK6j)ghU%t;RR#ipee)A1ZEDPL;e-e6TU0+!;1Fxe_)v{uh4(pY;4} zLde8{Q$UXN^2W zj)h3}j}`XOTb&GqtsbLA$vYr1p{xjY z{~lhp8OT$d&dBFdz1l_%zNqzSd>&Fg0#LMT^j9_}mK#%WrXk4*eWm;x--M|Jfzqq) zomjOiw`299)2<&2fS2n|s`-#MJUACeiZXJJk#dY8mxK3TDAAbN#9wVNyT+non(4&{ zm&eB}sR-CX=->HoE?LrGL`2LOvgB?LazV8G>)6s2bg4W8Z)P)`pWtGQjY15HDll@# z*tT_xBhG4hha!suXChFst^g)rcIcw>(NxQAwQYhtPrR zbB!RPghvBDFChw|fjQDpwPRn~anNfE%SJ}*{AjE%Fp@B6kYfsVsA;6=bkKV-H!b(B zcT5TGOgCyjI~F#0ms~VYC>q#V>tOO5EDqlmB%9S#%Tci9v=c6md#4yz?KCJ@GwfGg z1MB<#9lN3B7DrxrXhfzKmajY*B1SuhLi^T0kCTWJ+}@8+ntx$9WMXo0EG|l&>qkU%({W6M&>6e34{15wx_EPyO=?Tr*oj05j-4kE;~&i*c-k0F z=|W!(pnONS50yL8Iv9|2hAe=){#(fYC=I;F^iMwv%n0xDrd_3FnWHR6B}*0rdDUb^ z(DNAlr%KvtN{5?Jm+aojC^K+J%G6!(W@tcjhWdrY$QY7gp-EXjw-pG?TXxY|LXeAC z4y+NxcjAj6h9){ih4B!#5*bdv0&GCn4~QB zBrq+jwXJVscjJ^h30n#$mKgq?3{u|q&fqJvMeS15 z*R>C%pEtvBw*VRg>kds5NJj4Ub$1tt{O&-{L|>pmI%F@;!4?N!u_?RYGdpap55JBu zj98y&b)bB*Ie*|RfT|*|baGHi1{saLt0o)a?9v~0<92}PN_r|V**2}p;?3Z6_%n|w z`+0oUM~(uFi1X1y7#A+uU?6vj}J6xrd%EaYY&)z$J|Q1IFS#j)>BtLc6a3pyLmkSLAZIsoASz2TZ62&ovo>b z-f$HK3IVoR+n$NN>^mqd%I+XReyVzre}!1*Z@6!s&Sw64dBz9+ZS20}T%l8j(v}7$ zr+`(;KE*>Clvmh)tu3eCd_>=O0#T2;x1HXX2aF!{_w`R~HQFBR$)atPXvaOo-~ms# zJfL6iDoEWi!4HChxkHM_gG_^h!mN@)j&@u@=z56RB|SGeV1w}3mn?wu%X4a=VF<{n zCiol#(AOOaO1ouri3&(W3a3JJcpHF{aJe{0zt82{DXk?%)d0Zq!>7RY&Ev@DWr_K9&A}y_TP%sQv(bNC zf@U+m(hf>g{s@v>d9ek~Cy<)=ZZyqmN8+kDht0q``5+z%XBfm(+~i{mbVFa_J_VTf zlv;a3o>0^t(2*-=&@poEEqF1qf~>t8p8!o%)6+(=>w5SBs{c3?C2w~)2@R+N%A)!< zaJ(bXZa5wjr&s1b{B_LZ$BE1>Nq$c-fAGLQ$Taf{WF^nBYaF;eD*JY;ImS7~&1v|n zxK#+3g6Q3Ob!K)D^xzq5^+##$OD7GKx#fU3S8NSI{>-vKUocDjXm9 zcF)`%#jxi0@ERp{N18p#1HN>FF2w;D+TpxnG&DH9E~o>|uy~J*4Mu9P`Fk}216VR3 zrhr>B>M0M3AaURl0MAAs=eWrxLts3f;w3C+=SYC2t!4C~_kMbbi;1X;g4n@SaK{F1 zMix||g8CUXxi?Gi_TRUap+CSq9Q!Ae>A`UFz|X9b8o)G2GsQ7xIJ(`d?*R@^Ogi`; zCJNh9o=Y99-lnc4FuZDl;3sLix7x|$(J{#dxNac(HW0*h@uiLnE3`%Vsf?y=h>Bpd zOw(*0h{Ht?OQ2qixsVN-D01^Ehw$hN{wTn%$gtKY>8eKmW;EG%%(eFDkA7N22otxn zjRR?We-JyB0Gh~J)+fMbvW>~I0I?&r-4Hb$bz>^Af@V_tgpurBgekc_DiL^*87I>O zmun_EmojAG8*Kz*0mwWK4m;K`$Y));NJ!qJ`2}Ph?&Dw^5uuFzl=lwLH*Yd}PfetR zF9C(32sk4Hy{oQXJL;=LdUzf&VafG2h4Go9DZ*I5FDXwL8$)CTxq;kJE(gc4zfgEj zlEvuf@iMW3vqrj8NQaA$w7MUC)_tDU4a>uLL_K3q^5M&m!H=3f|wtQ8YV-`!E|FeK%p2k{Bvng=x(W0(}1rlFYN{0CUs@3q!QLxPwJXDfrOrHuTF`C>`e>;}5EV(RDT5a`0|1(sp@V0r}2Y3<$H`8xYrf3I^Oxn*sCM&wO{C~bRonqtV5C~|5cP*M(C zA*~0tgY+>p;gG@MAt`R}ZgKTQ?D`AkGV1g@34&gj4{Lm=vwgAF+Z*5?x3)$F*$Tm5D!4>D6LM_E}`Ew<{S&6)Sii!TrI&4x<*W!3)vyirmWO<95B!Ipvi`B0lzCamQXy5A(*2zE9t#_-uD><4*-sFcN@#i&8C+pxFeow zI9278`feGQv;uP#y##c|nGU%=O(Hahz-jn4C@@uv<~*PAQl+oa=8wI%?mfqEzx!Rl zVcu!BWa1~f@IadB-uPlN+QNF(ww34pc2R#YfCG0cUZvaR zLw1!>q_WvpUK7|SU>}40gi9GmSbJDgAW$I#1ImGeKvw!W;mKqk zjCmv9^@h;}ZQG~~tU(98-Jizi=Nugw=ghcr8M-)bWc}m#gOE{)7zZ=us3&b0>t0Q_ z(J?JQfPnqk`WLg*AV~KKduOT93Xg4qGNSXCFYgMmX4picoS{+90se9F{2IIKkG+FL zDZ`RdV#U2z1m3+G{^$&j@9M?$Ru=khmVPfP+dV~ouXB;O#8=eIcD40<@7yd`n5{#D zbKvj$zpyW%3nbOyZxJ=*5;nI#b_Vk2_$f|BHS#{w`O}bTNI5>SWG}MRhr(v(E!f{J zaxaiAi`-(X!y$KpBxkv8uyx0Djm%YOpJ+MVIykR^l$44TI!>Fm}XF?yl0F3(-9P8%&TUe>hUcRk5 z!X#aPqb#=ZAKmZW5RGgQIq*r$4)J7VZ1z5N;8W)`&(;dDb0Kq&^`RqKX>u{f zLY0n&5^ZzOdJ`vg48SBzq6Fu)sXL`Wk-`>no|!iehzkCU6z6TYbP}B&yv5;+i!^@- z=ZW-fFO+S?lidSCkCLMv1CuP7(*sbgzV$7w#R>?2WdInz`E9UY#8CHojV|Ah4ofQT#f5}G+y?17uZBf2xsv{+siBld=65Y z7Exh4DVX1yhL#s+fpz;yLSwKuaJXu7Jd3 z5akoF*LTKs`ax?u7z`Az9O|&d2r$Yl_7lfza~+?EANeTY2p~IGm^kE~YN9qfPRhPY zUq}PudVVw>>R*vRrZx%WUCA$TnD`fKFeZ_Wqdd!651?m3#Imsq(qJqG{Xv+BZIlvr zgT5^H;IJ^I6Ui|=DWvXT5>^h;BwU;@bSQI?3O1a8SGRxxbC*XCaU<%=YVpY3z8idXYqZWz(8N3ZtUj;g{~&tb*zjEkIK(d4(^lYOc8iab}fynfJZapCxjEIpxRYh zjCfVRDI|z716A0j61_<#9c22-#?87ATeZwF=~IuqG`?V;4)Dv@6_}!}z!a8`K^)#z zh(t2PS{VM=Gyecjs%e#zL^VqsWuWUL**~EscQ3S0OAQ-k!z#Em${zQ^DAZgH;_~Ht z(%TV>hiY+rL9CvHn>-CxhZnvpi#%W_u!&C#*B1Oi?V;hsj!P%Z&d0?(!WA{JEI`V* zmkg*md}9X9gBns3=#wbY`kah&vrc2 zNte0riUS~owO~2{hL)Q+$PtU)9P*jIGodTmtt5a)tH12NK0c zB92a*mLGjw-TX!LV^TnVE}26X@kFyGffPFgtBKC|zTn3c&*KtvJI_Gi)tYnu`eUFb zp^Fn37zAk_w00846ty=;%?HjKNIi^5W3X^%I}!H_e-^*%Vhz-y5KfJ2R8JyxvU{38t}YdKZq(MM?mT3fltMsW!V|o@rHeYyzn0z`b~eqRn6)3oX2T!BHD}^+yA=}>LrPU zLRaTu&(h1LGIG)#VF%B>#uLvXQ#!n%AFd=VJ?Y-pBH2RI;P16(g=FXl3}1%!u$-5b zP|;)Yq4yui07mo}4tdJqet3oeXnVrF!3twf0y+vvn~BCGbyy#4ep^^*X!&6ef}!Q@ zB|^a9`_qPd9VaZrpx2^oFmGrVK=EvpiZAN8H;YrvYdcY1>UTBdHOl?n?otgeH!AsQ zewr4cK(tt&>2bNC#j|Tu6+)tmdMzr$*C5p_dOPMN015FzGmShpr#+H2ZAx&#!e7r~ zo{qn+ZcNDoD)AD#iLGsWip)4J1M{qBA6Xg(NDSpCu(9;YvFQ_cP2W^<|LDo1C)?60 zys6W=BV`Y3t{2@TU$p8#JwNWmeeu~o(~2occcK?!WE?9Y0S!@md5jn^1IvMSZ&mU& zsf=;YeOxg~kjD1ywZwq2Lz5Y5J(auHc#1`3U|Q|8I3H&T z!UK|m&G;jD5hj5L&CBs^@1M(o*hFAWL4`b6e8`1wj^q;qEWH6?2(!Bi^s)| zbC5f|l-yOtvWHNbuYs-j$$#;}w@3dkTKO1g$i$;2=xrK`<12fWQBGI(Up; zs&%0xT5*6^YaD6q$6rMP>Ou;@@^$y%i18`J-4H7-XO=5v4Evw>r?>rYn@@HgZ{N3P z$XY3DjY04{X(oaD5wwHs49K8GBAJco!sRW_o^~CuN9&rur|4F1yXF#B=>1z) z1~hk}zBeuzLTsOG%7mXQrf3q2B>7;xiXoqhx>m`07Pqz-8-o0KF$EL`lgq%Qk`gp? zFN^i$yg36YT*w-}oE~Tk-MOL#xQae_{6deiN#ze4r?UFTmL!C^n<3(d;Gv9Y4!XRh zb3t=4fM|JE%(j!RZDOG41bK(J3|_4){elFl;fvFnjJ>fncbWf1;E=#1`4)ve_bv}0 zb5N*-o=A2Kz0Lt}`I6f58GFZdsf8U##SN%mXJ@Rzou&|#l1P`eLsB<1s(n+W}id5GJu+6&!@9X==Cy% zgmy^qP&{U6`2eKGn0sOPz9n+;u=>rNM|EIv=T!t|DcA$1cZ3tmd0BQd!GbS9d&%#$ zph=R?wF@f3g|9%r6Q8>LBL6n9rO5lb`miW0wC^o3Ol>j8PIwHArPZG6N^IfEmze}? z^eLqq6lCKsqG0a(4qHGWNPtB`YN%>A2azZ$glT>-7<32{MK$GvDXL8D3Us3{u_F7D zf-CGHMy-iiC#?hkZaGnw<9YK?yu5{;cJtu`bg{hgtWWr2UAU%#cYzY1cdTg4ACyfG z!#zuw;#ZVWB?$O~rFtO0fHM!ba^XNW!`9^)f=X!T;eE(foUC3qf}ynwAoo=`fTIMY z9H-F)F-?RjEL25emEsVd!b$XQ6!@$Iu!2-TxY?c`O~Fbva)_>p!4rnSSP7T+W`~dk zZ!0uAX0skwW`{k89r;Hv0(N~dI%Bv|G5{4HBnBP57fpRV*gEgl6_Al(Ax{ZB&;X56 zwX->Hh|ajMJ!Aki?4f+9HCl{`0$A%JeX{@&OHkLsMA`ONqQYiyO>Fp>rr1`ZjG?d6 zcs+?bR&j=hG(%Fo~tx-1e2T_?KN>xV^v>nco%sk$C zgHX`)6)F#TZCmgvlaa{Z{e-nof1pV^u_`M+hM28A+OOPZqLUJa6Utx*X8m=EI?TkQ zLl*b9BbB-uM-h+rp+Lcn5UU0vZrvin?XT>l`Oa9=C+%TUmrAEt`BxW$8vTgXMxahaeSo?CMb^|o%y zyB^yh39r_jmtKj!A$7Xd4YaH8C1N;<*p5ki!#B9T72OrReCuZ&qyOyd0HFMeUWL=q z>A`3QtGtm|^L50LG@loeU>?>Ap4;zYy@@GmE;S(K@v}1P{_Sw;g%B7Xcx{Z@xBmk$ zS_4vH)EDep>|fY@T1hHhCjrGtuwxi0M4iD&pD?!~-NMx5gtxH9vl&8Vb2D}_^w8uD zuP+NN3VfQC_2Dmq)(XdD@dYPUc*1g5e?Nn(Nmmt^y&A9;_Uf=hR9rO3R+b1H3`KjF zZRN<+klnme?@R8e2Yvh<@)&sqeqF`9pl{_~;8fy>)+$1xMOK<;QvxG?R_a|j0zZtA zUH0)_zaj2JYU&n>)G||0L$^*+Cty)atc?YjRZzr3u#^paG3}NsE5ejrCGj zyt6)2`j^@f*S8jM4uVs04n9c6jbif^ZYXtXJG5cyx)v&UUks#zUyls$Xa#h5%Owbj zz6uk8Ke_@b-fAgYxRj}wb1Hl${)AoTrL@?dv8ed(3CUxAv6Q8YsC^lPwDU}zLfso~N-r;fyfng|! z4C-eJrU!p!^&HQj&U{6}q-KIz&ZrUc0_Mieva{~J&~99AjP~0)V_Lj~aK}hIB&-er z&McW@Qh7tz);6dCVs~q%;18PYQr|p{FTEe=tnTuJx7dfZY>i+8b~rtJ?b8gFg)ihr zC5H0TU!jR{o$&{7XA4}7S_JwRVRp@T0EmbR5hM3hek9x6BV(;v0EYjL&uk5F+CkuB zMVI%!Dl~D2b(^KZC2cyO1Qy4#f6QxDSSGE!{p0hajF4)X&?X@V&o?q&*!o0&^=Lt)O#FVjsEg*f`r41 zx^(;-$}M%h95GBVY+3gg$Qq!SG7m~lVvGc34*|vsppKI?le`j$bVSB)Q6;VJlE?z#ox@rt$MC#P>mGf)G>^JOzm#i?O5uo%ic7Hydyp!_O z+kE^ur@XoO3fh$se7Gst5xSvMc#d0E7_~V#nNDHrv;4>n#zLQtFHbkL9`g+ZCk@Aw zKaY>TxqIh}J73-{=1Tq{%A)zKVi+7Hzd_-(QGYG1KV-t>_^E59@iWwQNAZ^FIiur; z2-rlVUu^=mCWzAEvGl;MV{5kXEJSselo|U?V0ANr_J&=|0)iT@Vgg<5LQ9W-3jr|H z8NymT9*}T1#ZS6abhDOAcF|r4qDCp1sH0$kyyk1>5+;ScD^z?U>-)p$>_rSqj;hbP zPxbB(%5$r`MUr9|L@ok(#I%SLkTq|LNj`dIAZq=1fx;7bRR3-H>%Wz+-A%(W%+V-J z@)-H1t6EQ62niJ>_wa}CsUK8o@`fvGljq|)!jr>h&^UDvE86gDnvXce4<*P(Ey~dK}?tw;7FoQ63EiL{f zhsFPp`Ej^hOmV3S89tx7trg96RUaOWogPu;5!F>4ljsu68R=m`VdxRgUAZgvQN z=u4ueSMmN6kE)R{1OsMaP0uZ#^xYVaGc zSmBWL`uD!Vg?8?g!C{D+0-UK`26>9}g~Q~|&PG4WODlauUHQAlj6fEeHegMYu4(Lc zk0U!TZS8*1*NgK7)b--LRymdu7>b@*SVzVcHB4Ue#&T}1agfs(Y1rDM00Hmigp@$y zy6#HGhQWGnLI4zUNNTE3U{ORk^@B(u8dOJuMicsQuG*PQAaEuZ+>1NR(N{O+Fm+S% zz|N+ZjMOXod~uFu8XbTa2Np_S9ZYd=B3zB{#&+IEt6kkm%A~&#lrR-YROy6BSU(7d z-m%JhfrH~pr+TUwr_e)?W629s%N4a1_IJ3KB^JvBj&lU%?^&hs@G%B)y+w zE@rcu%XBb-bPyM(17J6<1l+;o!hI-I`yPxwL8&3Lr=%X9n{5P@=OQ|P9;#{r5B7*5 zP?YtIb{}LtynDkp1O*#(^{CL5P5&!3<|2oUW=*b>fDZ=hqH0=9WL#kxW6${zTU-h0 zji|AP6e$s6!U1`^r;TBJMDUR?rD>~>qt=)mX+k=5e7*Xu6)eZ)+C|sCY7wyiYOVF< z+K*Xs&;2Jt{!_L4ZgZWHkbcTiP-%W#C5{w#EVngU*E0?u4g=JJzVuLqVi$0=&1!U?5|t(=_=P0IAdB zLSY@HnoycNHfm$*X3W?QN&DEqRG(DONhL$vA;OKHshW+rKA*SAyWAqySKVgR7xg>m zjnP6I;_u9|wRJBVMFW=`^C90h{9&DyoMSRyxGd=?P}#H@{Q^CBC#xr5)kNtn-F^km zNh{P@QFZtn8Go`{@fs|vN{&QC)Jex~H?B*l!-gTa7soL8aOXE z9kAs3;5|f#_b1|-RvjH7+8gxOGi6>O1pudc_i4<4Qxfzxg_JiO*T3;SG5ZuAwfF{i zOBy4=SrDLwi8H?AH~jOwNI#@kuI@v24VN7qfK@u`To|)3)h=DPo5rBeW3t`aXxXfk z^2+CZ&OHc~bSzvf2t^e6(#Vkm_I8|>2nqxp^%jh)P~2SxHNi*h48|dOc^W~huhxzs zvOq$fS3Un2AlBvp!UFsDK0>8SIDE4-%#02W?sN-ix@_h3mKk0ijZwdRGL%x9j0K*I zp4?|LmxDUwMhhdG2YZ9z;6Lyz>x+PnW=%3nJ&DLlI-^zsgxP26i6GT}xGqu&x+5By zx1@)D2^xy|-9AJb@;CqWoxQ*H`e!ImHya;%a@rja*#pt!5hQ+5W&QxWzZY{KU*O&$h|{<} z2!%y+iXCVQN96d-;Gr}^Wt}&qqrJH&Bdk7y^60_i?It95yC6XXKK7te_dy@5*U41l z;p7DMPcPn_iV$Uo(@6k{BEYc5JRwpCmXA(@G94X71hSo}L}fyK%HSa(=2Zg^x6LIvlq{|TFCmM z8pR1?Wn?8x6bOsuKAytNS741mViq=i!|ty?Fdfh9qIqAlZ+-WCjI&O(?OEb!VTeI0 z@cPoh@#Dzb>{1@rn{EzKHY?dg`8;VX#ZK2TVO+j!y1=E&ASx`l?=tb=(a)4&=Gd#{ z%+j{!LtjXnmlEpn1%wfZq|9tWoPvtFm*10rN{WJ$1ba@m0fIen4D049_VE4Y58L}s zpY46$LCl#uJf+(OjObK)Enqo;kw7#Iu+5vFHYzFo9lR9uc&BZnVV-R7Z9drC+iY%{ zy!W?J_yu)!Jtil0NnJsVXnLT+{8rvih>Uw;{TrJ!d2}QdEre$4#q;OePxtn_Aj;eL z0ZKtgY$Vpls6T-~JIHClwp;kuM(>{f!xwumo^N-KmpAmU8V|m|3o<;Ro9Vc>QtW~tCS9|;EvloB)zH_=?R{X1g2BCJyXT+^| zSX-FxO4v)X;zU{?VkYOa=^^!kOV~GH)R7p_0W+uB>`gKS$Z(#S3wFC9r5Fu#Z&|AIT%YzHnuU@qymNR_+ zhKDGvl5|hafKwb_6Zpa}nFj13Xd2z;hYUFo1yTT8z@jmWl%HK%)s5h8qE67(+sji` zphF#ji}4|@{GK6&4`hZEN8~W6&zoHXJ{ZB-Gjg+3nZzTFhaY$4wp5h)!-h!(Ivo#*T{cm8x zx)n=-BJ@7F+ZZ4NXuHo1jI8VX{tM~KRG>HBpKKh>a3#=uL%*KFO9%^NQ+Zy$(^Q`c zjKQMrZH#YYTY1qflBxaC1Mz**sMl)@al&^LyWA5AtG8~MAU7&^RDPOv6zqbq`*01h z3d&QVMBqj3AlQZFoBn>5cmx|WLnl;noFBFqs4nu9&_)z@a9-~C29@UT~lmnX}5W5YkvJt+iFu$3|;iJPGsh=c!hk~5=-Nk zd#fyi4U(Idi_v_SmgLI0Hosgj<4r^vqgGd%pv?j{O~evQu!{Zn@{6s|RS|^)vzi^fOA2lmjvaSFop5>4n$_a-izm6TIH?-K>L z4KV&=!-ZAnN>VDj0vUC8Mzc<1H*JcxT6;*7@wqxeBg)h1g%~yL;9fhJ0lK?Lq0fNt zxi;#G_-Zt6V6E}C?=W2lTa7M&v*@G)OKc238#VR@vsr>D5k1jlLlqmC`;|Stb44gZ zeeIbwUjyrb41#e`h6eou zYp25p9nBJ*NFI8bo_Fu3+^C#ve!40L9^_AYRh@w11^Pnli!7pzt&^t7H-VuAcDsxq~G$wpOhv+vDra*}LkPbn2}!>kZ^vF^XGq19o$WimvZKOmNE@{aW{v zOS*saBS@V#2OKzV(RSl_(H`QyRgXtEkdtQ@&yJ5_bX~ct#y4emCho5UkToqo7JckV zMq8juo6@q-*t5R1l8z{uG61BP)GDyB#C|xs=6>a zgVit2F`0sGZ@{3leP1@+^wJ}L5RHOG4@JfLNcR-M#Lr;jD70dI(eS}IC{{>uq15up zWubx^;<2|04%{b#P!rVEv~Vs!aCri4%z9J7K?{tL9DNR{qU;}nOr@|_lEx=Z(Tvrq zWs1qb32VW6MRH;id3Z7qS5@Pc9TitpK?>ArV%;nynw0z`p7m*(ixYz0DE_`mx?*%7 z*Fp-Y)y_|^Fkl~r>VGGM-5gv@AES27j5k9?OkTk-792BN_%@Nj$4YH~II}DjaIBft z_h5N>uq9ZRJ^p71gZg_YGGJuTG|wlOEVX({E)FdUP6Tb_w{u=~_}E1;Fj(dUA(Dz+ z8O6jqR1`2uLuY1wLf@|8H|SV#gD|%qqADzE?5ZE@?AtgrT$@ZfWMHnLKh}?zFEWE< zQ=mcmuz6-!2B5I!qFtS%+24_`tSC_KGSmJb_30^l>33cP(ULm1re`p}Fs?}IvFRhz z-oNfXd)kGN5Iy-m?mmER&j)wxxk!F7O}%uZ#2S?NuqO!_3`6m*(dtT^h`0j}?pReM zi;fNS;O_>SE9!g`-o`_;diA5fp)idKc<@x==^eXi%|1<+Xtl3f6B?P}M2i?MR7(Lv zI8cv9qjMOKxE1WZJW|XG?lFkR=@ZE!h=VyC&&+-_8yzFS1OzIg1Hk%pC43Nu6pf+J z20lhBTC0f%K#n2w4XGwE5Z@V&$qs^oECym4o+S0RBqQh3+jck8C$-C`6n}LRYHmPi z*kPA4lRfN?&{GW+mf;qA5)ueZZ{ClS;t3>};mNK!kF8-zlJ#rMJ8jVVO&FLS8ER8+I^5x#38Q<)VZD+KAkW`pu>~g4excuu-lW(s7yQ8xV8*zP8Az- zK|CK;D1G{BjnCI{ZX*~n$PPqjkwQ2+@@si!c~|QkwgZ<&ciiU7 z3bnQMsl|cs&xgk&HQBr5g;3b8eDbgJ=~;ey4=`Hx2b7mQ94mQ!`~>;MHl%e3!+dm- zJ9u>m6C*WR8+Osr=x)s3!ky4lEE+#to?OkwF+@Z!?Hhq@BEjh7teQi{J`A4##y|Dq zgNwf_2nSp`En#2)*!~N%>9C6s@IE=h_OG^+qPXyuw^D4e!Be{T%bHarlk};mWT0Qw zFyXmoaCXmRe3e-o@0V;`ENSRhQ{X>75w|0X`A3w80~=x+qvWjix}`=SiD^_vo1OuF z=Gm{aEl3#A`sTyU1xwP5c%wiJI^c(V&?UPN3Q0`DkiODYL5dV;+;>qdh~FkKADmy# z-}Jk7qvp%&pg98nc=S%kVA}Od#xkyOouPbCkEpX9oH~F%=O_Ln#tCTR9+-i@LSEA?CjWu9s6$v}OX`^#17kA5*#yG3s@L$* zMHhbhZ3-Mh`v1Z~ID4QGgzPD6h)`q>3FI9FLr%=y0yBNOQiwKtUCIi^j~cG0ldlkF zwuXqT`I|Kz1n8=2W3O&|TQtFN`tCmP&XYq8>=%Q?+2;?_2_kgv_wEe-`75?-J-&lm zV=)@f)?+vaV1xt%8J=81IitVs2q|R5I(E|GZ1|raKIh12@BLu8QV=RdYzQZKpC8g1 zfM@r6_wHbz#<%CL6f3}vXKg&7mOPI$5rb{QbP?|?t}#dN&~;_Ta)#-#7kp4f&gm#c zSm*8DUHr#??->Ho@X^`f?0Tz*GKNz$GA0NG~+5+kx13p<*ziA?@@eu zU~Wo2V+anAwtGH4Lzz21IT)XidcITXPd@PRz8mT_&XVb@=pc0(f(WSsV17i~2t+tkA0%eTMzx%K^JR#fbi*(j*;#{Q6kR*ow8vC^C2hx_zngLC09gooqEo}J> zy@-!p>8jrZ$g09QLN1CEfvM0goV{U`S854XcQ%J&PbY9OX;1`d-Bvg@nin0RApsVN z_oj;@P)4>&cdo%kLFzHrJ@$O_auVFZhJX|n1jU$$GKq4}jL^3LCi67Io2GsTYoC$V z$$E0D_mD1U8#imXig}B$wG>lALG%ba0*4kN9f}B;;6HMN>-vz<5d>0qk#w;hOTH0R z9>K^rd;pmO3jEbTMTi)+UJ6B)eHMWld7DK5P#0+Y5YIa}VhPrAkmPq}5Qd`IZX>tw zWS~qZ=mg+Jmid$%{#rl8Xxzeoy>AUo?7_ZX2Fr^`fEg`DPr%}Q3pNKq16$M^6u$tk z1NHRafOd~7Qz9KexfpQL1^ZB(2!UeRzb3HJ{Z-&T@;VBO0bU#~#Ly-?>W*yu2bYSC zNbHlUFa5%-rG#sOl;3pstMz7z6W#O3ahDg;N-PocxtDaBfs8$(ubeK=0!wgQHd&qy zFJ!S>Jk@tPz~cC>k!tU3y359~Lr_-41yq1YX7ON4ApzGZC!;sZ`rjt|<`j0wW@d%0 z<#;ms`Dwv%82y`6Mz>y2W@4yb7MD7?x?NG}3UPmJ>{<{GF${nc{v{4;MXrGStQIcF z8gjwt=kJENHK)g`j`^G94iw|0?|;nOlvt$GBjlJ;WBe7|@D%IL4|);2Zb4M=Q8QTu zS9YL41up7g@|dC%C?=3m>KhMAq0Z=X<>!3}I1bDjsfKe#HGmIbxYX-#AMH=$i-*ga zoKF99`TO|_uQmS$05@R@?>*YSdxvQrhq&SB5c#cl?%wmc;Mq+UfPzqrMP4Ko4-m%4 z-1^y8)JE^G8A0H{w;v!lBW@EsWnSpFNqqhKv(xF(C88X?4PLZcLtIuiSy_1=_i|Ch zMVJWcfJ6CKU7@#7sNL{3`0TS!w?Ez(Y(NZI=N?|S8svkw^BebnfA==tq;lBy>_JZL?p@8zR407%^ToP;t{}d9S0J|= zG5DRCIkbAF4u7w4WU?zegxJW0ySWdm8C_nCC-V)zr`lfJ6PW%2d85(oJ;7#jk*etr3*cm7Tz7rQUkmT{jW*}}%?KGp z8u^O?d~*182x`!&{ADqRi|M*T@1&*s>wC9vm@>F=!8i>|O(CZ{`q|wrHbmRV4Uwr!U_T4*Q-hUN5wZD(GAN|MvZQDt=egEA2 z7=qEax=P)g2LxPfeT|%wo}a@D-mK~$4fgj(^C#Mo*ojt%>a!TAx38mqdj5R$AD1{v zT^{WNc$koa=ixU>(DKRm_FJ@(BYT<=`Bs`zuUD{FJ z;_KLo_O04}_TRCK6HV@`yeQ)*WM4-*wHdf>v(7n~4lX>L((EjZe4btdRn`vss%*%X z36Z99hq z!>-qTMfeo?&b<*bu<#hVx_P-+PdJ9S ztqd!bF>S)aAQX&l&}T{lc{p*I*o+Crv}$nkC%1uEoc6IIWY4I$atX;gx`$e*bT^7u z2)baBKPo8zfA)YU1mc^gXUF4{%UOO#@&uS9_zcC(fDe)b6UKFW^|RyNpSzzgSfC6W z&KL2seQFqa7+}W_6qERx2TGCy^MMi#mmMh4h6jpHp(H*w2S_h)oa8amQ~0U@@1k?7 zXqHBjWb*K=IgSY|5{J?-4_RcW(Rbo`=G5=iH9StShDW1ZyO5!OVVw%Nu#QXL=_z<*6 ztfTX)qW$e&w85-l1P`gAXwtV67*WUOezo4vpCHO?nRXGVX&FEwk}ew`!44y9)$Gz+ zDyqP&9uXDe$3M&QoU3ayRzM+qcs4kI%&Q_K9)DqZ&X^G7MDLi4d1^luJuHArg`#f*Wj5?e{Qih(lz z)Y4o|d4g~~Fd-n3BkU5IV3ow^6AhPt1P9df4?D?K2#9w7AA9fKAJvg$i~jFVQPAg1 z6<8_(w);W1yDbaRFawAmlI^*d?jsjcNt7*BF)E42a5$g+uC*c}AG`K0l`uVb=8Wk! zNIPGVk&%&+@yZed@hzc%^f^936>Q~UD(xRmUSkPKmi!}1dIA{|isaYGDsBs8nr@ck z!fwwP$q~+%&%!ZqbiCk6K|Klo;P;0JJbHV#w{FQ8ne0$y=wuJMK`qf%#*;m%Sfpt~y4X!SryQ zo&IQYd5*zU<~8R_RMvVjCIEOyf0PuE)Y6l^^73%|_s~DlGG>uT&{ISr65K-=3KbAe zPLWs1TtEy%JVdVroBVcj>tFu*Z0EZt_x5)m{=eJ%yWc&1y7O#r`(EsE&t?-gxQD05 zJRR$$#1Le*hW_!%P^mo+w`d8r1VLqMuc*zL6kB8E%54zzw$cC^yM;;&S1jAzK$yi{ z*}ejqJ3W{y2;qS0vE0wrPT!VnXRB4xvVEy28Shu3M!l_Vc=9XZK!uP=cFzt5s2-n9 z=R^r@43Ob;R6)(S754{qUC`aBw2Ge1G#x@30)4@8NvcOt3)Cbh*h9!b!=1q7E+E&J zP`$(_wc^SXptS1@QrLWg*T$_x)qUxid^MG$ps`9YuN6Ee>^@D+H}-}UTz+9@|FK4X z3dW6?2;Kt^n_wVI~utf5)omaMGRDp$5x9>)feBYafETBE8g8rnOP0M{tL zfjV-%%ms8@WBhoPQVfmR>CodGcRESQ>3t?#T3{=oU9Wl^6X!3f=M8c`aKiWlG9bw2 zyK6TZws{Lhoay4d-onE7+F-*}2G@B*;1b|*g6lW*vNs3v-RcxEKG`2iuQgnpVdIPA z25>aUW^r?iR;fxa$*JpvHmf6B6ra-u2R@StKnD#kffz!BXipbr`;BSs z!wXx6{)yDa7Cei-AmaD7c6Vc6<6dSNo68A;#Bqrer&E9_Gl{_R$>hj5dbECtGL7Hi zRYpF}h4&E}8#xt2;7l9V)eKGuBJfm?-K2_XiNc2^i#+DY5*LFPThIZs&}kJ_sl)g$u2GW~KqM*VIB&n;idRtWp6<6+8@#Ox zlXg#!PPu0_l$jF3P|Eh9C2trR(n#)#7EPAv9qP^-W125p%ZO&eXpU#qFCWe7rLn9t z^Y0+%w~UgUx`#R7W6Gcnq<~{@Hn$%yjEa329h;mE-mHj7`foJ1ozTi1yzBnLiN@1M zKWZ@44ot>}qj$_B3hOVWKjzAX+KIMJ-Z~)SuQ9nkPgIkHc)RAA0u3;4FQ>TB(u6b| z4sX6>rSum?D-7XNr2#}i6~)zcj$;iO?Wr6NQxbie{5n|rJPB8QyHR_eiqraKy{e14 zS6MH&;WPI&*JqA&`%|P29N1u7RL$vIk7NOMa90}J>&=EVg|HBFnjHBf!d)1^Ln|ck zY<{ssB{Mk!g%$`t9wGQ&S-PO1^_voXrZ8DlWn7iAxhiyqy2(@M9Ke2?EqJ*q5Z>G> zg|T`$qA4-4pM>PA_vFZpo(jY=+QR&FiDIg8h3b>>^cdIHB84b#TR9p7TH9C^s|r;t z9F@oT=kw3A6cPiOhb?=ClQLG$BuGk;HnvXM*Vh>xz=70IF2Ur?pDV&v`(J}BG>_al}cYkX`(_C zf@wb7h7d76)s>l=dCSXg769DTtETkV#z_iu5?wn|cILuL!891OI-trJLHqD~gHjEK z2eB~sOEBS9vPw?Qbn-4>qA(lN%_yw^Awl`nHF^0SD>=F@J0=Hl=FBlOI_zZ!o-1V_4@J!XLnH&WE*z!k(m2L);C_=<|81U5am(cO3 z3fzF`+&7)TZv%|pJdp{VLq?=u+b_k7OhuiLelUkuhW1cf$WzEQCz!fH0);OE&*-6F zOArpJFiJyAv#)omSt~eRt)J<&TYM3UP?&j?SU`+_WNwi=I zS=tLbM*8SI`IVvSu5wryCj4L;>F0Dm&Bb|HQZ4_KE2q)XSNa*)HeWKke=RrFlP&PS-EA#VXyexP3B8!|5Di0H_%;0M|M08- z1Dt=r+y6uSACe8Cp_!67^=0TQ>v62Y zbAgJ&bd(}lG}81^-opJDrvS2)P@Jdm&EHq?X-&2X0CahSbmnjpW2&wc)>zYhe0?3xid-n)iaWAs#77=B~5tea$to z*&V_wL(+uehZ#@dCk0f~B~lkJ;uZ29^t#YA$Usb_D?YC0Q#O1+?1VIm_(4Sh2m)#B z*?}7!abqhCt1kNQ!w_>u>v_QKpp1G5zM1?xY!onDW8vwBP1UlQ+e3pq*D5Rot2mkT z=)0Cdi7p17Q$0Zt1p$HpZ@!_Vk7jv!%opPBwLGMx$Dd#VJ3EIQxJrW~_(IR?y7&1B zkZ=tXATLfX7%5nE`7ORQYsuhKSCg5kIWM~;L1M+VT8VgGPv(q#i>78fZuB0F1cUt| zxw!UTA>0k;6}!KQY+@h5h|HUVYXmseoBAvH6@^7r5xMkoq*)*o2%tyv#i-lt=>891 zBvSEQ?@+Oo)AYoGf2|T(i6_1P=Bn-_M)ie0GWvdb5M0UENoPKNDz^~K0B!r&_(;Qi{Xj1aTk=T-~-xm<2;bV7Uzz0i{cAc zNHzR1rhyZK1)560NmXz_G{mLSybSKDAXbKm245}a^cbJZ@mA|huh$iafH0@m_g05W zXVj;HN}a*kvt@?)QNSj^oV%~5jti|!@&(*eqGE>ro=u=eoboL?gyLSj5GN5a>900& zW6vtQl-yXegWLojc=obw1JfEdjnVURkiOIVd31K|dHrH17X2&MOK`OivIW%}Ehcc6SVdMLA&n zc6@+qEDwxxm~Hvcdt~*a;u*<>AWt$^e}1rzj?1tDAi2IA{iH#rrx$~!)vZ+0;t_Dp zy5W8iS@eKX9*N>FUchvDEFJv8?1E-Zxvd_+0E*FcINLqNuZ6a=OgD|qnr<#=#w3?w z&8D=+tahfo2YZhneU+bBPa|?x5Mbreayo+(o0+laGYB+Fy5ct~pbzT#Ii5t3nF8?p;^IGrsDJ}JJ*EiP)0mFvRbGX3Ud9CmL}~BZr#>kZ*$u#uODj_!F+49o z1C)j#h~$FwOIh%z-mR)4%?A$=;e(y^F1Ruh*F-JskfhLsflO^6F0MoHjBdUrCyIX+~ld zxYA~PFr9B)c1s^TuEqESWMr<9){Fvsg4d^oI~exed-X_1%&M6U+tLcv8;21%dT@&%0G$?T7C|-IBE~6xIT$HiN&Bgl0ULxfl3? z$M_76f6DQ1KDl6O@IfHNF7J`wY4^0PgvSp0v7B(>Zz@&R@2I&@z z&RkcO(duW8aY<<$mLRIARidc)oGe|M*QK&7A~<=4sD;LV8NYiBq^1$Bv(_E2f8x1i+3vsi9ob3q>z8;+J@yn>#-s5O zv(_GhtZ>hQ`x9cu2p#@d%l3Dpn+gYSe_}< z?#BRge|GkUVa87Wv~agCFKCu}u8zg6NS4~KOBall78i?O8}xdq00_dn8o@pS`xzto zm*!%A*h0R1#7zWL4iUzD9j{XT784x?&O`e9i%Y46t$|gh+BQGcY)Cy9Rwf7b7xPXpTq0O6eEKutX3Oc zH%R5L7HQeJcNGf5)Yr## zrt3%KH{|`d(Tqnl{N4io7fOUyu%YH!fR>%Js zd8Kqd=1x(YA(54b$zN)VAw4YcwPE9vhlNQ(MamSpSp5FVE*84bte>5qx{v==+$@sn z`#uzFFQ1{0d*g!{Vhm?z1AQ_I(T@-_ai@aH^cZIYOiT3jvGcFb!8cA{eMvp+}C#)AI-b-=_q(CIQ1QnxoCf_SQ9Z=7I#;w7ZX?0wUU=9AFm=R)g4z8~+;|FcW0C z=UrA0x1v~}VN~RcgR^Anj`n-4Bnl@Mm0L1J7u3s*h2@8NoT|h+v=LxdJ1UCANPUG)L z>o+-_q>DJ>c=LR;GBG%3$Ht1x160r42J>pnwCWn~{?5+_tW?bJreAh9BLdYVF%up&bwo9~ zT-eM}j4K^eU)vyrc~@DhALtfH>9?uIHs^8GS0XSOGauO80150i1b?2LM<$8RN`_)k7*zH6r3GZTf`z|8-nXoCgdUC zah#Fi;=@1sg@~zgP_&F=q!){k*kBG(P6Xbh(Dk$k@U2KDIW6l&!=)@zMYmT3r=9 z)fs2i#&}&>--ayrGia-44bJ6<+HK-AfWXcyT4*XM7JSQqI}J%0q2^y1Z?#X8T2 zz3-GS-sELi>+Ir7PR*M%)sAK(H=PRDD{XYYx)o!G|C&|}r^2sk)gtd%wpW86?^w=0 z^KU8=n*BFTtHyHySjk?#N=+*(I?twkmM?RFWjPtTD*vM$ht>agXD16T&??w~kXeRi zqatUv)G=9|)$r2-`Am6XJBB$&g`7Dyqv|O11~oqQSvrZ9s>@KD`b+R7El@Q=p?b+9 zq^iqCNR`qEcGy^OP&tSzZ7l36k5X1&Hc(kFjb)Tax@XU_#Klc*B5&OuHl;qu>(RSzECDwE6>gIO05`?zM1g-F|;m`>3NeQe<&rVecR|)QaOTd@TJk z(gLMnFT*W;b#0RZu}rI-)Dygb`hy=3o?S_3rbQrWv-jojZMsTQi^z~u1u8Q!7lh{d z>;(5xnplAAuZHGzi36ZD@(G_@mI5E^znhj$S+ z&pU1jr2Dpt-5f_(0Y!>lUI$hVszQkPODhj!kFQ$u>YXE)^qE-E*TxOv_bWk&Ms};o zo#^)~cS2t*@ODj`o$`0*BBD|l>TqEm|2%GwZ*^Lxl5`if_TYX#K4-4IhQgQeuFeHO zHCtF@IDl|BGNOkJ9L@AIX(2l?lj|k-P;W&#OXqKQI6)|*w*4VVu7A#z8D9GODkl-c zfHZ|v4W*oqm`hNv#~y6MUB-NPY>@I zD?yi8TP61@{Q8jQiU5Ve_rt@yME3SD!u>}VCy4H+@PehK;tdH#ph`xvMyS=WYT$mr zEuFx$E?j@r{+_iVB9)?9DIyKt8##y|DDG^99CAN0X{kdRyvQ8lE3ID6>x?x8w@9|6 zz6|IvtiN5_NZg@l#C@)Bm$zh9v~>7DJ5Mc721E=!eG!0@K6t1B=D>4&iU0^`f_2Il zRs2h;!NdkdF@H^Er+oFiDAex;7$QJo(6k^SH38&$fu-2SqP8q=T2|G$Y)!etv1D&x z?^XN=yc_=Qg4%8FF#Sv?1$)?%ghStUV2HLEMPHdqDPPqY;Y|>DI}(3Nodg*fd+U@B zA_jh69K(cxr2t9%29N6DPoLwMvdatUBttBTz!+(w2HJuxIn` zL|x|1OR-l}TfQqCgA*+)cWGK|1|o8;^^p_(7A~LM<2)`DR^)i4^nfkTeTkrf^T`oj z8#w2a>w!24^F$jXj=1&R?3zg?gBueUFNXskHuZh7gW(vyqj)gExI6g}97R~bosaMv zno4Mts^f3`cx38Hj*HINuk#&0p<*N*kSadR5bJYUwA+V}jhd?fZnzFWL)Pdk!2C`YlX24o8=F_6g=nzH^{9gX#{1qKD4I%_3mgQ>!!zJBfh{b1}BJ#CPdNKJ*csiD9MXZGnr@`6ps2{BwS$}-x`qN$XI!( zM{2h?_UJA3ZgwG73x@3A)G+{haF7XLJe;8SW`k*#t*+&|>D>Wm!Q^F{*XU{A#z>`0 zH-(al+mJYXHt2<0naPL}M@ZX9wZLN(KM=%)?Y;)b2GW4-{Kf`<2Gh&g6!%N_s3R^k zI*u48RpkU7GeBIZ$AZU3qAwou0m6b9{&=`Vg!Qt622`OY0)0x;D9N~aF`=_bbv0?s zhIH*v_o%KEG3u{G-cJ-o0FY4}G+@8r5}a8}V$VRiQwlM!zB*=B)~hF2mJB#>kUQ6! z*E1#1_8Un29xF&+#p!=G|Bgc~(Mgsu=yL5n?hRrN#F>Abn_He`Z=(GWS#(`b&$ zS<-lO-z!ZC#If^tgT7;D53_)f$H}Bdrkcz5$9mbb&aQhW;dn~uXV;yy2bHGq=wxNT zG>9*DSWs(O*Xh~aP>VTr6K7GWq|D-TMV8=>(m0Y1u$}FdLXy|nn2AEEBqAXwlUW&~ zg%{i|;3nhcS`KuDFi>8K*pavko4y(2q9g*+=b7pzw&>%QTyYs!fD$J~?~nk>x|H20 z;Xpxwt5ORcXh9onq+CklsCbr;E2sbnW%vaoo&izh{S9U|-r{sHnv%8j2bqJry|imIovhkTkV5<_UvPN)s(~ z0kK0B3L?Gu$q7TEn9lHqW6NZ~e5~hge5NYpl+s7essZXfq|G~n=PrDFj^sbaO-6-? z*0uy9c+Va-stkhd^0J>1%Ro#ATM|~{WJze}377%{!RE=@^zHHGt_;bY{1o)tkW;Gsf;>6)*H6XmG`J;>JC1HGD=V-S~_e<%-9*3ZH_2x{qpK zRWu##V&jwlShGkx(r}1f9bv@@nb_6}%VVSCfqMKO_AnWu`P*$v=G&lV@`7waiVW7h zbz#r0{1WH2A7wu(tH<5yCp?aWFx|;3_u#|!9G$!wy`!zk#A3x)v~7+QLy~Kxlfm<8 z&+lKHoa{nXJ)U+i>SEn;c^6C5Li>VP00=LS#%6ejxx%CyXyv1*IKZilf!2U_UQ7WP ziYa{DAW+1kYEQ2(uPH&c|E%vnOb!v9uOA;M z?73foRXlrXW}jWzng-O>nS4aR`P+ALO+XSQ{5-^iZD*Uj)*$>^1zX5VhsFNfis#Hl z?-_mfv2yY&Wdup;h!2sba|>z7(-THc5*2gh$s6J&dq7rPG;ks2!@?B6zOcKBDF_5M ztVa#`uWiVZpR;8ijgJa!VZA_YsKjkdohv}ZkN)BZ6i8gq4Zebjtj}m}X@@?esxRkY zx9s5}3Q?~g4n+#~eOnWsP_7vX(7oK(tXU2#P!m=Ikie~5p6V4~Bf+i&8Y>!P969`4 zc0HB<9#|i*BkLdeN1i6O{}E_lokA)o$;cM8WGW2nr^Rh>1E*c@&qyYwyA06cwVI^)k7MZBG!VGJDv}7}cek!U9Texjgcdx3;+}q(MWNT*=st|xRlss*-ze*&= za`=hIMeu#$e@P(5vdOF*hC#kcW4d%RK|Q@=NC@-C;Qbbkk#)DM4o@uL%GI*>@uuN6 zpA;2+HYQmn!@!Rz*@133fp-(egWAK zN|Tcj4x5cX4sUKCgr?6U>Cp^6I(8)Kl!!SAe%#886b%?pub$ChK{%FGiWmB41htZ(@uK$r$(|N3^l z{d*(I*lVADsUTy<9%~!eaM@ccPnY_$-SB1+*NT^7v8Ul46y@At;(4d-9Q%O2@aAt#br1h7n4$UZ#iM6n659h+e2)uZn!pq>$ zl1Q+IQwlOA0UB~Wbqhd5l+67Td=%Xxr4-+7B3EMDBU-o%p8-f!^jV^CC6lvr8MS)G zkLuibWC#>{=!eEJdr~7^kLipnYD6&doHu6t3)Kx|59pi!FShJ?N)@3K zXNE3}qPMSb!8v=!tz-*nvO?RU5%t#=aBi$OapJTDsLi>0%|%#}Lt3(J+yhOpV?6VQbcUrsBOW%2i$-&{ra+Gx5vC2QTO3JPqd_T(qat7zVjSS*qEw{ z(-SZeBG+R!vu+36O{8>qJ^oiyDi8X*FOl)}4c@o2ja&Z;Q3*H8?-@1@Pv$}YfA}Ey zo}{Y3-TQpw7-AK47(-<{A8h=uwZ9C8pWj&f%m3K80R^IXwbse9&J|APAD{}S+xQ@v zWb=e)<^$1)Nu4xc$Em$5X<4`1Irg`4eJSQ;^L_ z8sv^&sT#UXlXpGao#8D!9R>5&<#qdizcEA-M=3Muzj-C}5Hjp7||w>MF<5h zV>dx!kGwCZv+4Te2+meWvk0dy4(L8XNA9Rg)InH) z%Zz$P4IYtcyx2TD7QP5%?7W$Vs*UV^Uep~z7T!i)&B8eb3BaNYWai@bEN1cf*RWx~ z1EcJJO?H`z6-Ud@{{+{HKWd`b7!@m~o~21%q!QyWp&K#OU{3Y}(6-FQnA;Dzr(aL# zILXe@5MKlqv4pP)L_@dNkbwi11{g9n5BQoFy(LXlgP#L1PQCu*%w?_7iJtbv0M@@+ zKQUb|*4Emd$T@YB+2LO*ZL9pvKI3*`ixE)a%ax!@3Apk~xp zB!9=NrfIR4tgCmjd{M2E6Cc*I|0f$|3exym4~zQ>U#CX)!oOLow9MCg8-La+bBzIV z)`zaJVwj&31F5)ZI*_FMf^M&%OTLOo0@;BSVgyg!x;gagdB0e5Eebll=kDz26j?<7 zC%pckCf_I$gZA}>%f)hc4)0rq^p(@Wf@H9oi?W&Yt1B%^(b4jSVa3?|#Xi%LOvvAu^17PPR(cWt#caW3T^b7S_v;)!#7o#^sDF?S*SoApe<5CFMY6XE}^SSD)=` zV=>`EY1;ApSD=af-gsG#Q}&qo0?)Q0P1&G-Un0Poo!~%rcY22_WOQIku@p43EXi0( zJ;rNN4%S7ou`g~HiOCowqL;_NV7jsmO_l`P^E&K|#}e!zPCn)(6q%r-A{gZ|cNN;ez^ zXhC6MvA|HRjFKt>_7cdsFaf1oXpa7kXN`-6VTwrQkmR9)76V)v=p1=MGAs397#*U2W+D5$sy{L<&?)IUr&9sS#x zk@`o)OZ!)6HT?Id9o-*IOZ?ww*1-nm8^E)tx^L)vIyyg@9hbeEJCdp|TLK|Owd!%c zWnSm;S;tteT`0%%PnS+9b)3etv-cie7DJX`n${9&`Kf&9MQL4J@e)mz&9CmfG3Nhu zxiDkSa`_M)T8K8v$g2lIlFiTfBF>njVB~*Bq~hC^5tbO?x}?v9Pil> z3-}QiZJCsgMzF&l;tHt1XJ+1nDh^W2jM$}7C4(GyPbBAr8zf<3nH0;kcSDa(Ednq3 zrlxTe!WxyHOo#_fU@MgXWL0Q;ry?_U6=6fG;#cIMot(QCLT+Y=-9)s{7s?l3>>M?lF#^u3=zj3!1gKt(E{i;Z5olwQtEYwF%Kd{b)cK;G(| zkp)?YXHXQ?9w`SaDyva=Cl#HUrB4H)*7ML(_h44TdeH!k!K|0{^{m6nLqy-ti<;<# z*x(id^fOaBu{@&IO3*iSick-8OUVE5T(O z?2+x$S4an^2&FKWh*KA1yBf3f$SZ&N;(5$TODEV zyi1NxJ_F#)qFE5_eSs?nD&RE{CbP|dF#iMkSs*itwjadw^U3+i7zR^e#Isz$vK1Jt znir%pe04E@sWoycwm}-?Zy&WpYLo{~h<)o(R+MZ9--NNt3V}*fFhj@tU zP+J|o9gH(*t(y?hRt1W_)%rrkr5!z!nSZsutZv;MPN28%n!9d4$2e#KL3LHshxuis z>;;8pm*$yhvV%m;$1|QtN%4!l1n#fx;)X|eGuEpZr?VGiScuM@z$60A{yR7ZoLSHz zK+t9a`A>1$(6>RjXHF+&myDV);68;Li zy?9=F3m0xMzNdJ3=|s)R+d?+q+xc$m!T$D>&2JxV-zyIyLy?PP^ZT>2z1aoLzc`5$ z`fXm!L&ATM{!qx=-uQ+2_tE8K3%q} zCfSF<8CVNtWP7%&F_ku=A{V`p*<^H_skykuK(q=b0EH*xe);;MjDDQe*b;MDP$)mV zn7y_2!)ouC@6Y7vOWv4_dl*xP=!K|5%d6n0LF&t_nP|RC`3vroJS^bmW!A$Hz~R+} zS1KRe#^e6FhKYd1q-}@g}4Dh zt91UY62TAD25wOnMZ(IxUN^~B)wIZJAGd)8@laKos-iLmASh}~y%SzrWhINKFL<*nM9Vv2+Ju!~})bN@we zqNzC4YiYsBY?$EakQrzi&=K#-3qu?pF9FsHdn{AdE16WRRUvHmgayb9+b0>y!T1E4 z6EneC64}xuImkFzs|KDN`WvDNZtB5v!X|>(??|=8vJW>BdMW`O+x0ttAotbyU~)7; z>Kbex0Ilp|YYZ_yKiCxA1Rya&UCw41-oJabCoVunJRuDOf5XjGUCV{oNW< zan|ST_U~pQN=Zwqt90F|*Kh0x`x>CceT=&U;4aWb-J`FVA9!w5AD>ufSh%0Y)9GX~ zAH5mtSzM!6mil2PPh7j)GAci=%t=pWM2O^Pj4^`)F#To~2MBeOH$Z0?2$x1SiVo~R z7|hUaYI(?FwV`3VK}xangMFw!OZ9Jkagfmoukc8&C8riLWtX(2)DxpZOf4>0SH@73_Y1sHDkVuDHJyQqCs|hn`Wd}&Pjtd;id8q>QhUm!aCKHJ76So5nOK<$ zq#q)tDAdCu;S3M>A3R&3Xal||jYteRP*Sx~iK4^V1rz?}hDnhncW~|#R~l=xB3u^w zs2A}3B3wX0*%vEw22+aYiZa%yvAIAV&}mn*c(C)s_V?S*q~}(~(U^@=Ud#bL=gtn& zYd3^+dcMuZ!NidX z4@o@J4V2M5n7cu`|J~kq&$b;RNMfr%R0wSC5c#N`;JABgKvgfw_LH6O{`$Zn`qJ#d zt%&*ZGQ>C-KH4HQI1TDRy<@&ej_Qv1zt04=sU&jw2NAqXcIX&m>WL(yiDa; zG|mAP+Ja(9O(hx&tbgt9(v;=f4JPF|*aUaw zi+omJWcg`gjin{9{5|bBA%-?%`^r6UILILA3Pj0%ISj0}1PJv~T<(>+s09qxGZSkY z9EjQO1SBM+$Qstb5j!q&CoW(~ zu}z{)>uMI2N??o6oe&pwTEO020=9+wypKewh)0@D@fgOI?d#U$s-8I&w<@p2plHpv zby{`3a%Oc2Qs8RrIJ(M6(zGoYolL=FVq4GtEDnYckb5uvuWsU+A0+Z9UVV{{>vCwv(U6;RNOU&HMEu{kv(E2DaAMOM@(krm%M zkrfqMb{6qu>EU_+-8?0NgD+iIYt#*>cUo{&`_c)d6}N!M&F{S}fY{jlh^9EeqHNCb zYVPC|SDNpUF&>NP-+B2O!F@|*PP~~HSl#X!VY7R8#iY{5L38ZH1?Xv{EW`%O*8xp} zvSrR(76_B}KuU3_#*(z3Be{Aj?WnjU9DV3q5S6yT#`VY}IU0Q-0xo9o;HgcsfP#DB zoM*%1hy=SbZkvPzVDT~Y5iUi(YLwtdtATo6z_*R}wT;^{58~KiR3N1W_vr+lThGE= zyA{nUF5%RNPBcT6go*sX;Lhbh=E%>LHfT}36-+BH;j}N80Qx`~8ap5b$$~vn!vr;c z${ZTmS=$gC1mk#*-RS-XZJ9os!cq7pa=uOLLD?TQ zQepZj40yby@F>{SNdSxU@yYDP=)@u?%Huk}usKZii9-H?l4N&0K8;-hoAb{!5=`Oe z4ei$C;&j73*>J1e9UUPR1`8jJ@mA59`RthrZDVtKcs83HZor#qem+R!+~5&;%{%$u zk4Fc+o!#EQBBXfu)k4+SLxjt>K&hz?yKhl!>1Q#O#`$|$BH4Pq!Lv(*tFV=58x_ly zZWN_u<|3Kp%nhsH#f43-Z%cj;o@n4#5RbU-mhrYvM5}4Wizo%o90PCn0s+9&qud1P zCc-F?ARxM$?O@DWp;bfm0U8Y0;$F+ZMCBPakdYt&=8duED&W9a8Axkv#;~F!&jalS$)$4rATLUI~vO3@X3>3^m>_zSq8nPV$ex-T!z z!bX~SK-@NSzfKvlH*ua+=+;I|h@;Z-Vj!qbknd0l1TmMqV!1oI!XER0$42}=za8EN zY_E}w7N9e~K2*yf#0}w7b~kS*_;6BCrtM1L1XC671hyFA3``oZ&#l}oSA#MwJro1K zBaqR1AA5!7a%au zYCp*~fM`Qn391V@7EX&-JQ&kru_%7OQ04qQj#U)bgcod_ZRL9r3x}CrHA*Z51AO#5 zQxrMT-j11u|Ci1j`RBAeHN_mMxCrtV^dr!)yX3_w=ORj!B#q5SI*C}DlUlXJu8pO>eSLpy6PTp=nid`STTH=<*7AdN? zqS4ArAni*hfL7cB9Eq|RO}L5l!72SN{7CdzDvze(y$`Q!+qxU8ptz^js=hYb$1<;Y zqC_7BhvrDWS`A{<#l;@t%zlIdz(HD$Tx;14ushpT=(RT8__gvb1TTZtd8*R^XWaXq zd3vOA2~g-rr~KqT!C<9Kx~>OFyJti6`}hs~+t>C5NG-ZoAbG6Sz^$?b(X<=ts8KFL zeCu3=sL-(tQQS^5zi=Hk-CMJJN?3@fRL-jS+`1GA>SenjTxi>;wsbp0({8|{MhSI% z>s*Vd(6JU#+z#;4wdiP?<%=9))IBF)eaqdB%V`y#TNfjZ{dMo!weGD!Z?X27EnNyW z>jqh!7F(FVccPz#9jI47t$TJU+FP2HD1WpRcHos28mQ){Ry1p@W%OqjrVV+Hh{-YL%P7}0D@b+c$64gSuQuD)gc#H9Ax$E@dbakMB z%hGd)YRKAkPsBT}aozpGq{L+Fvtv4i83Eyro;;BmmTNnLL2vICg#|(HvY?(jG;9zG!Tl+c&ZA+t*ZY#B_tI;u21M=mb)w9S{=1+BRv0sCHIFEc8bWo&}#U ztWshXGW8(E_u)I_7KHX;tS7$_-*65c!-*NWb8Ia~iY$;K@fgvy8LMN*d$~kGUe+pc zRetY8Sy`zAbI_m2Id=YP41|IDvo)+i<-i#wW!#Y3=GdxHXXSX>sGAPTTICeW@10XD zE457VnZNh7;${!Cpk>++$bLP{n>~`S7aN+P3k1YdXh10t8>6|M#R|ksNH_9RSFAP3 zO8B-hX`(#gn|?BEvU}y4hcOsQyy?Gf2@j`yivC1H6V2B48|-HIO`N})-`&`F2_Ft5 z^&KA!-vI76$HUp#@djci&nK^7=iIP#xZ}fhN&wg?L)QPz;p}u>z^vP(mMCur@eRp#w%RgO*M#Cg5i8$@bn4JJ0@QfBW&% zz5fR}LSR)r0}nJ_dQ0wzxzfXXkG7k2Za3;Y+S$DK@X24B)$TN^J=xjc-TCg>)4-(0&`VpXc0dTV-# zMOMYi)wZtZYiwT0l>=;D&)i{~5>hKI$W3N9iJYzKrCg_^gZ#CV3UZYW8Zgr^wxh%( z(c&rutlF{=cav|fQv#j8b^@KNbO7y!;*W#c%*B_0ZIu?_w$IA}w>lk==j;NC+G-NW zUie%x5ko@-nO#o1Vb66+(DT@jur-ZM$dO`~5&^2e7BrZ+ zX&oY8NNS+p2Pp{=g4;bg5#GAZZwMIDXg*ru4-Aq>REF4H#*INgr+_YJ=HFB|YZy*W zMmSn}kMuWWMcAyS=aVCgn9K8On~NGxk1rsU^!DD&;IyRo4Nu_YrEjAbFAzX6fq8H? z_4aW#aQ^aYZM`wk=Qb*+VJmAWYn6*$ejgCKYc@yzV~~ZpffiHc&U)VO%4meA9FpbD zfp3ydIbJ57wO;$s+#bnf>pdoAbJlP~*7#(+P`%%1&Db2Pj3>xc1+@Avi)Idd`&a$K1r z=qz32&RR+rjk*o$Xp|<_K<@+($VUq}p)1elJi^vtI9GshD&QND43J9khNPPkFL z_vd}mb-686H9iAzjfz3=B>So#F`kx={CnAxe_GO&5uiQLk^le=a?7`jkxJ@OmiN** zykFT{#z`gRIO$_&hm$r0^JCc!fA8!86KnxTU&}u9Av)1gJ1=5pI>z`OT6Q?CaZrP* zoYmWLUZt{A^%O3leuLGK6ggnSjz+RZWRvw;GA-o@Os4^*gKj>Sss%$696D_6Cp(;} z65&9v8=jB$jgYLwXIiTRxyfUowF0uv00VKTe3}!eb)b?n*qGHiC%!O;*37qg*TP!= zdjuSbI|YBV;4hI~0iLy>0z6uN_HGw9ri1g@+2#q}-BF9oOMoJM3C3z*L50Ocn^igx zVnUb+!- zGnk9R-uCX^{`U{>VO}4T#3wDp)!HYd>W87ENO(qu@Q5cjtiU-PI`1QJHol6X^4s?G z7d@W46S^fl+C*B4oK+jZwpPwsi&eAvZL;d?25 zv=H#&U}mpMo`wGL+O@hzY_=%@*@F*jdhBEqacAz5^Z=4Lo`J^`DVIP0j7<0C!QAoy zw8ka@+Is9kL*ZwNzdRaQM=TKT3`UEara=Gy^8si<{QieALK=XzwwKccT9|AZvwB;>V{`?kob=2cIWV$m>xs!T{brol1c z*#4_+cI8Q*6HZKi{#AjUx%zw7%4UYO<3s~|Cp_CU-N|1`IM5$?2M&rfZ9b^8x$mA7HqKi#{>0QRG5VNa$G?8P%@ z+MGP+##{iLuQF|8JqVbx5&10!o+R#rI-;j3j~83u>eXsr;Sz~uEn^mP$t*emn~gKw zAOU|ODA4*byQ(sYL+pSh-~g=pI9}C#zWuLz+fQ~M?mYQ>U$~-PpzF}nq40`K(Fmly!lTr-x#Kx5L!Ptl zft9r|^?aNaX)nRhEl`V`9AQi5X|KmCTjUEJa~>9k2K0BR+l=7Djq3wqxhzYv`+BP# zj800Jhu!*4c4YJbr}Ux&-9&CHMcK|S+f?U4i!g&8+_7gdR?U?T*09HWTA`UIkJL{B||M(uTxL%z9B9eYtd-H9#v9d_{j$uZM^@z7s@HULE@c8u|1 zSdzjB?_c35*E1y)^UY1g&AkaE*h$QXn(yu0+qv6&h?h{2ZRMEMe`Fory^6eZ z`}e=S18^2Gk0n~TFpxs_bbBWCN|NwEyS!qI;A!mM+$_|Re@38)-+5a{rW68}*Vzwr zl+4n5IL2*AFR0l<<3?!GRX1pnk`>9~IDeSha)mjY5;q?S$i+Mqw1+I`*bxO7wN zgg(7U(mMBINX*7r<6_O&(Bg)hQ|#C?q{0BwEIm$d^ct_W$U(~km;{c_{=@=PUUl3k zB!j-+WG^sfrNdSkXe^;B!wQs|jkksQ1#HRCsp3Z@F+4lx5Ax~L54bx_#wtXE6FeTn zuWVl=c}icDVhO)thjJ6Js{a@%hVaF=2Md{s5Zi%2(x0sO(Z-Sg7E2?>KgGKB>F#o& zWV0++EEpfV<6V3*{JVFpU>^^6b{FX&(?Skb!ycYb{ym+ij(ts#+5?A`=M~*4aV*niT>*-e z>!LNBViENhx!`i|>Syo-mdqLQRKW97r&vS-Gp2Ib+kzw-SA9x{#;Fd6<-NXz`WQ}U zVWH1711-44^S0A}Y$(s_wLot6PLj@AOx1i>EXl6LWim;fvoA0*Zmd0CRSI_00_9Ui zbfTqks#X|nB;TZ&_LfKzSKq2l5vSN4!MvMQY=3OHO7gxvg#@h_09E)WE#dbR+6h_V zE%3E|*&m1%dPWWWfg5p;dWFK)_eT|;z8XWAI(fE@qK*FrdO4Yx#q)0)gTLH;yZ*ml zPY?e_UFymBZ^Ij2dt(xfzx0OMVt?B>ef1^FTo(#m;lWFgTQPc5OorsM>Eh6rLz9|t zg20Xfpd|(M9z5FRHc(1wNE~#mWz;QXHh4_y8G#pL%0m}=x`kB_S=&XD*rNV^%04p6 zQdhy$-54)UdrAn`3N*!cB=oAFZye%a?NEtb&`eM~8d5Z&1mfz8g*(utjVrO3yedOQ zc*VUSUZn-JNPShzHIvNX8a;!^jwNI%7|DCB#@{OUA#mdp+?zPL4DjrImm4!M7I(syteF;Roll|bdu zUG1pIu`V);Ujmp!>@2OG)rhTCeXQOg^T#u!w8UPq;}yH(9h5(l6Sz^!@CU`ZE715t zo=#}QCo;n$Cp)n;(%@^rj~f;-B3!a%0p$B0uvZtbl;%NH#N}^(uBzI;EwDh{3($_B z7oQ%ChYGEM->@EQ`VnPc_xnGlOR=0xl^~qgXixM7z%V-qTz=8S?-uMpe7v`r8PTel3hemQ#sY@Ok=s1n5lAo^2rhs+7M_nbo3JH!CDZ~gYxZ$OfG@QhD$@1Nbi z^~IepzxB?LeYR|3N z=_}+W;d?FGQMd=`Ur-brj(PGHM!sMvfBXy=@r#r3(5vA4Vr7i|VeS3(@;U44cYpiE z8oww*-9{YSKh3Y-y?y6aQGzG|7-;yltgq*u`SGiwsy)-pufH$8Hs9lA`5%gMdzczu zzu*8HloM^h+jrKkTS}gdcqSRO(ziEoDw@5yeiyaO*fzvd?~~){^}Anw_2KVpw{PFR z`#k7q;O{Q48M4+KMK|8ZYrfym!A$gy_w0V+ZE@qXKE!wI2{_81L$wiWFx=lC&mRlt zz_rWcF;4T%>wDv)5uz{#01&(*7%zUKo(BJvo&AL$;0pF0S7&S1zpGCl^!9lkLa)4R zVT(!&I|!TTS`RnX5RW*T7;P%Xw!!`e@4;RxE3&4ncT6VTqs+Q}b~Za3^tVhOPF?^e zq(LnMTR;LfgFOLO7aur#82-Rg=$yKBg7rWi?F*z<)6W4DB_;ro3rvX=z4VEjMj=nG zPC$1#0;!(&5bSlN4C6bZ&==w}?pth3yXq)eC)UI;Xz^NrMRN-1vyh3U-jREwd%a(bWy6(ag~EOPq6);N2#)RvA!}x&R#K>6;!ja6{~L3SmJ_6z|L1)w~*ev<8ATt z*}5KnUFVZX;1hZD#SWHDcCj`gQL0Y5U5wpPsumV*!95{B%cWg1`zQAu8kb2%NdRR5EEw@_%@5 z)!@_Z?vqYxRD;?VSPM=8A#c*=23)qj@0qsHUXd3(VxQ?*AhH~pzk?;HneL)Y4I9U# zz8YVW&}rDhSNMLD?uw5fha#Eze(C}|1&4cPTSXH*(v_=WaSCUNqSnCh3BL_{9(bh} z&x`h4c1}ExRbB@>I`=k^i5^DAK3a_6KVT9rX=2%Or-%AT9ij?}uiWMoGax^4U~@pg zX>8P_CzebLf6XVW%+BMp9h>^|zK;&w3v$+7Rws-Rjc17%*oFW)5IxrH)>`i;{L|4D zC54?cY!EoLqWYhDKY5?{?eouVX^C624YIbsrEOVxtKD7-WP_hdPruxnJSFYHvcVAP zz!I$tVxU-B0)VATCR6T07q&X$I3mpBdG{LDj!{|*axw|pPr5Ix_mlA`xe z6@Hian^OiPR)c>_MVmh;a0Z|4-^D~zfLyr`A{KR#GVq#gZy-mkwcdT4`EYLFhCiU+ zisBTVtiWXS2R-8dU~*G&C(+*vSkat#>uQ_5BS<9>Bra&wz-g-YLhe>w^?I8);M)O% zNT8rQ$Oa;InRj9c+g@~!30L(_igpwdOQmy6v6FF`hSz5+eUK8`OK^QV=3}#GnSA<1 zpSS@OzoDB&(H=xuRQW`=f#xws;XDiDN${4Gedo$jw&++gwt+4+vmaTIO!=B39Us?w z-{O#U!INy^R9DzoXL5h`_v=_!WIAh<6G z^psa!(}Hq}%9fN*o(hn)ae89$;3OkSj$K?c6%89EHuy7MUBuywVt(deXa@~-mNTiO z*m*OB&@jIw2Y^dk>MX>-ce$tN;-J>jBIK0Lm18{5GBIbi+7bGi( zG0%AsClE(b>(@)p^w&$yua_L%jij8MCkGD77?5bj|F%Eq<1%HX(22Y~UpLnVo+WJ! zm)$lRV{~<)NSRBOFuD@mpLSflq;E>&-k%ar_5CjKWs~mM zQ{DHY*>OkbrngGHmyb3qj+5?@0$82aL$x(SJ&kH{QBK0 zb(nzL`<~7ZNz5%|4u}^NNIWv2CD^5Qg-euK=Yw*Y3fhqHwltcc&-+-}|ZoRC# z23dW|o7b9oI(QA-PV^=q{Q~U`RNUCkiBBk0%m(ghz9Jh-N)ki8k6E8L7R;9Jey;C6FsR~JyxxuA*2llpl) zh9kKd!|?2(r+MRbG%}F5fh^}aVx}nSf6r;&H~Z5m925AcJk+T$2fah8nbS$A48}-@ ztBOP_<ck*E=Y<Nzvk8pl7ukBLf#Ksu{3)SyYEw*i<2L1DVyif@C8XXSn}?oqgRG;TYob`<6J_v_8z;YViu~D*#Q!4K*>jXHhy5KLabuL6_stjNuH|s zO^G!&ZuaiGl2)l5;0%{}aAA{L59r?U&a)oL3AS+$C-X=-cpD7P>}SK5i8<7mJWR8W-0hKGJ4euj+v zGn~ljT0jJ(2e@J(qh78;;X#OY@15p;R;durv$(kWH!G5m;{l6iSvtZ+cO=#Y4_z<0 z2Wu0RZCk<{MI(};3hPcWoEtz{fwbxm*rqA!@opOJrIC(j>tU6{yBo>zAa}2)IjTJ* zzWUU$to=hv`T|yukYz8HB4Pd#v>qL;idXdBjaa-39gLtIMa40r3UfSUvBzT=c!`;% z4R1@px29KK9UO)Yl<15Pd}xyTDp4Uy-aFXLpb)Ppw(a9i9Ws9 z=NoI)InSt2&M&^DdAS1BtyBRbv@4Wqhq>drcIJQ`QcT%RSPUdaS!7 zb<>59T@a0lZYOam)qa2g#e14IjXi5b^IpPr+#SVL!7;qIpe7R-NU}-V??h-z-4dTI z#Wgw?Dv&3@iN?93@JqRe(+L?}^VsrNqyeRK;arywV@2h1MVoCJ%<-9JC;E>-=%sQ@ ziTyTFrY^r6r^^JI0xiaY{j9+|iB~|pDt{#AwL9iXr_n)|&2{f2%4WrqBAaCib-cma z4$qX8c62(1RilHZ0(o`{clAXAZ%R*z3nyrN2}0z6zaQ>qcwL>Sv5Pth9GbQ9IUY-w z&}Ccc;wIr`*Lv)IDVH!-I^}mZ|9e zef#nDS3q}T!`SVJay*$$u))k{2D(9r0pU`2);l~K9pe(g>?jLNrvs;*Yur)4T5;H^8u8hH;4{T8xZ79ffo)F1_-NwlbVp z%uI=C!CRKqBMds1(aXza^G|7+fO8$Xie)bpAj$O}nqLG>;AU|)ru#1tdWy31H+a=f zI$%@OQdP~?&TD)Z<}c}{AV!cXW(k}f(8DP=3Ew5HMv6hGlAHM|nae*9m_oM%XP*G4 z^j>ly-mW{CeA;DKTL?KGh{SF2p2mf|=4Ex^4sXVlA~LZ>t5}>n88gKwMfqZ1g$f)L zZ=t(GU+(NfSBXz9n*2c5qsjC&UTQ_46x@WF*8mX(VOpRM-#L_SjJ})Vfxb2yZuD1YK4Hd4) zdP4hY5jd}`hl(ZXK~7Yf$~`zY#{>* zMty42Vc84{{fa&e@OKae$p*jbYMnBtMxot#SzI`{@0YgA(p4|F^39~dczMJR=>qPa zIs{pNM3bo|{p33b5ZtLF??LT@xq6^}+8G?dQC*C~E*ebqnW$2@C%=qGEd1>VgmCKd z2p*qQ?)uvibR@!R3Hymk&CWA~6CUVq5*8il{78|=s{vgzax)`N=^+AZV56YJy!9cO zM?l0#85S6y@RUkrT3RqESubu^BDu`YgH(gyxbJl>-_fo71NI>wZDn|N8q1DM0BdI^ z%tY3)1BH%B)RsjJ`v!Z_EbeSq4C(hiYo#9ANYpzmXw<%>V3F3J&P3E{f`+Hqn_w!1$li&8x>|X{)+GreIBP&yNT_Dg3*P#LQu#nBGW`4} zKqh_KnVN8T+2Ify>66H@m~ms9JxqS_I-QN))0Madh3zJsPE@v6FHzcFBcZkuK4{l5 zJw4NeT&_8-SrLT>P0({|1XIGlgkL6km8XQQSs zpXmQ^qit7jn^`ear?EZ}T+-q#*d9CSaiL~OiVKB_3b|dcRlzjnIs3eCiQ5qiK+kpF zQI%B}0VW^>hSL__u39N0HYB{5;2Cjvch&wmW#7%jltx^Mwi#3jZ*5SgT6mcl_!cHx0$(5oz)3l! zm0oSXv8oVnwADOfDq*`~69{8A8|W%Lf-UzsW5=KGW?La++4r!Wcuy~m#Ht{X2_cR{ zOh^pw-S6N%!H?On(Pe@oc}FWq#DYJ3x1Efq$LBBGBS5$xIVJ5&+>$~}^R4Q!)Qt^) zZ~>DmaR)|K!IRe7twHQ{2vS1M54a!nkw6rV^2aHHne&N(78&9yqu5<8B!ld+Vr-_R z&j35|*PsG`-o+hTwMRBWD?d!QX&ZzyHbS3DX(5`9(d(P(krd%ss6It>#@o{I)=6A5#bau4LM zX#*J1$6)hhr^;3L>C2)^g;C~SROWG5@{YJo`+jQn+;U|g9=L4&s)zMoVD+1o&|y6! zuneDVNNH9qQPV7|5!5VAXj&}z1;|?HtOaGi_-T|~aJcF52R(EGzrvtq`<-#OiXeqy zI})$|`f3mPOXp4lV@sr05>)xU4aXJsiC$Avsa*r;1*C+U*^Q~V@d~stA7u`MR zrd&1iU*KJyhIbQI_*t#xY^;ByG@|%onI!>nG0?1QX~MaatDbykhkERw{54)H^6Gx} zivu^A%Hp#oUfYS}Jt-Z3#EfZHapLDaG=!hzGsYR#kDR3XPBP(go(MQdKo!M+>?b)d zU-=1>#*%Qdug49%m#flRp?<-nac%)$)@YBI$ghP6N4z+&w9s_(-I$IBjolPt#wZCI zP*yyhG2YTe4jH&9RM?r;^FsG!%%wfwJjfwO-w z$b26%BRAB-Mk+ekCr4cjQ0$p~2DfVW`~R}``~Py$@4xYc)|Y>me4DmE?=ge} z`N6_Q;>wG1_oEV-fSU5e5Dy4e5*6bW6#c9HinX!Y#v&FQ*mv|EZ^=co=#%v45Y}+x zW1Co5iG<#XSd8|$)Gdvz1Q?wHRK@asHC8%&qpPH+fWRFnpwD~8G?X-WygIp%`{o6; zvN|UjzMYd|;*-4bDW7}g&pJkHCb`6b?p@H);3;mMDWhtt%rx^mVa<@w1uq9sGMhOs zM_->H(NQNmKubxC^v&6)7~=JmUR=%7g!%X_wc3ny=5_9CghBY^HF{zjOwBN$;tf zCW+Ih+%-Vc@4RSXS!WR??_R$!=A2I6BKkmjf8$5O!-#p#koC)KnjMeKfC=GLx!L;- z|Ma&1b@TDlN81Rt*GIg-g8qh!kIR^~?eRMnlMY#X!{)MBnXre4@<8t*+K%BwXmv`D z1tec#++z6X?0Tw#g&`kAWw?|bbRWj^m!Kx_YHy7M2ak5wdiOSWAKVaO88oJ;2HhyPfLS7#PZ_oc^uw%YFuG5s z!22jLZeDM_fsAVLahqv2nYw6h-V6~()_Z^7arGglZ13RIQ!rrCt2B|^7#T~Lm5%3V z!Ybf#p8^_y$8T}NB(@yKakGQ|N^2e22@LBGY$2)@^oB_Oix-XG2J<85jV@8$Iy0EP z6H6`c%B-jw&3l(MMxW2Y<2kb;SVJI4`O;z}#5RXGS$I9rBt-sn0u-nx0K++;?|`Q= z$@@U54EitRibr}aw1FGuTC@@;4nf3L=2pr{>c=Iyza}NxxxX!;2v9MfXKt%)*0)Oj}2({0ZAZMd~Tm~A56kW`W1|Ar% z-%r+?`ZK~cY%b9}VX>u;R5|pQrpR_gHWAn1yTi4@dq`5S0BMOBxGQntNsc%MCr)x6 zYYDj}q4I3@TCu6@^3~flmO6z1sl2YjvAhRx& zy8{$6i zG>XB-jCCzUtDtKqI{)l_4HsDeDEy;eA&w>65DQzM7fdZiNGhBwT#>`m5q ziAZgV!q&*oB#XL`Fyq$G+KS#ehXBX7H|ufqS|UpCnq7jb;yB23--d*03k1bnk*9gT z(b}hN2y|N9k7bLMA}hnxIJ?y|d~t7MMfne~1;W{ZAjedRA~}A(LT9>2uuV>#mHTeZ z7skrJI8m4!>{4=(>v#WPDSb@^Q6#KE>ag1#Mam_^^4}HNfGuoiuQ$yM{(fE3fKWH0fM<&fHuAtN;291mw_#~bh{ zI-k569gjE0c(Uyf2Cj7`w}Gq9koA8<#i_P7=-V#LRPs=@F+MvQA;o;MK5Si#X||?t zeG>;ZW4YxMidT%!Ca|Q9nJNHTx*=Eb$(){FoUAqiP^g$ zHAesT-NVBH-XpSWNN;iow4*XOG%pugxw4snEiM<$vH@m1w{J8q=T31# z7~)lphugo8rR}p5S}V z2F&EwoJ($CRe%!w(Gf=Bue&;#os?Cc_Gj__TQ5(<-1Oxyk((%cL)r5Q#iswhGEL$Y4Y}mrua8kc z<@xJl6nH)D*T*QPOB0o*Tw4@6$j1@yHNAL@{}%2CEZE>*^eb3kRO`5d8yKd;aEixtJ^^d&XjEm~dQoF0x4xAz!h zTwm*5e{_L2OGbKsXm&Ejm()tVrr%=J>s!zSPjDrCGJdmAo7WsXR{?7%%r3>C4N$9U z3t%JlArd%Zf*6XfA?&F4co%~`JOxs4&pCqY#AuF$A;gHnQ&^iblJ0(Mb~c~99-#qr zulNaZ0<3rnojDwQ=d8Oj65vyo(JU#pcoHV@B;5>MV4{`d9G7!*Bh>W*_gr3ho7M=5 zS3u-{{$a}?QSZAnXFwK5@xBOIr)kNZgKc4w zvuV5_<87>TNacH(;j|87({1v6c8m~NpP~hhr8hy?oMd7;9H{#h&eGCJ9pMsyLq)xZ zD~$Qaz?%i025uWewk?vN6Bh#)*OI?9A25^^&YuDl4$u`YKqIGDcVfUlZ|H4>yB(iP zGs74xFNYpw^m24a?@1y6dZTw^ix{Ty(@l2R<1b)ZeMiXXpejcX1^~mc<_zq?hf@b` ztAb~k8^8lD(_Q1T2EQ?L*Yt-A9SoWIe5&w39UZ<~AyXZ1d%lL}(7Vf^TK=A28-IfM z>(@oH(Ei`!hD_Sg62FA&c~~C!(e8n9Q*;lNYSFV(UJBG%dDYv(Ki%DMzxhy#;m+df z!j+;>VSTbVEl{Bkz0aV~XSHjv`x$415J?e4$vtR()i-;aa0TMkTrYrwpnZi=1H7|f zo}M5LxmQnMXMO{;v1^=mg_Yi{M|@ zZsGam_1^8_Eo*lB-6qtjmh?D)lKaObP9{{mTkBi$~Z7lk?*CS|3)7B2KxP73H6 zT?lz6S-Fq@#>H-k?H2(NRKz z2*+NKTq($wv6w-NMKITs^LVJdg;X!AUHF%Giy&OT#mY=ZHd?xDp?iHLv z^QpEJiPb^85(!l;N;Fml36H!W_=#r<%EVU**B)ar5NY93i1tpoOsRy+k%Iquo#3DH zT=G+?)}NZX)P@gTdHrZx0uM8>dP#w5x@3KPjvLG27{^X$$gLnZ4BVfcX;uO)n}@KG=xg6)4gC8j!+#B2BDekOkwA7ge04E@Y1C1- zdA>jSJGKHz+sV0;7v%W%aC-VaLZ(5F_M4G&OI5RGAqj+6BZ$6x#zr$4=^jXts1IO5-)@0dJP zj)7;lzY}NNW!JQg)I-8brQvXt)gn$4aMEM{H%CWMQ51lcqxvEmcjj`|)2ENy@flr? zB|?=zE_i8^EiBL`$yw~V>ssOa&#V5aZ_rC4m9xU zZAvGUHn4T{a;$8x*s**`s;d@qoO4qztMXz7+svtN{nSr8HzLUQN2e2L%@%O#-zDz3 zQm!JQ#pUr9CWlk`jVIDy!9KMT-4T@Uk)@qMikP94=hnWUkWOB$Sfs6&c$d}BLub0KZ{d>`UMSxi~;CF6{@RCdYntDkTbzC@`0?PpvJ5=>bDP+j;5lq1Y763q? z*i=nuJZC@qd$!l9V!Dn(QR~AgXqBDu8MM!>Hhx^|-Tv(j{N7(9FKN`glWX2tUh|7w z^NU7J2c2Ww0D(aq4ig350>iz=t|7>P3Q>+`h}{|7n)O?HhUd+MFNz^QB_4Km)iB~* z@N(DW0PiK8fga(*1W!8Vr=&Z*D~X}noz8F^LJbR@MAo#0_678z@J?6M5EwMk(DcPk zm$a?j-KXxOh5!q~sb=`h>>ltBfVQq^i|Dhe?Jis3$@&X#2caDXB=5*CcCQc{XjeOG zlA>326#BJF*g?t0XNhJSg3y?$1~@1z0~pkZW`hACsOZ~k43|z;d9J_d`^T!J?hnw^ zpCjOFz=rUNyPBVRP4ti%n)?8(ak=MF+Ao%5ZRoWD;bJ=|8$PVPr^|P;bzQ&v+b`q< z-eP}-$4jA^Xp3^q9%W-uJHK-p9DJL)a*L*I`3A98dKlm7y@u zTo32i)t%LOv?fx}FlI}J#?glAL&unYra`oC z^s}&2j?U8Rch!JZN8qS!{H&6IjV0-4;np|au(^QM?`dD>YCfM-jlbKL)yDYk6*k6q z=aUnJDMN!py$vUAcEocWv#vD5TaM6`A}|Ts#C2)6W$Tt+lC+UtcN=+oCW5nr;b_8C z!RX4h+tjbopB-W&md>^x)M!1)B* zsrS?9^~k7$@E~4-F9^wcn9_q=Gf z=uiB6ner!~1smuo$BJh?8vYClBC*16ee_}sFAVkU*_ZsgrBBI4o{34N6Fp0TLE%hm z{Y<9cV$B}=zDyDukH9@WdSN46QqB4zUyX73vwg)408Sm&4S%Naym^9QJz~lvA$NJp$GHy4h`-wKtbsQha=HJKOGz`4=o z*nvUIZ}zvD$8g{ypaa z^}Mzievi%Dw#T%%%0YhREtYpig2lFnHXRQOPTGL9f@(W8%J9Sk0tO}VsVQk|`$Rf) z6j**;v4~xWzz6X1+=P!wUzF-WC8-&B4BIWITl8I0?Rn6wAStXzZSqJ#6jVIM+QwYd|CMIx%@Tf31 z9bz{x6kjAu3tO_ex@)3%2>v#HyK@w^cspLdZLkc%B<#CSk1jjKe%n&0JKvx{@Qw1< z%h#dWCO{E9X#iev8uA?rZaJn0xLKT0MZ>%ebtvdY6{nH#{yu0vch=q9H_segchbHBG0vKXLe(fx7@>j>iVnE-eOO zFZVr4H{=M}EGTzbvuwZ*u)d_d#@~k!Q?^HV20e`xOZr|15h+&YJnd!DEolZ{+8tE# z&M_6S8PP<>%$7~c)S(d@f>*ux)&fd(o+K*F@DPx#3t3it*MPbEPttVY=VD_t$=%3u z@w$d-A_aegN#O`-d|A_8F4yJm!WZD16ZDfR3Dp|LO&9bL_QGc1AdQpwr zLqq)|UDVb0uR+MG1R$E~|~%q~DJ%`oa3nc%mM3zNKRlL&b?wZa5@-B1j@YPZ0|@eTcV=yZJ1Ur7e7wrJ%98^~`M3c3|OoAIXwoVX{tX z&9EqJP;N&HO1MVssN5=}^ZeFr3>D-Ps0BqvgX~GgJrQB_ytgfc(zow>_U8F7a~%Eh zDEhd9(wp7kcrM_;U%2sY>)Yn%&-kcnoTiqExV4v*sF(_(xb*oapZMhXn2#`dGh+%C zFj8SAd&3zIs#=pS0hM%WHT5~HF2ti6Sr|^9&b2f0Y+1fDP1;C>>$eb;&yT8uMXl2{ zCc+fITq#^XI^r~wuPJH53vhQY0n+q~1w>92O9%=ZtWe4dFCcRKY-=iJu9dV#wg?p( z%YAA(ISsu!CP8(3WHb~#s*Mmy23oL)1^NhNm6&fw*wXw4npeGZ6k{a^OG+23jw7kD5tDYzQl&+&ls9<7*w_1u*$4_= zoW{6Md%^Pl*;C#3quFuCBu-|>6;l?p@$rUBZc+ zspEg!A0V#&XpHv-X47?fYi*pfLYmY5V&i3_FV;>_{0C(taAV=)(RA|4E*Np3Dc?G7 zJv#cs0mgOy$&T%D#Gg1w9izfZItPC}eKnin(5HIk8)Kd6LJc)W4GQ0glDv7$K_oRVjTu8asY{H9oQRAyZX_7PjG zFK|Fa-iQ~yAK?x+$6aG#MnC4Ot*@C!2J?8+Ls>XwaC^p`{D7XB@x+UIr%>(Hhg}17 zMu|}Iu_s08!!+1G zz%}4!xXRUW)=5rC0eFu0Idl}UcoCV}SQ4(0qL{A+mj%=R0?<0Ad~^&y7)C_@nHj2~ z3+UfKia`D_K76RF^VgOjFHu)#S1&$ISLUPl$)Gw1%UBOr*H1FZPuJQ1$KD(FH+3Xy z!vE(}2+!VEaj{e=F$;j)~BMU13dpSd}ARZ1Nu;(MT z9=k|QQj0$JnA4a|SD!i!{LP7dmAo0`{L4y^hB@$iH8*FT{9etaW9GBm`g=ABg8p+G zoI59f&t5i8kl(Yx20`(AHrFIfuG(JGH)`s@9K9iwEnk3Pe!>=UW_eDgJZZbij-X&2 z=p0Cl6H4aqkT)XqgzQd9ccDY$Nh*dpV>VBcs^QkOLMKEx&Zj4i@E~QR12bDyi_;vY zx8BJrPuW1#QeZPh;9xlHkC|l!v4^};YczBn>?uOkclxJL9;ZlYqhYd;6k3WSQ47@c zZ_AsU844xqSc?^KxFmk!8ZdhzjV$wN@vz{g@~NvI#iMfVFCK@Gu0C=x;}1*eT9m6v z2feY^-}uO+4Uj)Z!1nRzkhys6Yjk7YYB2zQ-J%fz8 z(0n$b5a2axS|nlr&<0Joba2+BNe#|KPm8s0F9?>@k0WAN1Y8VUBjnc)rHWn^--b25 zz?V$0<*9qF3b|yULPIW~?|&lB!GrUlek#U|>t%tjG4R#tT+WAPoUO#C;$53qSy3-= zC;L2iEfRK@(hgF3sFAH9odQL!m#gupfwGL_${6zAtQ&xkn`PV)3JPfxtfKhk^c_V~&eH$Bf?5Obh} zvvw+B$i&;?S1M5qkT>qbB|2d_AO(|)YESp1z^q{O%nLS+3ifPQWjrTLo536n&xhEx z>zx7Axz!RAhV{=@L$N0qR6>!D7(M_|@CDWyWk|*ms>I5~<)GLFXHM=CJn(S8vIA_sIKnuZjRnQHqUIJSa zK%W45>;ex*)zfq zd{!k0M0&ZS)60+Q)wN2cG^xF+=-6`JRJ}g44w_O2nV(^ay11P}-3=0qLa8dgWWw6R}q$jch#c$d%9 zV6%7Eu4-T~l_0vCMk|el;1!!UE18e{+sP3RNkh4X*iv_;Tpv?`sP{N<9t_o6U*Ve!w4@gNk=jDOLAbU zo@Z%#)UCA|Y!@VQ{d5Q95cqAEBnaGF?lfO)ND#{@Ubk?X+hgm$@XOHG)h= zEOff6cKtwgtz)M-tcxU?c^Se&0m>C|fJ&r7XCz}~JfsT;u+Pt!HojJqAu%H?HYiG+ zf?~zJj3BVcs}m;4&E;mSp!EzIhG)IFi(Q`+1z2zEW8l2lu0!{qsTKL&B-kZ)eN?Ns zbtPdium!C#%d50@GP|;3SV_vMa$uQ7n405oFx;{-0@}EhLF-1wz&zcabp3ijB^Z0n zc~B`{3CpxH)*X3^E4a;xy{rym_$migaxAh`=Hs_+yabZ%yGXQap;-5pHcF_vn|2l-8DT*xCz15UE`J7 zQ()o)A`;(QTDrfwx_Wob9)7IwA09t`ymbG^W29!ebQL5cT)O|@1XR3qmB*~|qJMbl z3O633!nfmoe|Y&SH_(#@5JQ))@tBSLwa*ax%hzEmPoe1H-ib?BxPKqMqrw`=P%!e{HO%Pyt-IG&SLNJDGjDaZELEHKX`}kd^YZ~X{$KMG6YSp7 zAO1Bzxn$JmXJM*eI6D{3&zbqNSe`db>C4Q~nO5>Fg^oEy$HtIw3nuw2fTjDFtNE$Z zJWb%a)4XEU`Q&N-BM$p;LHO4a{I4Z=c8b@`d;gl|iW?}_UDH(|9_HvYA6v~Ulen1b z^;Lgbs`0I|U~S>A6kMgjvQ(GqYJbJjxmbqWov+9vD2|D3n}kTSW>(YTA&oKlZr}K~ zITCoL_#dHT{qgoCi_=lIl(yLSk*M*~71zt+R}Ym zz~j+XKxKU59?1$$yp-`%5z7Fp$XyYp-BXDzzV55M9Dyu3C3eP2VS33rDR(#O@q6nb z@_0Aay#yDR+*z=(i7+#ZRle5*R&`xPeu(LKbW)he?%G|nrTxOQmHVlO#FprRl}&0y zQ{8-$0~IBlDwPaXWW9z-*lnwD!zqMO2E@h`Su>XJD`c~3PK8`MWQVNA>tD>tYK&9P zR@zRpvFM*x;sSS5gOJyFWvTHL+R~ldw{)QS&ws~(=6|Kq+WoD6!5kK&{a^J}r*r+B za^X6)5?=*l{j<+8)9SuA4gU|a#qmHra7qUiyK8*w8Fi6yZuJBO@t*Tp zQTyW6-}AWVx95YyIp;lJ<5hX!lSSEoWtbYBz3Bhv`C#0y9auGZRs8>nIlK}fHs@`f>#=DK*Pp0`A~at$!p%b#5zXa7x{L%EbT743tYX^fVQB zY5z6TLr>;+c(#1Lur4?BW(2v3JVgN7DQgfoSVLr284K{3Tg*!4&gn2+ktpxn(;f*V zV!~z;+ku5sFhN4Z11_?UnNkx@VNLu=#LC>o@m0nRrx)nj^g?;b z&HshmPQWqT+BunrC-OkPF}!ZQMe+_Em>!Sb;7Y{9F6SEJGN@z{%_-#(!$J6z&?7g^ zlkGiRl9IqnY*l4V8C#YP3h5SGB!48LC0W$Qi*NZzpU+LbubjbwCLqMF}^8rx+WI!z2 zer1624GjUwY;OtQ-L@Xs9oKDLuEh3EaGCl!oVB@QENIWHY{DCfsrjZ3L3&0iGyq2G z8Fuqh$o8}g+G9dAsvBKshTpz?^2kr^kRzjnZkkgH5ry_1Qq zyCL)`lI2^xQ;3Uu`7l22r%zHLMPG4xRd4(xMQpm+so%q(oW(8TqSCPvc;ToBrjm;y zo4Ks$mC!o`6d7im()eFA;Gk&;?1HVhGbP#py);*td!U_rgOI8G!@DMMk`;53)1kj@ zv3caCLtGWkahwm8z>i0<5*5;>mgS8AAMBI{LRs##9($cU(Y-(TSkSmlnk%%f3je_7 zeJWlFgS4JwEdK#Cz?{B9^U@FgF%6T+uF^Ei&yqfI3;3Xe>HZX@f>&*lTw5f!y~e9t zB{30J(n*Dn+})N zl11)PwDSh)6s3qOrB85oc@9=&b+vy^1)%I5bpx zg6H@7ykrVwg4XTYc0V;rJ7W@Z5lTAK0Et_J9j(pBqkMC{1ux+h@u`o_%u?tDND}Xs zk+;RgkQ6L64kvv{jSO%)K2JhoCd|A#sCMCerM;PPv|+;9$16K>)}#`h6(0%aQr3oG zwQ}Pq2c#K24VCviOP<8S^=^Zg4A+o>_Uj?o5y8Gwej=@NjaDY2*wXAIQqz}R$v8Bj zq(f&7;zKRLFQ8VuGyEvXcIYfGt3g|ticu>=10XK;IA44KMF+OpytfHkds9N{tc?Jk zt0AA1j5-6FmxvlGfG432g|C)}8gp&Jy;Dy3>W`#Y{Qh+5Rwf5Bywtq zh-Mr!YoI9$amF(yoGUfdEC|{Q#4se9)?`f(jQUj$QUF-MaDjCUBnEAmN*A#P;qK!?g^sZ z_K*GjA9i-Ih-zmQyq>NhUR&bDT=xeR@+a?lY3#)F^+Nxc&nQz?4Tlj`@zjoWtnWkWjedk<6k!^53pf}Sg z@^a!*-vwoYh`VjGgg)vYKpkhBez4H6W}0@e1c+UXW0opDmFt%e(Nt$Q6ORdipujph zH&}zDXF=b>Lr~fly6M2-h=ylyru6hcP@lj%^OOq3>!XwN$uYZS!hlmSEoEh=(nA8O za3!l?IV3B;7Z>3k%R4QUN~maFk4KZq7Ayu}JGe5kIleoXJk0M1UHECb=jTBKHiX4# z%+?O_Yjv9pMZJTM{$fF6}paGQAr$i)(tv<#LX(XwuY2_&Sqt2w?8y_5Rp2*S(a}VxdctWMldLcPN znFMW<*9t`6vVFElw!B2?wbVjs7UkMaQ!Qc)aAD|S%}~1qTucFxW`=&F$6~2IM|~@{ zJooS8D5hQ#6)Xsn>S+_?V#u$F3mAlOJ@tgvy$s@MZ;HFd_9va8>7-9^W8!cyO@qj~ zDD7jwMu*ht(Q@>?xy|2DPq0sW@2tuVn7xOvdK2kYduQ#gU=yblC}sF; z^EYZnTiot!?fz!g^vXa5E{VsAy!p5_^!jz{L3&LBak4KCy0~Jng`9(bPfGX{aN+J` zMqK={2+pX)VWh(5fJ50^yzIKk(T;aF>+j^&+E z`SQ^R1XOtZK-K*L_D#_XHTuZ!!MW+HV7Pu4xi+i7$?gRJTeBNlH0sye^Ch0;tMLUv zk;>{EZN1#ye6hFj?dG!`Ry2GZQlTt#hrKt0*FBtu@18?b*x)&`uY~K{{{C-+=?~0( zHyS?eodL?)2JWiwW5NIT!Sv^~&hF2L-B;I_*9N$1uYb_V4FU!B7Mh((XE1;<1NLiM z-ydVyoObGOyJw>_=n)u6yVS+^RFC>^1_ymgTAW84JU>SC6?Q~)0)E3wMq2M5j7BH@ z-Vo|Pb2l@ke$Nv*pA{Dw6G=M8o`1LXY?J*nQ0UMUnIEbhihHoj^69(vS3fr%8KB{ z&j4&ji6!k$c~df8=8?xerFhg?1GLW1hu4?))&^h(+c#Kg%vF8ay_rnBzM#Zo6WusU zPEJl_uV4dg1Gm)ajc1QuY&{X_HiihV9ek8}xdsT}KMb7zh&Gz~4?E)y6$4?7-HEq} zb?#TprKf`-{(Ua`Aju)85VI4ZQXMov6jkhUhG*xe`+cZeSP2CPj6Q7RVEUWh0RD~> zs9!J|3~>P*t~^#{&IF@kpZ7H{9-F{a1JwEY&d*(aTmHKE{yD}ia&DcnN9hMUhHO&SJ`%kF267MgEU01`@_#@vZM4 z1)GD)ndeEtHIuvzGK+6($U|QPHecn**#Ns}EKSj88#_;a*qn>QY%90fc*8Psw{`p0 zA4}=5z1IZ0`YfUG_{odS$6G&v25XNIrFS%X*U;@s?{W=L&3`0t55Ie{^;FBp!(;3o z`X2+9$^({tPoNN@L9Cu`KiT|w@~5A>H`W?fqLS=Z0f6wupzLhDeE8ko=Ch3l-)~YF zUc)72Fp!MS4~}K5Z&S0Ls}69fnESFDiq8(AacI0~JTJGCXoidK!9o*E6(S~f%%6HM zD!;9x4>lhD`?oK)UOs!YxBcXQZSHNqeExjv#g01NDbgkK+*8@dJE{v@iF-<*F zAQosXYIE*8@acz@_m@(-rEA~3x~>gF8txyzvZ@`_-dFwpVb1kcdx9=-P1$2a!3zYX z^y`z;BIaVh;iibMyaxe%DhZd|XL^~BaUVHs>i zJ%@ufkPd9#+fI~TNl4k!LQ=-NM~*IL>Wx@qHBaLQJbh`syB3|REm76|`n7<~$((-F zd}FB$_6Fss`b?ndQUl$&VY_u-&Z`D%^OFUrCL6xGg1)6PdeAYYu+>86%9r@5S6JSq zD@84pJHQ%Z`uAC$wF6?aRer*`|&JYMVT;;u^ z$Oz*smqzINJr!St;kq|=?-D9FkIfWcOU>!H2Sorj>y>H3J^W40`Sr`p`G3F#ALxuMxyeI0;=DV}eq~CJk zKi)_n*d#Js*6ST9_D!jg=r=aTA+zSDJD5A z&ImNQ$(19$z)oF8=ai{yHk{d0KT^`t{sOO?b-@xPdnjP?t4WnWuhII9S%JgC_c5I@ z7tKk-7uYgAIOqLPz4YEVuC?Fe{ZS)&(>XsdNu8t3r;dQ27)K=uHdx$D&4?8cRDU)a zT|(*vxt5XqbiCPvfg_W)kO!u-_E(mNcBeJ~$KrT3g1evKnk8k7mVBXZ?8<^@4^PAM-?fidm5849NBEJqqb&QANoI79n_-7)kD zEP}0q7z?d6?ndMA&K`qNZiNi0zBmU3KQPCLcL7yu^puiZ#@@BD+C~vy*vNsiL8(!$^f6ar!* zcd1kV_n49g7f%j(XVvGejT7vP6rgFF*N5BilKuKW&tbP%ZozXkxxkM1T^Bm;G{vw( za}5W;lSgUS=KGG;``A{1qAhO^khJmessG*|f1nVLBHHF~b8&*5OjJm`FWdp6v~B5G zXW%EBD06VQEMjQde}Ix!3C`CDqr?Q;(thVA=;d}5$7+G$xK28>DFaHF6Loo-9KU@F z+L2R)dMp-^Vm+yCGlN$5K45qGnn}+|5PdSWcTdXS>I{M$(s(Lfv=0T%W~modNghL z_?G2jYepdj>kYb>>*-J{3mLB3xo-FStv{^a{NtBsTn~QiV^_~8KZt}2c=E=K`abBJ z&a=-gYX)dMp7mg?$Pf$xX+mzs!ir^i1$Il^4rIohzTC!dN8{gUk$H>6!nV8R^o?%h zN!%L`daIbo42E6RkVhE}NgLU8>=LBvW9o5fYd?R7x+l3>?8G`auWIRVOrbDckVKP} zjNyAE6l}C745m$*eZt&|`Bt*@&9X`!0SpX=$BO}E^>9|x_-CGN8h^fR9{*f#Hwt0= zo4OFMOPx2@F==UR>hhzH4j^vHW#AKS1Zk&AB9P{eK6V(~8QLA%Lqy?HrSI`L6r+~i z9_pTzv@BTZyf#3H*~U_$Dx55-I36(Th5x2LZl%3dEb2INg`k^8|A`g#9c)eLRo-=k z6<9*8*;EtP>UUTD)GY@w3#}lSnOo!s@ac|m5P)}y2aK`~2PL#&jgQxcj=Sbc&WQa3g5 zfTXecCKmsamTB#mMg^36XkbRu;&a>_X57scMhX?gT6EqP7EXz4p_IXjM!mW$grC&5 z%Pat{hpDEGFl}sX;Se z293;~X3Duk%as(IXpRSJBIJ&7K#G%i=P8;UH z>w#rg<*1i2$ghRiowPYsu@a1za7DM2WE+R{EhWmNH7pbFW5j~CSI`TVZ=-QQT0lFt zEusYFP+7$j-SEJT>NUFM7c+DN)T}*STR>nI3}woRU(l4xiUy>7MjuTZ&OoOvAYg+z zTTbHvn&)CR{WFt>2&hwDlJHY$ZxhOdrJB|lEEoXCqA~^sq&f`tta&6V?`8(WTDaVJ zc-a^dWBMdFsS>DDci9J+0H2^iEShxH-}J2$K#k7wCWD}f3ld;x0E!DF@B3U zd1{t8!$cRO>~2Hl)lIfW)D<(zlTCwLg; zf;(E-a0W#${&rx(fGZ+UsFXKl07fD%(poMiNfs23&~n{K)TqqV99?Lt6qU8NV6}2D zY1Ch!on(A2yTxUVA9$%6mYZBVZ(6lDn5)av;b#_4!J-(cZ2!JS}Yqsy(8JgU`S@ZLzNgbI~ z6R%5Z8y4VoP8Z-?K+&Y}R^OLfqsD01H+Bp=jp^mgc52lp}h z2N@@^g4h=oeA|Ojhrs-ebz8G^u(yzzjBt{IBZBEv0k{8ABM+sSk8aWQ%##rN#XX@c&XuTI)x|<(^-#%xFmK^N z8XExQ7`eciVDZ3dwbPWuh3_$m%h#HK-lRq_4^Cw)iy$CQy)H3y3qlMhXpsL9MbPXK$E7Cs} ze2y(E^VAt4uyptzCJf5T9#!ZPvA@{|yD~8V>{-8|l(Xi&wm`KLkm{gvcxjH-8uGOX zYJ^s@b*e)AgJ8BVn7k$F#XhKS#2h`*t`FM#$R1WG{YU3u9Y^H>hzLA~Xff z)X30Oo(8)xl)7_qIRbaiJiZS;H!7 zr?0QJiK#597zAKT1Zq~sdlinWh8)$%Tzv@@GB2I`qj%trq?}2lQp`c6Y9okxpu`GH%-#ot$`OZ?fTZ_8DTF ze{#+Yh`DNDPT~LuP!FprzFsfEuNH{baNj}p-YV*R673k~{-lPu)m)7CUmNj8%|Lsq z=7}}G1=0i^IIA#*2TRL_pK0Wj;VFtZ@Cq}1xH>Q=peY{=a0JBGCMbGvjtu))A0gSt zoP_{Z;VjbY4i3>GDTdx7#m3RpkG=w{$}9Y41ZzbiehZPId_}N(Bf8x}{jjrkO@b5j zg*zXx24mTw6p_~c4vX?(>jDeNXbdR>--YyR#lJJ0Ih6h4y*xlv0pJ}*K4v7%z+f|a z0gt>vIvyky7Dy8a?20U5^_f15=$?rPi1%_u!6e8m`|g*rzNk=8bW7c1m_$%Q+lE+YpThKpF8j<9t}(A1WeQtm2hA(MDn?vG~+Xp5{4WHFcU3}=VQ z0m{Bv;TUWShW!x*Ak$0;|2R0D9v3gaD_?%srynlOJJkIvUOUehm3SJJPdTLVn3JES zg*0RQdROK)vK04+Hy4lNYtpRtv44HJ`&$S$u32x zrW5nP;P9Azhe_t<3NrSw`>PK6Iy?N`a%;^#rMo0B9D=!EtQV`S_mkKEk?{g~at9nO z@OJcy{u9J&GvfP?%$tI>*?;CsZenGalM#g>3`mLcg#yOExN^X_28+id!K>uuP0gn5 z3;1_WTb)9YSjBBrhyg+fJGK1QU$$G%=-CYgqj2=DX*1ukY*7$<*lhfkPJ<&^JPiPJ z@Y0ilZNT}&(g)CGJa`AONNI|h1|^3PRXFT|9J8=On`f9OH|ZG`1RS10=7DTGFatwN z!6kO`Zg7h11Y@*<$!k$Zm#H0~Yq!`{)!-{;@0Yb>k##AIFX*Od%02e`wAR3m}g+cyBb!@!4Eg z@Z{(yKZ3;vA=h+4`?vfGxkywWJCuM3TH9Dttk_pDYtp@Ik&qF!2(gK28_N}b&4&1X zEYHonCQ`7aw?XBrv4JWA{|#b@Dd6|uVXgw*wf0ieJUI7*f}JeM{J z;I|BUSOC#rWRNG|>Jw84SuJ8;ZELso7S65F+XTF-hs`z<991b-YwJ-s8fRMzsaS6> zsw|3@t?otHriWzETSTjbWMIU&P;?ZU(-Z758Si3&8*wBoF*Vez9yX!Wba1}BjO(D> zpg8Lt9zw1`TR{BG;2<3ubM3-g3MqvX*Qj+e!lqsdS`Ygl#k64LIvk&6qDP65rDXa-ya zV>+^66I1wF?;rbdyAQ3SA!?f72?ASDH%CatE0rePAV7qXUPfm#jy&ZXrGqd*0z!T2 zkYDl^y7sqcw5$P0REalZ^W5E5h+DgHn9 zO@r^XV9P|(C-mDxil9z1l|b-?hYe^W$?rIJrz62oekwmPKm1JLY|&lz9MLe93ic4y zJPWw09Syt26aEFSImgRT8{ppn$1=}?w(4L;frnQagn&pa&km`|ab*eMyG;gQ9dNF~ zw{c5DNBn^$w>LQ^D3v!WWd&lKt21>EysD{~mnef{XtGHTSCAC#RlBCjT~SZ{Vg>ds zDny_79J{%PqqB<)4C)BVMp5l@FmwBdYvxWx&=3-3Vp?+UVZF!Vjx$U=t!%**mW&Y? zj4!0haH$5P`(KH+n&pW#V+;>Z_iTh#K3S@{06>4GG7#li-R;(2wN8-*XNZq7VKG6l z*G7%OYY#ZB1XahtK+GW3>!UNwkdVF`Ufe&RIQt2neRP7G53e) z%)FM+Kq?H*%*?pRxJhd+xJ-Cik8=~#DWdh%N*#KB!~8aMW0=sY!4JRyUxvk)=h@ZM zLJTjAIG8KoP2N*78N=29a$TvN*f7bCopMdIhn&u^x{!_3;@#4pU+^S}tJh{9B-Od| zt29?z4YtoXu zVz~x1H7OR0c^G_Yt037pnKM6m%{)4qzi5JVFW~^BVu}VeH($Y07*DSJhl-M1MG* zT%(RGrdTFk$c7Aqjd%h>=I(oEM`2Exh=s*tH`n*=PtSD-7Kkicp#mZ=O zHng>u0<*hqg*}ii*3(o7VNd>=VzhOd{Yd4YwS~@5&&ogqxtq*;#Kc#q z51kNr9N=~_IM#ZRvOotv*aF1>QG7&@wtq;aY!!fQq+wTq5FZO`Cje^@)d{I^UeN`j zM+pDuk7Jw5$qK|Y;$eB!50>WGIp#h|3Ne&;hv5r0WEg*pCX8Cx!HV5h{Ny3+a0U*W z8(H@UUAaZIteI+c=o%cc#v6#XN5g80xv(QY-y}>Dpt~?u!;VVIY zJlkMfbqF^V+5?S;_m|*Iguy zf%j9{UuB80-O4MXkZ z3Hs)wR5DqBPY!55;^dI_R{Svy zJN5Eu?#J@HgG~FJ;Xr^h7%L?f)3n9MP$R>TMp)V)OZu$lDqbv^*i|a!5LdLOwbbN` zQfm}r5m6)-TFCic18af17SG5*GccBw11bfK`M}OdJAnv6Xk%03T{v|6r&w5_8(_O2 zrzK{N0h6tvqW&u;B4ytUdBtJDv$1SKd3NFY&XZ_fr2Co0}#T8DRsFF7etF$)=zpu1Hw%2%E448m<#MlQF*l(HRueP{|0eG%{FP zr;%;uDvUK&j|w0rwSMHbU6B+AONUGwtQ>ykoT*Hxtg?az!UZYPnAh7E0%&LCMagp^ zUeCzartHO%$bF8DEkRn8Fj&yTWlnp)VY#E|A*Y_gF(rTV-~cWUTk}wMXY0|{9j3oC zuk=3I8^dlXJuvi$yn!norikpx$!(DVb;u^NE}ayL6M%2`j-ZvazUlA3;uSl0}#i@%xcw6U`7wILjda z6bwo;WNwg5$^Ph)HAALNy|()7uhnNoE7cdZRu;YdYemTc`7A$s>(=^p@B3oHnTSIS z@i|sH9RKw0iiF^2i^C5KCP2AT^2oJO3u4GAJUifP?T*Q#K37E;ZRLu_)F;d#q}UR- zI>4I4K(A6(t&>B`s+DjIZLQF+g!m5Tr>eF_2fFu`HU-R4NL?=G7&(F9pt<}oB`zd} zZwXz&48g&>J~yp8C6CLH*g2O{#I1U1JMtY^2SzOmNOQUBfGA1~RUkL+^YT5e1aPFSA~`X>))$D##2_tBs%cx`lQT4w>r=u6$n zd8R_Kg_R!LSY3v8TDok%sjVsIPWIN;2;1b9yaa`tsx^_isoXr8FLaSM5HF<9oFT1p z5ujof7QYBhBe$~qU zwGpiy2u~~<71)NAznOznQ$1@Z)vF6?A73gTki;-snwDpTv{fk91H`4pD4!2Y^*g9q@XrKQJT;PK7b$Ln~!j>n4YH!Do+$X`b&#tpH0}T+w4}hI^}S?6mb=bTFMRb2@%|c9l&s?Dx$< zBxbv*l=zf5l0)Fs97j^TxqKW6deJ<}<{GSxs|Fj!fjqWmqG?PUR3UF<4r(DM|H1*c zaV%LOPq@Z+vNrQgO!~*3hR_HuO_nneBV!)G)F)bJaMJ?kz~y_CIznYT^@Q#@A7Hor z+aw}Z*?@*T)@O7{STqQvOpig4#e~OHqSFk=OWhm8&;*2v!yFW*8Qb}T1vD1et5;>v zV-KDCU?Gz`Y2V>CGi>%^n}_o#te)d}7RoP7nrx`MOvL9*K#-)l>_&_iogeGTzVG*t z>IZIcS#m-MJGO-s%(BjAX*FWACJvj5bdH9l@KcTNeOB*#(J*qWLZCqw*#YwWPcp>p%{tcUKwrIk3J{qP{_P{SGzd+3PA z?JFPgfYJEMw{Tr9h}@$k9*_+>z3y*aSrKu`3wZ1y&iCU$F0-cF1uZx^g;Z=KPxOZ| z)KO&;o2dYJb{C|@F>dF3GBjeXvD@(2S~}Ho@U#25qBLFeZd!*iv)`N0O=k1hG7^}2 z5T{&H4?;tU2@|q^IdT2|!>2msgmi-RSD;rkUt@8!IL_RaRYQ@9&fMBQUO#F-GVAWwc!j#oV=w~UJ6g_O5}t2|NG++C7l`GdBTk&iQDX7gRy-5 z5>%8if#Lq+xRNk%wco4~PfWHk^@s+@#2dWgO0$q9WB@YUk<#37taJi(;dwzGE3uhi zw0cLlCPXOtz@=pJl9Bj_Syb6|(3z?fsM$ciZyK}qSS281QmTZckIkZc?@pvTem zB~UFWn27sqsP-XIaiaAt&Z#1}ON9yH7?(yWw>}8VZ(rjHgy0=!3Ts=^B!PQ^(<`i~ zojl>7J1c~Jik(Wp*8)=!9LZ_8aq_l@8_R?Ng0mo8=pTdze2Dz;Qr18P#?M&|cC6Dm z=GcHYkaO=Q_EfOR@kq)|V%feyF?|XwPnQkhY_dvSFGW~5-L)$Fc#8_8-=qq50ImQ2Y3@YndFR0>v{I$sW4q#a_eD&F-@9WYU@y9E#5oCzGICzF?*YvQFj14Xp zgAhBChtv>Sac8Uv?WErLLJ7Bnu#crl0iM!d%82{eypF#hCMvU{YGJX(X(Mnuysxv3>|Djow z=tc!UyI5drCcOfJRj|hergb#iD$z#byjVP|n0^nu{F2cUKZDK}B^hRbv%q55fiV>> zP8Dc+6I@Io15os~xD67DHfJ-`Dz6CA;J>UsRZYnNSS!CmUGWzV&My*oo0a z&6^Y4He#L7&AvUb?Ku0*TcUg*kUIZl*?%94vo9Z_pmhuA^zb z1wyzwE;k4|vq4lwG0&oB;S$)blZB5bS6DsD?r;AOY z1!n=H;-X*=s`4#jbRP>bV|TEY(q2I=9o)mv9PS|zxGOV!bS=)6>co)KZ3ru5$+`SZ z?zK%VDI2wu?{7Ap({9@fwO?`Veh=8KRvT1k9hA0X+jp#&7!X4m zZAG91nn4e2qYVClQw@$IbwpS|{bC2D7<`7ufhA%fO_Zxb#AD%qg-1^J*9px|(7Bn96t|kO};o=)45MVEYU(hJY>n+*=aIG)D3P2q&A=z2OD)Mc^oV8pWSs z*vTDFS&$6_T1FeyF?9M0df1YiPA&h$(w%jw4u8I~>Tue}iIi2d!FfWQt85Y*dm@-y zGV4)0jghS1Gxx~vgoE)BLm68>{GtMlkE`E+eu(oGOqJ7{+Dh=0orA1MD#yu)MOK-I zr#D?g8;BZR6S_I0hLxECvnaL3oGP3$sq+Xgp;p4=F2=a70baX?C+sojC}abFDGbf9 zvj{X0V>+_+5t2Z!ckO*^OPzR?%5gS8={7 z&*M&UMz+2k!x+bPX1J=G#v$|75*4Xd$5MxKUBfb1#QV}dk?#s69Nq$s`EqLBj|r~c zVsgd_vNIahcuCG08~~F)XdJZaN{A=?N@1U|#@)_X#~6Id#1<3m`3_wELat#KXo0#s zrOd=g6il8<#FRtp4E!Y#zOEoxT2=W&sZz=hJ6|Nf!J3a~@gwTzYNEXIP8VQN9*JlKXE4 z$fpOB?=OegPN=b8I6*kKk~Z7zcDFR;J_I9f(GwT=*lZ-t)FV~3E>7Z_M7nwW4;Irr z@^Ua>Oi57eZQ)gd;K3qH7{F8~s-vTVo1~bUa^m4ld2XS6MSaZ19^4{nq_(usA70?> zr6)tCu3%B8L4pFX<(#^ zPrv;>oDqW&%)$o#?0je8S4c0=!>o0p zpp+M32a%Idi^!!dMN5WU(_*`H=ZhQES8m<7jK1<;)}-<1pOvUf>!F;5+tUjqbn;d6=w$T`BEq<8R47l^d`6)xSbEf|7y)AS0mwoxo2%+Yl!KW6=0BGCtHh?e=7p`SLF)Xd z)JuP7;~#c4^@M!fWBxiR6>bz+tX`u4#g;3u-yAXTJAEaqV|6iGmbZ1;Mn2Ky{|Rm7KMS*<8(?K)G`1ufOhyB8W^HdO!tdrrEe6Z=FiiRkJ!A zs6Pfu^5=t1QNl8cb03rvqboEReX2aHDceo(4Rl`Xn#%0%<_^7jg&KJe?-v^<(j>u_ zo>aELP0($SvIw)^)sC=t_PjCl)R~bw7yr!ZT_kB2`iKz-qqly$l4eyba~pNUO-7h@ z+EV&+Cz7Is!%0+}Y)N3<4-qww(Jq?6uYXhn>J^l8x($;~VttLCR%l}gd7q)Qz2LO& zD&EJ`AgpSbKCo^htDM#JJmcy@V-37Pd1OxZ@}aF%RaY=@|mDaNc!km+Z73Z9ado`EX-r^U9!fl+VhicR9WhgzKx7~$q>tm#?n&sz@T#|tn?i8!RTx-Dz25$ z9CIEu`t9cOuXeSEQzNEgCX%X9wH@KP0?qlIDr73^1>B=@65EgawPMKdhS=4&+6g(A zKki{EkypSoM1WEsr{5hp7p#%AU&2ji*PV%^V?2XL{0KrLjG)nldvhhKrj4+kzuc zHMi%sL`1AhWhDuJ4a`m4``S=zwckm{b zDL`PAAY#TMj)6U5O7`)_v~y#5#>VaiSdv*!i3?aVF* z1p{YCENC#I7W_=f%NO5+X&YwbR%6(fw{*TJQy+1wMNND zDF`peG}xF^J05`eX)46C4uIGs;2w~cD29^kw()H`IvAZ`U27kYCR3PY`uvWBJ6s#v zFp(d}vkC6VJvdfL7|^3e8}b?pAxs_N?(!Z|2OS<9OB+RQWsjwZgSbLWnzLwT#vHOu zb*w8Zo+(agTiUY)3YmrBld6L5BnN=dYJrI2C3HmY$wU``85Hx{CwFUk;JZ zQFuA>5aCF=gdo@xx_GRcwpvh5@{AlDOlV2#C-Rf&Zb4LHoROFFq&6(iW+9INiQ@o@ z?TjASMK|aM=&#ius}FnuJ@W-)aO|u;H#~Rbxnos?=CaFJu@M2*M=Yng$P&a*9IV_G zsEP`)@Z&3PMT_Yo@(zz@eU)w^xzpR1MXmo; zV7{oo95Ncjpv?)x4%(A)0x2&{ABH=?L)s2nV9~;Q%jsL1QmvMBWikuH_I>baT_-CR zQN}SRaH)el;O=PPj70bVu9>9w8>$#DW~fB*i*CH+N}S{J0OYp(d2A`&2g^HOp#^D{ zy9S0QIm@J1-chO-dd$Jmk77Zr{bGzx14jm~O$p%rD; zq5%vyyqJ};b+q~z)J&^s^-W$=u_~lE&gd&C=Hq`2-R{cH-&y+)c|O0s^YhxzYir5& zK>!{=MB!54-fcbBIFPY1Uy!K_u2_UeP{LpmVT~;dqd}JsS{@ehS#2?e5Dei-`Fjbm z|E`exTnp-wU(0fmB|b(dSY_HONdct#ATjU@KL$e)s*&mGuvQ+x?H9*Ir%6v!A;ieD7jHeEsVB^71mu?Bdnu zf7``_?&r(@V{Je#GQMW(&tbPwAari5%bmO7D;3Zrdnz1KJQJt?iRZa0m3(L*+P~z54DCRNDlQ7< z`2ea%QPdkmilpaJS$hX!SJN?2^J~W}zqu1#Nsj`dv<7fMKxMYtW8QiUxee@^Y>+UH!(k2vHIr{sTP1 zKVpA!fJ|y0k0osoaR#%YXOJIYFs&qb|KH%=t)$WXH?#_2>xe8Vg#oI&rbkq7WH(9$ z5b%NXf@d#al0|~T#0`5Y5T*AJsc|ydrVAV?visAzCsVK2ouoHLp&>QjI5FwE;A9(t-YDw@B(6%6*jU1gi@E0epg! z{;mrM)_Oyh&7X=p$MwCg= z=foP8vUYyNUmByiA&awpjq?HXswB+BT@U4Jebk4o*;3*{!+&?tOlh-!tVU*DSQA#U zLwI*lA<{yqizv6SVnX`e@wg-%er6is$D#)Cnqat%7#^IQ<2V+!83+m=oJ?1F+NytW zJaIP}zkfG9J-J;c1YfKj^G&7GMfpV-6va}9_)PYy#-?OZoN3C-f2=7l=AE{Htq6kL zJ|3KEw}ma$XN9eTrGDVKhA1ezMRJEa4jGVMS(M!1^m3XZDt!@=mvwX{gF7OW8N zf_yYO*BuWCM&oG9RFG78?ly548pqyg3$U~@x}}rKP@Go4e$?Xdxyes3P6qq9Un2sc zWl7or{9n}FUne+f8IdK-8cx@~AERXQfq~_RLF?EejR(-zki(H37J_VZ})n)?Wvv~~O?VfEN)1Bf6x?is1Wv!@KV zVM;LJ;+x6$Mu;Lr-|KET0n@mt)+tgz;#t~-h}i=F0BC2%ij9;dsPB=-pfgUUFZ!64Iv7o@RrR~x$6vGQiLO(T$Ouk$L) z07dBFz%7WT@!J9H;2?0C$m9;?+X7Iz7~MI?O5j}#KQuccwRr+&k(B1Ef(0I#@zd{- zGDZgBYtRhVzXpJj|E zsrkZuC+w)t=9uA3h@ym7X=dQ?9yt|P%PF9X-YEE(oRMO3)MgRHyzH5}5ETAf3>hpi z<|6l^Ty}gKan*_Ch&AJJ?=`|vv@qCtY{sF+KD}W14v0G=!pt;}u5KVrjYnwNS%rz2 zd@gb50S?UZ#WqHi$0j@N?wemHt7gD~lBknxGEHcp_1s2QU%`6W*5l#8+icSb-D%H( zW-H<`rVT(WQYmWKv4+i7euG@Z!ase0OE$(x(8Pvuk04*U(S~z^~+74LueAwDJpN>{fMj(x`#e~}KU*Wd16m7VN zr3Yhpk)Q{;384DQeJ0WEx3^$&5DKP=l5ElQ7b*fZWw0aeTWfXR_6NB9C(c~K)DC;Q zj*Bwo5uz3j!*9O)nGA&89`M_yv5^~a1g~@u85}c@s=1Vxhv$eaf&p(bI+{YvQ-e_aLB~oz!fzC_cM?A*zL0uFKi9EeJ2tU}@Eyg&n z@$L+vNoiC}367EeCbrAzcGJ`S{&?#s_+C8&r5Vd~5hqaprd{}l09omkk&oV7({LV& zvu1bj20ceGcU>gUznjTA7%%o@y5+QfwE3W3LNI_;UQWUd1N`M&;h{z}f zNnoZ0Mnx}#+x|?aK%L~@lEp-8Gw2^6ssllz+KZ5n7`8y_Rp%0v@*jSkJg}7Z_fmU6 z@?p3JI&FKc)ga9+qoc3EvDy-4@paT?gZ!iNe|nLc;mVtu?ZkGC3rJ-q2B#-fJ|KuC z92SrQ7VM>2621Fo5!a{66%Hx;N;Wx&CQ6o|(wC}dK7Y}F%~R^s*itn}V){_Iku^03 z^O&2MJOnSfxs}wj#fq=x#AW{z90-9vj!po0N``%SsE93*DV6I2hy`+ClbdjCFDq*i z=3&$ht>u7GlUOoBpbOf2IQQ-G9R%%`a9*`O=+tB? zb}ot8%wF3Lsme}V)B3HpSqqPeY~_@Ym+7`*zU@o*BZ5$` zD6U(-q?fr_;{7ypVP|>ytD2Q1G!R?2B&0Zb8%2kkK;9?Xey~~zsl;t*Rjd^SKG3pa zj4TOIOCNUJ;iz^17Fu0>+Wp5eE8ko=Ch3l-)}w=EBYeXdOZSPaXM3Hn5PaH9UhF3 z0;xBwDrXhQ7>~vlGeMGoftXg}FSef8$q(*sZhx6%8s8_y?H3avzfes>Iue~fsw}J! zB58$0db+_u>(_kSV_WSgc#qO5=~|dLoDUt&hvoOAwfzAYwgFgUlHvmuJ55xKh23^< zg}E{5o?blToWiXi_(+nC1XG~`JH{q5J{laC4h5@>BV)llQfnu@i>CoMaPE|N_D-Oc zbqWNsoP%zd+fKA68IFKE3yUc6t$IyJ>6@ zo#-)G_GuH&HUKqcAd1GGWh3o{268TOa)}QU8(MH1 zDauZW-a#XFHUDjSW`BtJ46Db*DGg3`F9_{WE30_hN^xKt&ot{*VXjVT%!M*p2HPX9 z2llOcrZ&qTgimy*mO0vO-5ZtQ5fL6a$(TS7af=IX*B=Qe8zTU@cM_lBXoxU+AcQDsR6<)+1g*){c z7lavSNRrnlb`ub6Vgd#?I&KA$G?n$R3C_k4+ohC!pGqfJxf$PCQjlU!M`z08Q+e6e zK)}oQ>|}Y0!B+xWF^IU`#Y{lI6gYhF+y|*$X#SGvuyB}i54{AHSkJkp^zW(QefQ@%_OGYL_-7*O$*GjB4QQqHSR@a{}d#_Yj62bnsrZ`C)H@@9$ZT__J^!fLj+tDaq_@ma%JFRC>z6=SIqCPZIPp9sz5rupV@=~As2>c)NLQbI_c;MkG zyaArLNo1M>wCMh=vir!wnL|;W3d$`RO=Nz!Rqg5yPBdF`Go#5O1fOlSHoo6{u@gXZ zSzaPkJbf~QOk5mv*%=+cY;SMP^cMbRSo&C@BwrG@RG-Wqw|mXvqQ*9T9%OZgdknt&TN|*4}?uaU6Ep zB#+1w!Fag5Y>z8$HH0l=BUN5FQPZg27wKHn%?XgT99&t+(?g6F;-@Rr!*3ulClIKv zx?n%b)1$cEmZyeOka@8OtZ+`5Sq_Q9A0wRa#^Ow8Jw>~2heASUWr+?ca1 z`%4i=pJ>3CG3%5afn903iR)h%nZ*#tBH>zrxRGi*NJ{1eHJdIn^8vSV9H+`y=f`PI zJT4AHl=D3gxA)Q$>}EL% zu_q7-ygkLDv0*yEMe_ObDoRac=InEIh8yVs_Z>sfr{z&7OKtL-P z*=PxgV1%vgU%itN7G^m*$~$2@yju%*QdBA?x`ck=qD|Q|}qga|==yH2!kwgJ(?wMVmIzR-uUaIf58guOY&e9;M0jzYXB!lkrtuR4U z%&@wM&KPVsTQJFVj#U<+cw{$5K);Dy%~O zBV;Zr$$!NBVnP0+qfGw9d;u#M?y_XZi1;l2 zTdb~D5>9K>hKPXK66POt45rHxlG*NDfM~=R@jHNbSo_!1M(Aa`h>$;iWjhIeC4O9K zup>&6NWzMUiiWZ5yBip+@j~&(SnADAb`;(Q1aQK#VtK(*K$$Meb_!GmA*hlD!XM

    R_!pWZj#-sE zZsrcdb&De$xZK`)W~49t66fQ=oz~JCyaG$bQwHK<-&ix9EXn>moUZO*kd{zQLHHJ1 zhSR+xbLR<}!vB~}W=L~B9`gvt+u8 z+<5eKvwM0dM-`_-d38o@O-fOczTIb>ole*!v#w`CvFRDCRUO#B{e-Z8WKHpL{-BO{ zy<)@D`lh^irm-XFc$T^77$*H5KAJTI8V`4PP&v6jNw;q_r`{)NRRNi+0I<$?DGR-z z%-Sgs=(PEC>xU=LzP;1>5%!hwXdmW?i?H`&H;tacHc5$r$&Nd=p=dC)*v%r~0sOaV z@tl?L50$rU9N5Ns2oYDXS8z_Io9cUtpQJEJWfX#KqJbfITW^Pm?NqQQYfm~U9)}!a zsS75{@RE%;q5Y(bd?SJa*fCEv)VL@Nf;WNKrBUe>(&?-*1Y92f4G58R%rjka2zf$M zz*{kyDssTeSMRGZXlN={-i{gBW=<8nx7v0i8qer-+Ao>CF-eE^bs~1X%^@&qsrmFc z_lxI@biOFC=24vIyjfO<=@P_B=-pDPPwFo5I7cEuIyV7NQl{Cwp0FP11{--vLLKQM zy}(*_6FZh1#9%4v%NRl2#WO0#3q12;HwTLIc1OWf^G?mn4FA&w=(MCd!nX zvekL{^bw^Ki~kS~9>W8xC_iJMYI29*zx74n?9eJqR%8N7Irp~Z9YNC$B6O-3y>oERE(8!?@(7Dobq=SCyL4=hSsO1%#)B{Uz@!p@+)y32XRE-? z8(**lR?G7<7EpN|=Z-Vhe5$tfG!A*=>CGFgX^T%anFe2~iq0CYMT8y^y1A}e_QI@b zjVI?>a-Hz41VYZpdzxWD1sNmHKFe#SE!Q|< z^y>t^#ai|&2;t-Y2^M0U`Hu-thtMAGxnY_$RKrmtxQ_5g>-x!H_#4uft2%TL0RStMq%J^y+hfG+t9ymU*|WtMB0cy7ETEftbdNh z$jfvnd8Goy?+wv2lWP8F<#-{qBOEdG4u0{;t|w)?HBL0ZdIQ4&#nyMGUA6YI6*#ysz5CzqW+H2hT16<9Z+3_M;zAN-CmPx>`XOoZ7$d|C?KB&5sT1O zy$6~FB8gQsoG`H|GiW)uPCMry9?SHi>6CcTFc0j4D~@}lRD+z1^3hnj5!Q<1h6nCr*IGaQ^b<6BgxK~^UL&Fo z{*a;Ba!$`ILjoj&f(f}gU~2`}SWjo?fzA5ayB16b$5R60dt@YKR1g9d-++SDK_K^s z6X@fo;%Anj=fC~5wSKdEd*$YzTDR6$)^FRdTkGlbf8oqwc+i=s0~K!m*($8B7oVu2 z=lD!jh(fKA^)FC|&BP}guh;Q**8gbmZ`~+9i5j05b+F4kJKp0$2mE$5xb3@>H?JWW zNs@a@xB90`u$=8YEqyT$*O?(4W02OGyx?;`B=@ZOR@SKioL zW)W@S{UwO8v{nMHSN~`qtJT|g*IoxWd`Bnmw_kOQqbQ0wQs;B&;Uu_umdu=8WW^8OhYWezLs`~;wN9clnu$daB_Kk#Uf zI)oq|{LRpSGDH~faTbsc{-sU~c7a81o+)WBsiu;?>b7~yji>BbX+bz=^rPmw)$|rV zUhgvGCq{6)XaEd1s#|%)4n{aO!k{ADh*TRrlEa%&sX%B29jU-LIw6F^ruqep8dIT8 z;v<$S|A;h+u`9G*6%8Zx$UE%XnizlpVhs;q_1_<(80&c%Cmhbz9iAWbGr?%a#kL%$ z-5bbN)<-!QOxo93v;hi%%!N^b^QNu5i1qpDV@d8O<8 zPhLbgH`NdqL9~B0sH&t-sKczpAvsV2&l@&A_`%iC^*5?5lvbvb5Ss%Sg~m^qnG}IL z_RgjRi@MYkhrCaG!gjz$Z2A^J2S;g&a*1Duxa3N22uLTaO*60k#Y}BVSytB~-dx`W zFGP33I;4eSp9>PR3qg>(SuW?!M_H13_a->Jat#P?Ukgl=e2OY1?E6f|AqhSQGTro@EnTooUgRnd^;h=iv&B=Z!3_{+U zVGwYJ^9j4UfI+B}RckwAh(W+8P4#~_23a(UH)lq1X1EqH$Rgfbp8@@U4};9vfN|G` zp{>tb3YOWeET58Hu!r~k54MyxHGJQ}4GPpZOCo{|=#=5~+=<_TrwTf=y++6-u3)3B zl}2@1mXCX9#=3w*QzD#nyjdQ&!CETy61yCjUvWQmZ-|sDxIJB*&Y`__O`03GVngU6 zz|WL5O2PV$uc`&27dP|FF7-dWaXD=hE_&|jDP9{L;O)Q-=cAJcIPk+KJEPa=PdD%8 zg^u;wbM+wMS?>T8VT!^|+fHx8{6`6wHZne~y^a0B>*s*|K%^DykAf;T0S-$`1seeF z4Mvv-7f%impw9xah<+}Ra0@z#00he6plGdcfw)n-jvIOmy?kXumgf7dIV7=s{%@-2R zshH9|O03R5yt%mx=yd=P^~3N?Zn6suM#O6gGBlWG4H6EBTkv0c-|2ZKITnu9E72-*3Q)DwjW1zq2L zm8r_-CRg!7we1%YZLu2v@?_I{pCaY5;7GnKEKtx6+^?=@kOVNOQ1y&Vaft1jxcESg291PEy1*G;@2O-9822wPnQW%lq5xwRO;K3&-N0xW`)R-hgD0n1rB=MD2 zNTNd7El)83NIlNHU!gljX?_;N#jiD(nfLNHm&~eY_`^%WA>^dU zZkc?q%H32k#I8BJHz84y#3VhjVMgFn=n(85kvh;hNOMvFuTsYC?Rr|7LSWX4SAN1z zDkB*J%ugL4gqmNo8to}=Cuc-MlL`O4bmpNKir_cI%4zRbtDd~Twz?8~*vfb@pq3_E z_!$jZ{MEEPjQ`PS)mKj1_%ixggh3P=@d_Rgsf^Yh7l~70j%iWMSt7l1wlLV0>cx1a z(#vqd8wbT$w#K|V4;QDN6sn6ync(5Idu_{d(9ZMDQNUYk+9(<3Tk=oBBWPDX7(sro%HdvzEGAhnwH6^*9?ts6G{wOMzX5G^4)vvO+t{m z@nHErAI@SK@cCI8YeUTHuCnSZF<2)rJ^aPL*(VOSy}DY+Vij%Va@=<}wB*BA=b1;T z?(fVm;3wR9#>*Go+NHkxKWRwvAe{7vuW>Wz%=~H|*H7gVwjY?mNm&^~`w=`cJDPLH z%>ouy-hSX@rF* z7%l$$HMJjKnpqBERrsh^dr+@XQ!f#T^mN3p7)&lyzsejx|2(hMZ-4{}Env+XfEMt+{95G_tpH3M~MwV!$n;UT1_gVpySP3rcOvII|%C3h)q@ZR82QKBw;W z_N&_BRjZ51R6_*)sl;9u^B5872;C=LDl?NP6|*z9FtZDv#j?*BuCj@SI+E!Ewsh=M$l?1@YOWOP?%Bi2{XHfDh)7L#3 z^wTiT*$QA(Vok}xovCgmE(C^Q%n>AbwAY@~$?bVC1e>cQ4KYlNP40e=0xg<=Z-ILu z<0oHG?RBw*D3&))U~hGi6_Jy7W*TLttxk6qu1**};iN-!W@1u+i^tgDxEZO6xJk_d zaiy#&LtZGG{b8aNIaZ?vV+rDundOGAQ~Q!}W>pn?gOsZ{X_GOo&aAQwz(n@Jm>Bp> zkctK~v?y3d2_X@@{G@-_DP47y(#be1i_h@@L9jCuv%d7?Nu>r8Yb5g2`a_3aCW>B~ zlful>4K0JK%r4ZtcYY@O{bhE~CUPFylq*LWPh>Qy@oBT77c;JqV4)sW2lD?FEzTS$ zVHWzR9`}ScZ)l%1r{h5AaM~^OthyfIf|}Dw?hWe9mr^ZjNI9IMB{F`J4OB02VE;EJ zT)b8kD$)777KDnJcQL86JOvvT+?QtfjI1Eq^(pvw&oBa|U~Xo3tOYcp@CuyZ{d(k= zD%K3fJ_71xX)%U<@OCU1Z1~dPofge9(J+{iB=eA9!%axf$~>TZ>vp-qB^xze5>KFE z0HIkEb-a{?8l){9HC~~?XIPfP;!d!I$B>PM9>$QKf_H35)h4ZQezTW>NNM%0m(KDy zFVB0x(#qwxVl=8CGrO3AciE`Bp^@tEUH{_r4o=(PMk2)d@c5_FoA5yT!Qn7160Bsc z?REX&f9E|dwV0XMp<=l_-7}Ffqjz(zT(fZwC+_TGSf4U%uUe-oMlE+tETbOJT{uHL z6po80&^*l3GJlkFng1hW{E4Humd~y5oB((e7Yhz}HX7=b5(~rnL3ccqjLNubfT((1 zZFtHWv7aUCg|6H{f3my$g!9Rtid3ned@C`IT^9Mzw1-MiQRj`va*em54c3+bY+(rfL}&yHi^PK~P9y*gQ< zNlUfUFo=Z|$xUknbOVEK4Z%+CLa74&H+%2i-qf+|fBt`7g~FKwGM0^H8!!fwL%8g4 zHc5B_NzVBZ#*ro2R`4yBO<)7_+UN7F>g&>yak8_2GtV>Qy@RB+x~sdZtE=nQ)l0`G zX+T-u(ZmEF%(irLW-v56$1|e}NGPZp1oP{BQ?3ys74x(QQ1+tSmBMo{(Jk>XQ_;?F z&K1}K6k8tdz>rsQmbB*ye8QQLVmZ_j84di-ScO6d;$AUg-jTVdkyEu;Z#`P~^I-Dh&_{q-F{=u}f)OkyODXv3U;>1h;=2Cxk zY3266k?`gCv1E9p5sP*H(-R9yh3tG_yn(?*&!H2^H_9(Zot&D^k2&ckEl z!?g3Z&&Ky2QvUzcgyd^lP^7r5&yESPYWyC^AnXdQ#dL@WV%|=OfG7b{S^aW+#1(k{ z*O(8>2N`LgJAXn%zjkgTlI>;YC}@EVyMCUVcrYYRN0?|fXbvlXx7&@+(=^RYyPX{7 z2#D3F4}XNly^Z@E$c{a4pX-+{Ka*P`rmFNSW}C$AE?15Rie)Wxl?!rnx-}>vnT%F@ zmT<=sVrh<&Fk{KCLW*N$jU=fq8Op>JSaZH)GqY+>CIwWn7sLy|yNq>Z z^syCy6fO!7FUl7d8%jO1Tf~t}ams4Obl6F}JzaLr11=&vBsdbo&92#Q>^k|*gSW@r z#sm8*tJ@ioaJfjZ@3=KyJCamOvAf~%;UPcmc6LBk>SQ?o7l)t7AT=V!mIfDOMiZ4+ zYfSkBfaeHm8VYAbhxqOZg%sW0xff>bZf9|EQbQ}IPQF6H3}Lf=Sc#0QExduqu$PxZR@vMa-N-vGlDETmK}vV7}@@du;#gcM0ma~ z=AkR#sh!O{B7f`YF)8nC<8*1lQx$U2=oFWAUh>r{Zack~go}bLGIqN_$k;~cf_>OO zLDsn5dE(cfDs$gK=NBo&zc}yVUWAIni7Bb8BlQg45vq?D)w6-RgYU2^YRf{;*xEr&Ng{v7@fq7PfX(_7}%fg&2owm~a2b z#3*ASA&55gczj6sGB~<6!b)+?aS*x~Grf|r_J|ZoD1yhQdpEE~-w3lHW7og?ciaXp zP;Z}1PR82>p0?3qWkxfgqN^9aeOW}Dwv=VnfOgUrQB;nsM3nFOw%mS_%kn!GQX0lY zDZX$;U16=5&LrGqSQ>Gm>9@l%lt2qats+8D8_6@aZ>cPv!Sz zi#XyWfy`=jD%mQ-Qqt-Yxk5;mQ+$7*C2<^#kzvb0U$Lu$$GSb&RTzi%i>58#I@%fR zFb1ub+4&WHm-Ac9nN3DAPX+5(nl)n_Gw^IiN`P_V8o)HYHu*j+;j||Tr6rK7e#X1c zSZ_x}8!ua-WpA05{EPH%+qwYSqOw^XbtPt%f3BoLTxG!CtyGvtSc$o*z4JG$$A{c% z%aRf|mu@$aD!Q~YIkU7<@lr@oeyoegrPxlfZDIQ~bLP(b&i?AHb#RS9?LB?`?j(RM z@GLhV)gL8v(-QMzv>=MfcTeuT=O%7;uwC+3BM5SRoid*?+XV=#8Ge7I@(kg~LuT55;F$&^bzrm&XG55VFfh?jF|inUT1OoHT;)rE=y==@OytIc(^Krg z>kF}5x*g0AM@c&X1o3s(+5Mb+XK-rsX|il2z)+h!w<~dSG~QFPUa0BEr>DoK-D{*r z-Z45)t;To>l3x}CXwa0|rdtl4i>U3srfx(|9D{0p?l0D1#!}DSEq&X zAIYs3JK??ZLn{k9s3(N3t#%dTVZDdM@Go)NRrH^=j$#bX?o$$NHjLqTiczl`d`U@6 zNZnm1eZ!T20M>f-AkIT)sac_>#i3N8P5NCEC8-5Yv@mHd5v3K4lPMk13TgU$#fmKm z>!O3$m#XXcVX(9oLDcLe&DXtqXgMn9qe`V}KEbexLJgh7-e}})-H2dQ?<0-x9*`T2 z(|OVjZ*(@|B%& zMneu>sw`f4|cu zqvaA8=bRD6kodcgUbfd`vdVDOf6UP+fkho8Unf^(4vsL$n`PKGa<)lPTi-3GDQ z`s;}JWUi&vqxc5GxTq^hTc}r?c+~Zq(kVjVL%oHPuOqzgO<=PGbB5h52O-2B3;gDoek28H_5`Ql|)oZ zH7flB8AbPw#-mnAI8I}NEj)Gm^IJ2@zNoo>Q8P^zdZ|%qdmJA819DH}dzP2W6x`K| zCE(r)r}ZoVi)1i@ahkQd9K3I~sr-dwS7!oSP8DWG5xZ3G;w$e~`kkv*H%?bl9fHu$ z+Bn9*3R~40IzYT*#h_tn9q|s4Ev%d{LYrZAX2Dh_wm%42CfdH#oER-ByEl3m6w4`n z8H~`cRt-=)V_WJY2I;i>xkGjI=DKIUo7w6pHE=ZEL*sty*4~O4zTgfdcKjoHFfj!? z@;+Hh=<8;<{)t}+nc)$$9Se6OzQVA{P6(UI6^zzrD7rDJagHR>T>!g=>SBqLioGef zALW<|3Udepa}Am8Gu#OJAm3~uLqu^6;Ewh=@kVywC(nK)h4-G#P`pnCelM+6_E)z1%O@kh&n!p#xUoRk|F>W_uwaJLybvD*14C(E0L#_SP{i^a$W>pz7S>QA zWiT`Sl+&V$CzF~GsYKIe>EZN>bK296Cew7Te*@t1lY_S}!DB%%xu3pimbKyAS^^s7mr0jkHjEM?ZjT5eAeMqqxADPo}I5-&$m3N0_u1j|~;wz4U#)Bpn6dpSC zJ5GCaC073FcnSNed_0!2OSTW(Vj7!kTnrsk8dl@!l#8RSGq^?ZpN)Sq7zIvu50rgZ zGD=*Q=DxQ&8l91LRvr;~-B_Y|Ie5EVsEP(8Zt=9=&1LUdSp!w5<+;JgIqizJCQ`Tn zXLPK%Y(+DqemV1q&4rEM;6%(Y_tH!qBZjsiQ6px$H1s-ABn!AC0W6zj*S7$I(2%d} z8Jj>J+V#$AkShbOOcfVue7H#w$3j#h4DBGFcSyy-s#S~Q(hDVM=Xs@NrwSo2L=yC>WXcwZU!+Un#*w_H4DovZ1>Aac##UW;K|P8^{iS*QViVk(hH^o!OpN5T{u2M5E`^t#PCWY)H+`w@p1;W=e-tK_{W}&^I!ary2+o;|riE0xh zvZ!Kd*X1u-rND+K&^5VpNVckPH)NJyw#yM1DrcB9<%;?(r;poi~ z30OMF9WTMp6(iq_TVMP$n?e89+QzySwZ_}{wY{+FCBx27x#oxo)0}7&_B`#ZK{j^F zetKPCF9}4ZFa%$o#mE>1XiI=UAOPrGr90Eao)Ci$aYWdSRLN2Ay% z7IT=QNfX%q-DDFZ(XI`1Gri*Y+3qg7j){Q`l6}yJk{&2T!8(zFhun*FctL6a%0VuM{@SL2x1kWELS%?T z3%o8*s!0M4KS==w5@GmggaA;@Gu6REoQ~+yAghBz_kLN8Gzxb=4Bq((a(_GvwXkNT zNy+nNnqjbrmPU#+7tN`Nm~X*DOemaD@TwZ3Xk7Rx#uBMK=Gp&i2l!$ixAKJ}v=ZeI ziGwAfXNVVR8Do_8tfN}$nq>(`{aZc_aYPt_4OGiub^pq0@%+zE=(j;vM*$!XP-*}g zguGV1KIQ$fWws!bcU)#D_)o2PvB)SG2VL4*jCy?%LnoKyZhNiHCzH!dSqQ^w)s3gJ zbbR;iv;Q%>n+L=STgKzII%#{6^BrFElg9^0{N6h@X{2`PqiNTo5h9Kv)ubUQ3_%iC z7%d7=<~vNPQjXRm9~^K;=-CUI(Tl;ykxL>B+Fb3N3n)o>;b|{M==mZ}$O-iqJH8&~aF-Q3H{3f^=eUU}g6uwws&DE!!>N%G%5 zc!qRBxHnNcBt>!o5L_PUuI{ks1&JaEmKK>F`(VavshUbjV~!5%Rn&ru1w2dP(EWPx zG!1iRi%Yb{wZUz3T5>9QX$xAZ_b_E}2+KKd7QB6-{i0CWHKiQ?9UMF}S*I{U+W45B z@5eHL2%Dn4U_X#LZoJYS%43lxsX&F9xEw_yjnE%MFP3T}4dw}jHQ<%oy_ufTWCWo* zbfyN5LM+%ZfmI%NPA8l$Y!=KE8ACM7rZKArq!$hv?@L8M5hoC5>Zwmwffim?u+?M3 zWZ1o$`&WP!;aJ_0YvK~NXOR@lLgO6;X390EOx*+4kR}bAO`Jb1 z1Cg*zSD5-#-NUi0p~eOt$7>z6kzXU9eU_SlvkSvbRs18rn8ja7m3A?7P^x6Qv^N(AR%!`4~I5pXlr&y z&alHgRkRnjWuZVcqjwPgzX4T>d(#-TK4r&0q$9d$(QvA$XFEr5!rL7; zyaB1d^5&}>N~_;F#Kvbqe|yPLtQLEt|X<8#PZ8R(dCAMef zSygMX4$R;@3b@)?^)kCEtae}Et@S2nrSv?q zCrln6GK@iZc>H(erYPgZB|Bd%#aOk{?(f|Lu;*CX4J0!Bt6d1lvAPpZR5n{xJz7Z zG^t9C(6VquQY83_GR=zIgaBQV($pNPoBD`$@zx&O!@r6M7qYqlaT@4dLiZ2m=m%MT z#18UE7ihZt=(?3KNyl7p)FWFo(cGqpaMz|*isN}~4nOKn8;hT_@=beMQkUFZRZV`s zFO9nE_=KX|@P|<&S%el0v0QX3#ICM%7CM+k-mToWPNI1oA0Z!1&rdAv)`K4(axM&r zfI@zd5wR=!w&$F!9FO1F8B}|P`9c@NF;4WA*}_N1N8CtKRj}dJ{a;o8Q)lU`O}}+^ z1-E{v5s^(QY;7aX6sBhET?rFHq$Hb9z3y`TVLrN4SxBgyu@1vr-*{df-qY zbdwF*Ko(5f#5>G3oh!#jQFOgh)-f_N^WCeJcei$N)xEog`nB?Io!edceluDY9fkSd zm3OxZ1*Qa-BT+hj53qAN|CUR?zPvP(Xvxs+1nj!fGThZ*xu}Ng$6KC0GGZvfZ5Zi0 z1(eV4v_J2g(}ne9fW(xDuQ8VgPFOihF+GYL&p3ba$t zAc8t)V^o;#l&iu^@k)R!P@)5G!1gwTtr$>rP1V^j0A&r^-Fv~F*uoFvLWN#P&>#4S z|0u;WeYJv0TvG?fwhXh^V3Dcm(V`3PEMyikrh1S?XFXRV59HTe`tDi9+ms?<` z@kjzpz{<>a(&PwHGc^m3WP0q9j)4nfYlzjk?ZTy#KURvZmgdm_dA3ATq%4fe8xim>WuF0mdKEl;Ko z6pr*HI(?(t3{#gY(_x%Nm11DDNkL5WK6-l5<@Y5THL>-NG+JQjPd6GjYp@m_4(jf_ zan^|b)2;qJO4e=2MwoZg>eB4;iJCT<5AfoaK91xA0H;Uov{l`#% z{e}WATbIw-QuN#ep7J@n2G4zK2m|1?6L9O1N1ubJy?xDL#K$oh(FM6OM7RucTuv{% z+>;oRSQYZ8wvANJtA@Zv^LHZQNF&C*rYFK2`2q}G9u6sS(O#akzI3Zf1wLn*RIXSL zynOtQL@)wgHf*f~#$xO{5~>td`VwuixC#Q7q?Fi%46)zszQEj!efSxWqXrilW4#95qGbZ_j}>W(%K*r?5Au; zk7D|WV6LpO%-xv@tKw&}Hsro>~Lx|?qA#)7>SW09CL8DymJeRK^NQ-K3xg%yQ5W&r&+!zxVm9Fd2K%tr^2S5nT zMaW9`M1o|q?YqorxxliEX5Mn*wB?JF>B{#z(-Wq3cCp8x9Ya%IKhAg}4?-k}t0F|y zAf3b~=CA~IdLZeS7;aHfEF-Czseyw?UVG*NWTbJ6?+HiZ?r4fMqD$)^r7{>pZzsUENJ}FAuZ+2z-s7rN|B6USs>AuIr;!jRi7>6H+-tge zEZNcqv9{7*?)N-)2FVTnuNu8qs zBx$txE0`8jl9`Z%25|k#-@X>7FhN_E2*eO6kZAE7oL}3rk7m^-^oOMTJag z&dnO2X>LYEg^uc659g_!q>{mbfYU%^=qkA+O1#Z!WHB>=V2hm)bSOiB56Ejr8En16`CE3kO$wcED{*dBXZU`25GqM@jb>yOGG?k8 zhdW%L#vQy<40XbR$~klua}TGL8=P$0-Agm2Lvibbfs-wLnh9 zNEEv&P%5{rJQ3T0$i-9VLfp3Wk(Voa2H;D<+&Mne4YX}#Lst!tk&`>N0;5Jy<=l*n zO(Z@ptn)nNXZAA8QX|zisi`~=7S8JxwAwlEZn!8@KKu-f zwDZWwfD8?daAo4ztCgjjufr^!cg3n;1D3mU`yZSM-d;txz?jor<;?-x)WJ4uA$K5m zTaMqa?6ljhVw+>9AQ5zsDbya-ZRB;uINpr22t$m$8YPUF>zIg$4U;E_Us}b+r~4Sr zFM7SYdeQ4u+z}VlzWD9N+C_CYZe8@Y-`}|K_3B3Ci^Qonxzk(}=;^0tm)aA*%^5#}UrO`o4+u>vTJoK+`h``ZWSuv}wg zZaHjrqK!;y2w_AQz;GJ%f&6xIf^BfT{oZMvRdF;$H#*$jd9Or`<&cE5JRCc@>-H-a zbLWFPAyN;r`!=T+QAxHD+Z3fRjRaEh7q7oT(C))*5`rT z!jzm4UC2uYr07DVu`CGrlc3ur5JtW82< zie;X=E&z|Ctt4z%zTrxO+QxrwG7b>K3|_jbwt2374V!p&VPQnLjNo*+2@`GEDudRg zvil;tTmv(!@X|v|QeV03{sa+=e(Sy(lIwnyY;SLHVuGfNa;j>fSKB&k`ulj4*_9}u zMaaB7QUzeX_<1=vHkcN{bf$J3Vp@K_`dX@9W(^$fY-8vked1fTHVH5sO~-$lk<-d( zVjr|2j3(rvJlo!Qw}I@fTh~#}b9IMV$pihn;qAdBY_I?elYmeSnnqFQGU~VlH^=j_it(E2)Ut)X{oTC7ZBVf$}!uXz?HH z3BaGSOe7z}%S)IhCQ)%@Y|Oswf3=Mwxe76J;pd9|6e=2ur5+V(Wj%pkVT>c)k-`(f z2}gyd94BlkQkXm~wKIi-g7lfftK@;Eu*l{K$odSOe^m3L1bdWhbd z%iB@4>~wEQ>Yt)he*42SE{AY?s@xC|cE7_4ve&IJAEVvL%GifQ#AY+lwFs0gO;&46 z+nw&sHc)<)&b?4F2(G-2o*{>67H)?y+lOhltQdMhTTXwPL|bt-VO|nPR}DXO@VPo@ zS%xuyDlaY5Dhuf0F+a?N+wV~3OIP-1w1DVDi?AD_Na~4?HkMW*@EAHE{DEsoi_dw}Ozqf25xE8IKcWz;G?sYacR{5|ex7O{+`i4I2$@)5W18%ycNO-d9WmZ>L zZiXj)htpRXDiKEzlgoIj*9U{4$Lr9`(iK73Xsnc*Xq#2+RxUHyNw~yXdRCh8^z39j zWuNvy7bYT^?c@y-zkUuBCn^p7IoIzYPq6AA>`1Hh2BOtX@Knn0MtM17XsnQD2PSJX zoZdeqg~C{;j&>&vv!C8Rkr4EPB|2NtXT=iM%)Wed4vVJO`HfA-U@$a@{y5FOPB}W~ zPh8lYm%^m6c%x%zTjn<Sl#^aNa z$20i6G!vfvqE5ZTp-uAO1PeYMiU@(`Shvbx!{u@Wf}32egKjc*+d{F`&Jy3#g)oqW zvhlL=bbu+HunBGvbJZE-f*=^Qwg|W+B-*~i5u*iRiJ7_+TkSsJ{v8su#h{zy#P;1{ zeD*EaPKYXr+bB80>sglqtSELyg7=>J+-1tv)6g56Dx0jQy9UVOuDoMPC!Gs1rx4uE z6?$_YLwf02R9)Z9yzBa%jZdOWWeRo8^y`?SY(|Xx*V>9&Zs$=#r5i6fNOO-ivo1GJKNuf;T#Cc zFKTC|E7eVMR?Mx?Qh)8C9|(y_Bs3b;EyalTmQi9X=1-Ke69UO_^SF%IA6<< zGs31s~*8gTBlMq4dNdW+6>Noo$KZ`(V2v+Qh)-uPoY zRzy|zweGAAE<6szoDUs3G3I*gK;*M%SXEH|m#_u6mS!U8 zg3CCGcd}>JYo&jSuF#-!7V6yQ9A9Fasjz>sD%HYlQYLb{$!rP~%3`+Z2U4fsV@{Zo z019~nG2C=&3FsjwRB9F|90DNgT#(!mo=0RjoebY_Bw(=X0dZs9=ppe`ac(45G@EXW zv@pTeb7|5V8dOkwQWKICN^#I6hNR?3UQ3enk_8?H6|e*G_>6r>u$bkbJ~0imCZ{Sa zCUdG>E0~#LgRMm%8w2j@Y{3g`qz@iEbn#uDA^O+SwRXd!p-3TXWJAQz*N^98eZJ$c z>bgP6?OyS-fmGwPCXO{xYe^hI?7Rq6Nb1nNV*Qw!IU$%3E7~{vLfdkv+JJ1HPCLSd zyU4I4%iQ$kC9%<|x*?5C7)kLHK8~dChU?J6#FyMze)13&?evgzj<%U?C7E=JB3UWD zb^XgIpI{s^jP*K?UcM-1UW*AVqQ6c%&tJYEn6|KyatjcD;Lk zp(WXrzH7xwTy?d>wG-%USVg?)h9WVm6QRMi#Utd77Xo^z?G+e_6L9frDkvaUn9F-p zfhOm5Y-QagTmz%WvnbriC=8mkkeI}vS?q;Dw}~jNh)dH<>oOd>0RuGDQ-Fn_YM8K= zMuE+`KpU&dmh`EKeAxz5G+p4hl-!CE73dNhx;mz{Trts?SW2)oGA&G|`!SAMb=;qr zuob1pV6M^R#T6$;AY4VMEp|7?0ziQmoCk7ixzB4fLMLgt3;{kUYk3dWkHk4yH~v4DF2 zZqn>^FCFV{b|PX11!4{iF@o(UHrNJt;%%Flpe;(?;e_Ut=8Emo&SK;S{N<)`XQB)U z?}#D%0&Sihi)~Y4jHPg~@h}U^6Z0cp7vOznAR+(pJLV7hS0{tDN*qBUpBATm!$}X0 z{*K3;mzGWA_HtjIx2G?ESbEv{dRfrqSK_AoHC^jaQCUGk5Mcf5g9ZoE(=E)T{BXjX za$E3t+Ym==%9%3%DZ=y&gZr^^L2sY#OiwK0Xfiq_jIOLDg2;up2LX&~Y{s)34!==y zrz*L20nA}la=k41xjtKeLo$Zxcwz(D?A!_$uXO8Aagl`sPFA|hJb;AqtRM+V4wpqntf97!RQV639J>ea{eECjA? zRu7AIO407}^-BPrFjGvE`rJ%z9Zgn$?`7U73VdWBh36|y!HpZU-mi@O;_&3f-Y{k+ zdQK8NJU-z>N9FsO@gvP^?puWJ`Fwl5)R+5^D_hK+JBu0;d;7=c({)KKTYsrNKBUSmr z)dTJEj`da)7B!%lnMEY&*T=9Q*FeOfscp~YQ&Sj3a56sr@$vWn(|P*n`;g>Fyjh8j z;G5PPcZ5W&WY^U)(^ww6wV>xvBVw_!x@Lhyu_jiy#BvHvBx#IEdAL93R2Ty%uhXtv z(sr6qdP&flY?~Dbrpil6V}57-euz%T-vN1Fq8oYG%6Zsn=uc%Nn4VsKR#^9!)j2%%_H{9mxH~T0kD4J<(Z=4JcfC|68U@9noIudQR!daMr%S4wSVE|0 zBhYPsY#@4Wh+$LVk}<{6=?^!QIAC?A)+A<$+0;3LZ*r%IaSJp3Vq_|UJvifWV!A*E zje{Q6*q|5H)okafz zstJ@ix<&&B3Os%v;|lVrUf*#<3dxrWp)fI#P*9V7S&G^jw4)#`a?A>iC(A{7Zf8Sr z$QzHyv3PB!btMXz0TGhQb0E$P%?06#;W7L#ztsPA5Uumws};@>+k=1}l~GgGuw=02 zlD+aQvdT5OvpQR1Zs!OCwsXlPvINq*N8k8A!_QY*>ZSU%)&a+5!=S)}<>$7wR&7ZF z6u0p-6)_AEn~LW;^B%NyqSg9#5kSu=G-pU@&nUYU8Ft}1*6SFSsDvPy1y{x;dBb(s zQPC<2w5se&Ra*sjyKi%AyK^FBn;el>K?nKJc}3&uTADT@ca#O7ASR!-a>g*%iB#rO z?mXi716ZEv#2=nE*KnKyW}#*GvWD-Z_fJh5Daz8cl~D;2vkPoi)7G-!is=d`|7RCv zQ6^7mBh`RLRhJ8y1lp!PA!!Cr&_#1u#!(h~fExQtkhoSLQ854xSpVjzr}!;?(nSv~ z(;h}|eK!Wr+6@Lf

    Ljn;f9+u{Ubx30j@G611}pI=kcFLsI}Vo2+D5_uQTl!nxe} z3J0$_a9z%w=<0xR$26K#?1`avO-9L%f8iFHB5r8f_B_*z>hN-7q1g)6dGczdY zyQM_*{f2*;n()2k%8hQo2j;DBl?-UP?}BJOS)zdE8lTynOv;QN5GcfcR|~XUq8a2I zmfAW^s&$Dik|VlCqzG|Py^$tb3*Aq&n7~xL`6O*Sv1tRDRV^17s}ie&k0dJgFP}@m`5$B zF9A@!9VA8|8fh%Jl8hR!W+lb27JVO1^dGmwQd70fDupOAoR@4JGJD%5C;eA@Nw||9 zCyR8bfvIV-MMSaXGyMfDNnY7y@yT#nlxw#n%9N`1tFb{0m6@c(nGLk?;*c1rnft?h5((-o%Y#*X8*Ds21Eq;j`TG*4wR9@q zchHo}_UHIS{&f2sdiq1{U(Qn{ug~SWbW!6CYl6_zq~QX&7eR_NT&_UG8_|tU2FM&j z7>?XY&KX3^nbN{Y!t7P{v_celZSm6mCs92340XHq(*hIjUrzXZFIP#Y!VPq8E7(O( z4Z!P~n>U_C(K=CTw#o5%9p93$TUh6_QBrRUIpy=+zBHXQN70<&WLL&Y5;Cf)Gx}?r z)uQ(%lOxR9HJMV4x06V?1=e<}{DV|I~*X6fC1hDB-f?L>4`gqjAsY*Z0>Q0fZg!p^GORK+~yL6GvH z4G9H=%}+P?9T1)-axw@eE=Q!<_DJwlXcAzi#R!d6FQ^IoPnRiPQV^@Qpif5GxW9(` zfW}N+WRSH8jq9BUb|pJkJe?lz;XXm29?QkS&FXX=&ET-peg62xg6lds8IFj~kU13Z z@)S+T?4Q?hA+6>30n1hhVh($2yecmk5DC zYtzN@p)a1!Fd8RM2t6g_0)FAE0HAzvJ)mpyUhH5-=5(-c7^BC%?oi-f9tDKD%Rd016~ zhpzp{HI$F;wUrfpTBADUdv^Q+gdOdXm}g;O+1N~XDceONPYC#PaK4^Cc}ze?u6Uua z4}o7Es|g4m?lOnv4=;C@HlPpwjH-S(+ugV%)3{72pT78RX=CH&ouz&;%BRy~J=2vmm!Xe(q~}MTr}Gbv4-emSt=m%t zzCQ5MQ5!m!P-2t zDjFTuW$ta}1-fjsXVUPQ#BodSQg(_hMQwq2{5*;-0*8rSl~&yPLBKX_FKrd-y&+`e zCoTz-IylGWqy;2@qwd@znt5=BCWa`b$3SvFTbLgQA^3iLxV_bh%#IjuYIMxlt7pXI zEDPjsVKqP+KmGrtA!^Q~QBJ?M!5_YV_LowM=I{LUU=C@uPjZ9U8hTKk*8D9`@bmAV z{`mQ|pC~cyMZ{kHt5)A1KrxqiV0H)#A~MusDRQp6xfCyf9bf3A0(^@A_DD8f%jNHE zCZ+YYxk#w@%`@OtCw0Ug*=`Y_EP$wf1i-}ekBygD;sLGnD9B(k9-rx+)RI*zxBAZc z-loo*hI(@Pgs<=>UM_?j5dsG3ileysJjgpi&|9)BEx>bj2KzCFCnogG^VOGW#sMLr zjV>rPVCppA7I@Tzx83cWP zAB=?i7~sm5b$q@@5V0MNub{bIjp=>$+NGT|2i`lPjCBPzQ{nv!J_CYk1M_zPVTAsp z*}X}KNUKSz2 zO75Q!E**hLe4iq}@1GqWV1pSCmvv{(?|UW_lPmmeax&N(-_Tv(Bc$#nPQQ^n{cKs~ z|6OLm>C)Np5}CV>r{kr;(xK$(C4@~fhYrUn8hJ^*Te99+!=|^z{)C7e&%yG-W3rx` zT(kV*<@b*te6#)Xe^6SM<8Ug;*QE+cF>!&VJ^lDJ%P~z(*HU<%$T8bjWb!DDx4^ly zY#ziQgRju4l8p@a&yU{Z?n|A3w6R@Snif|${5uOIJcc_4;xIA|GFwpcjPggviq_EW zz@D#P3rXuD5U8-|L>is_(Z?MMhzXI|l&+OR8e&_Wlb2GtP!uY!J-t?5K8r`F$irLL z2u`DGk1kyUr-B66Yio@fRairVNW@$#IX7l;ARTA-n$AO+#$U;~kpvMTbh4pL;}G?& zrnsAgT~_SCuJ*<#Z0Hfk5kEK16b-ywh&@!^7}<0OrvdL_QY`+?DI*Hg1y6x0GuDe_ z?j=pY&3CL#7{HZxmyq;$#X)Cv z!)}6<+PDYzbXJ)t3>cP|hddc%%hC}f@mJv~_sI1wQ6r^a^6Kyyqtz6ONA<@bgXM;J zCaR5fIz&KZi61GeIj9wD1YX&qYsbvXG3P7bZ~SNR#!_)~lu^z59bzua=MLlzr&t)T z{5qgjkkfYdxh&}y1ohWHUy>W+<{zgnLEa&CSGMkhAt4UEp5r0zj?ms|von4t^+jsG z1{e;Z_-)|?>M4;-i6oGN!Ds@xm=QzsqdjzRI+>DmT+|%Zq2i|ch##o4pF*|DHNmP> z;}sF=D35ugPLbNi#5Vpu2nSs(xlJp}vVGMQNPR0;w(Ht)#guK6;abaWwgap_8kA`d z6JRA02zOc8_6QK&9`k$W2MBt@?m&{rYMqEe1A4Cb_H?rlBORV)Gh2x2Z5uRE(yOTu3*N+bPpRPJ17-eZA^gLso@n^we7 zt+REPt*|`ZpX{DxBYHUpSOLoj&al?qW9Ez`tXFeNht~`&q9JXFOiQLP@%lLWS6teq zBogaY6awpFFnT-CwK$@`z_TnWgzVsfCf>mdWNWM#VVKPqRu;UiTcmARJyQv+CVQu) zW1v&%+%4Vd$ckQ_v-XAaqA;5xg_X;+jiodSvma8Jl=7D;tUQkuzZf16`6@r`2^*HU z1AzcxjYK)yl&VMvMK1&6n>VDQWMF*r##5AZ#y58`MM>j)POBw}*#b7FD0-1`5OG9b zl3|vhhIxkUf2Z)<)sQ7vyMa!LhiaICKBRdDMn29inrf;Cw$rf@S<9)KlZVI#u`!uBhxY}Q0#y>ZHL=~WWR3Mq^{sYiRuwH%f@;V?>WO~*!?9k-h=%dtUziPML; z6WYd;DsVSO1B+Eakk1#LX#oG2dZS5f>)`ogxE^3O_`U*dSNpt!kK? z>gffnYiZM025)&XDsGDxuG&g?UgLsNvfQkG8l#o-<53Km`4rRE6+OtJMnsD#a(GepkZQZvw8>sG3vL*!q0j#LrZOmHRUZZ* zK_V!^W^K}*2|fFxx*nzL2j&lS-w6^E+v@S}%T`e^nw~gckI_7pPLz8?{?jSxYmT0| z<%~y+nHA1?qk#IQ8RD6l>M?^9K+A{`lqgv&Y~5?d8}0ytD)uO45<^ z2Y6_AeswWU)}5o_srx(+u*10WasCc1;+yA>|F%jr(O@b`SWEzGo_NJ|*P9dviVTa) z_vG1+Cg9s44IfZtmS6zM-WT~=#H0*;2fLIIHF(#9AME9e=cY8qhg0joS0+PIz9B-& zYFFbSt?aVmSLimDnH31h;w6W7nli!76V^>o$VX9?NmCX`&U7oc>)77!ttOk2FqNHG&z@9nh-r{OO}8<{AuUQ#*p7arl46l^x3l zINuCT?3DT@2VJdqtTp=-ld#N~vvx5v`5lvR_Y^fF59zR4pkZ=qYAvz!#JoM~YH&rn z=La&f{trmzi_taqCCC}Nvf3_lJk;?VvzslWPTkmDe|y7H7|_?AF0)u_ zv0>8V=oV>RMm`!JvjD}!^D(_7k>w@Xu{O06Jr)IWlk|A^Gr zRo4y7vg1#fiM@k{#ftTSE3s{P) z;NTQNLL3mXcX5mI+)G>G_D)&%W-C~kvUjqp3?Qax3=k4@FQUy|7wG}jimX$3Sq$>>(oUw=sac zY?NE?Z|bsyL^{x+(?A7Wc79thuKSj&)8*+z0`*x-qacF&)9b-o4r5rp4$K(8>e@{| z4=olO^lII863uG%D9oC{s#}h99F{^}u;pS%BVrw`GpZ;lyIsvL(M;oSfBi~y#XW4tuji5M z@6ZI&49UnP9`LR>>m*^0BsY4`xhxqoA!1R~Ai{B98#J$`57H7X_P4l`A%-Rtgw7P0 zQ1$4ZSyZApm*SR-=e{B?z>gM%1*xl>SS3Qf%q5+~BAV*(q|+s<--74dYhq^FskZk7 z2ie)-jA9Mt5^{NXIinvUZJFxe;7Z$$>~~+Zk2=$baVuTG6E;Ah0IVN!Rv=K2>7caO zKvUBkna>@4(I|Ofdv#lrzFEv~vf26hZPrbi{S`y~Jv`}n_}=TDLr(|>Pc=7{)?+x9A6ZidbwW0C?awIQeP;e02y zIWF}+T!ox{ct}ko4mI=@J|Y8_QaXUPFT*vm>B4*F)#_@ zMCwj(92~h2v?rkFC(E6u*AC6Q$(Wm%t7OcnCntQo_OHs)a`YE9yg zU{=FL+BTF}BQ+|@+C{f*$wYfgwK!;{C})cl@J7k5(G_pYPB6C58)!26>k*`0iudF~ z(ejxD*O1ZE?hz~28om5x@J7Ol&L;R7K=ODX3F^|9)M2Y_h)S&Po=?b57S9!erAd0F ze`2|C!uH)dxw;z^^VA$aF7}{fOy3_3-Jh;IL8bQSP&7(pnT`diD0Rxn?&WunzEhwv zeK&6(oFT&DG`gZu`WqX;*B=6>cF(17ay#vA4T>15|%yudQ9x~8Lx399Dvl&~1P z@<$D@mJ2xL*cTVe2}y;(xpGe;KTgNEcL^6O*9;8CNKDq0%-mAtHb%Q-Xpb0Ycb{Du zHS#Y3q`}{{aOk&<-42Rs-lISS23R@+SRn5YO<{G(4UsQ(eD2cAu7eVHh4n)rCQnB@R5p zU7FX$wt20hkep%W3Rv-HOua?_T{QhrOc7I@NM9FKNk}<8g^R1pOfy88vivMt7(>|E zY8X4?;XtQu0z(mrr)rV6;B(W#U#U59sW*=i>z(M#Hd{BdnpmJjOr9D7WG5fLNUrEc zwWrpDDApCSmCu_72Q>2d8}F<4(sEMjMeTIiunAwk?)|vldG1G_25uC)ad@(N7Niv) zlZhA}I3r`(>A`#T!$o5xj0naBarMF_5DCP-031wI)a+0Y)?8gZd+}IOT&c9T$>wXDNR){FJ2F^H-;j_vcw8=19SCSMh-r82Fwzzi>7pnBlumz_*|ER z_KcY;kj?LzazRPcl2b-OQbZaeQVkB?05t|vNI=%<=a4TRSl;3n)G&?0X&Pk1p zk88bU=ST@E(4Wc7VRk(%duJT2qd2FSdLj>m=8)Sc_qYGVuD030I$FQSNiEEVagb|` z>u>t~Y8-aIvN=S;-O8-?v(w`P^r&P|L1BibH$sScV`bh7tFVCuQcU0 z{_=iCwNBX=TH41)ZVD?%DfBL$%>33u$LGI)KABDFXYe0`#L0O2xJvn#2Qr>Mw`Hu@ z9ET3=XCH)S@qq+KoeHhT5?53%OhnqFvuUGLxs*uJ{k2VBIa(FS{h7HcQ+U8sT8umw zKAex~*t@dub3dN&D4jHzhJKWV=FLYcoTeB& z%i|#wKRG(*s$ISsKh<^%YsLDmz1KZ?<$82`tmX+2Zt311Xd}$JU>Y$b~~CI$u2YTS~d- zH)iEx38#eK$OO5AVoe0cZ zyq4etXAexqH&R#ZqkPM7!m+)4P6N16$(O(#cn5;Du3}DmOPQ~z;DfKlD5I>FBu$$6 znx0_z7<2-Kb{E7&;B^D>!I4-Q$)Ie(m5iQrgH|eat0E z2nP!JWrxQOMqXwvk){d?jpy$@N=;;e1js)*sMM*3rYD-#|TfC(ANb9A} zmA6i~P+d56Qj=Mfvy5QobS?FoN*Pe!&*a10MmmWMgW1luXb}ey$dWRroQqFw#eLR4 zbF0;ozLS5tp7)JWPOibjU2g`R7u85e+6zWiT>#!90m=*<7&zVBI3*CWCKq zoG?bMEz~hsS{eleuG=-<<|mA#O$-6)Gs0$wcZP%I2@6xu2BMyQS`Ks)Zm%u|u32dY zwYt;>`%Qf}Bxqk~5~Cz&CY_H+gJjiA2UFUAzX5FG>*&1kMqD**qEG$qrQo*sCtjPNy#)4>F3 zgi;&`8T(;)=mp404^;i44oJ*$C>V_Wvt?eRcZs=Js)7Q-*@YqlVg)Wemn>4#CIYbI z&824=F4Y!~d7qiBei@f6LJKgEup0oN6awd^B+S)&)?SxWZvH?U=gUd9Qy0S&$y_^Rirp7>z*8*S-moFs5wPpgwTGFF9^)*M4{)KmkZ?3 zc3}wHq?SlFsuTpKZbRJ3$`U-h6>%qh7|b`Sw)Htq4g>fjW7TGru{1kar9=JQoC9{< zbN33S8J%B>OYe-}vQYm@!H+e-=m4m{$EU>QGgH_DI8imP8 zLYRGtDaK#+TVAeKeG|gyiMc4$1*t49Q7HvcO>;AJpu#b;VMsKuyeYYUgB%J$#A%;1 zzf+DYAk%hWRK*Av;X>-y3v&uq#E(Xv_5WG+22uFApr$?NX2sXk)~uCa791x<#4T4~ z(#AWqs7JsY-L6_}SQ2JRZ}^DK_*g2-adUNHpqP=kBW-o=IIiTcGSxThosFH8 z3oeb}>IzKd*@WL7P83?poQd@+`TwA^wq}P*T@1>iv`yK65qkH+^2wlS!ro+5H-{^( z@o?JpOt%9a3{G|O74`I}v$iUDMbDYouYP!G(FXC_8$@H2E25!wIQPzqAGYkv1&;Sd zcOY`<5Y@xP4 z8LjD#?hgfM!@EgZGqcCAPj&1V;RiKg#2IJZceZS|oldaZ=6NZ6Jk1Ia*~ z0YqvFG2H5&{+Os3%l(#sSj%_-)V;B`*c+p_AZGXY29&+DKRUI92~|5Rkl7Ul=du;` z*hJ6Ojj9Hx`6_{jRTS*XPh3=8jp3)>!ItttzIo#C`)i+rAB?5}e&^Qb%EMsPf5DfH zwNqqwR-ZKH8;Etqo#J}zp_9BU8OVGZu!EdnzrJ}k11g0=a1_;{#~6Nf-m;0*7BmIM z_T)*Z(!^^^70xsI$i2!8YFnysu+gf7R+`9dsd1-hMEGr>*D=|G;3!iFN6mdk$LgFj zUh&K`gM%xmZb+jTjF3ge7AsSsfMoXC;M|pZVvG2X3LGZ8G#7ahUPioz4DspSG2LdC zZPx1CMSn6qH;8zC@%DYNlH&duDa}Ny=16li;6F9cN)Wj8h%YnXguQ~0{?tUb3_lOv zqNWuzFtybj6Qj>fP5#f!Lkq&j!{xIoO+6Z9-#+ODp*0Vn)L|F zBht7siW(0{TTC+z>f6kWGq%Nc#~b3we=y>#VFYl0~hT9_m)h%)v!#Zr%IeY`w%XQro>|WxF7&t?XXb ztVqBSj-C)b>>7?XWJ$XL4@mL53cHWF)S|~s2$8MEu{Gl$ZRuMSJm+<;->>zx=5R>| zazTU5DU!&6)z;K4nMk!bf+bUFSCG1i9SV1``Q$RO(XN_|!GeGafrwWbcw4&G=dO~P zO1MVZA`DG+z;Y)+=i&FrL4ISk6erVSV(L@M9flZ2CD4O-3wRYDtSNN)WO$0jX%^!_ z`0LL@_#N!Br)I2kv)7+o$mm{Wc&Gr)Tjnlb zRr_5v+~y>4Vy0=(3|yqLY93+LbmOddtYOP4Q{?BKn+>zVghar$;rN=r(B7HBwj$&Y zLij83;*o$a%s4lLmx}PTs4XR2bldn%_D=j^h2s>e>RiBUDk5pjbHz+-VWdF5>G_F; z5@>~d^L))s?IrI?>!{v?$~AgY2EhsUWoXRok_u*pxgNIl*>zkpY@hpL-?P;n1?0dW zN-p*JH5n_i z5FWx51Dj-Juuu>`Y4z~=54=ftC(KbcN*@*+ZC2rkPPx*~7aaIQ-+8*7Xz_)~f=KbAjcrX??rsSEHBatj?nonB@nU_AjcU0W_+lTn!hr z6vxR-adnQT$byT^B*$vGrbdWtxuvELVZ0w(9bt`)V=%j^t#+r!|B$mE7xAXJ-O9` zaP@WJ%m3p>tnBG{emFgN?iYEJDS7AMcxUtNuhWpR+r3veuEiR1SCYW{~&h0Z%vA3%0*&lM#0(_=@SsB{_!$#|b5C;WCTksCzAeA_t!NQ{&jkTKI!b5z>_H zs>@vB6+N$2*21t&R0T!g`g74L>=D-t&OhBxgK}|KCC6T_uPWKz+2YoPf4a*Btbbw0 z#r$9iiJ31If4mcWSBm?NlfOSHiY!TQipv^ubZVlOxs+Y@)eSKo&}*O^5{Ii#f*Hab zZ-`q&a$974NW26PiDanfvOlE+B8RO0soyb3i6ykRv*S%WT|m+%9eFPrvCvf+*HUeT zBtIeFwjZAX0M-!2abtU?-1r~}YzA2=|8J5|>VPAV&gzF}#p!zrBUepOtyHfyZx z6RyUC_oO;Iu$mgpX6Kp)p(Ig04ROI0BLTJXDS89iPq$>R0qwT`D*eLoX|a^!4IOcz zEA@!vL)*U9ds&H;vdFIM*e+T+9K+JT^9w$@agtH%!j&Hh0NBcjV51ekZ8mZ=Gjkn7 z`{bkW+e=d)mW38mA{;XflS#xxfgco5Q|hPR8W9w4rd^JsR;l;v@fK~_gkLMAPvHrK zNaGExxPTlJ^9YA?_75&;IM~&Wt1|inRi$E|LIXLCh=PG~3;NtNSTw})F9GBvJ_@8f zJ0s_NLT0dxv0oW|Jj2~E=8~E2HQ(^q430?BnKq4btbSFN;g%tfj)&(8M_c~woaONX z8=AG{h_sF5i(laFz}i4FSRUS~*JLCSZ);vJ2WhDXiib zKRpTE2^*IvB9fsk@nX6nU1%S3hhi*Q6uN+5!T!tyg=W9_VwMaw=!$*wn_+$Z@|$P= zP3&6OoI|5!bBE&f&Yi#Q)_74)h8zcR7R0p8&Kj~n_QEXmFdj)7 z_CA1|c=o7$(#-p8_fwp|Grf%|NoT7ff`YYi>NnGbG_hm?-V;9nYu`K%C^OD|ag4*SdZMx*=o&oADFY@xEAn1xOIuN2Y|IXi4{Mv0-~zWv?* zCA>&I^e<$mv8KB>)XdMz-JeH`3*qAi7hR?WdQAS~o-9ksUdk!6x5H-$6bE_e<(*hs z3!&)O<9DDVUaRBr{oU{m93Ep%XB>^YE~924II*QxK=I{VND0e{Jzmp5m&MqN9>UrE z7S0He)*_P?YYWKpR5FZ5Y_UbDv+X^SD%I5gAa~R&-J?7lTq+lMpFj1=fqz3HBX%Zf zU@@*Dh#j?bX$=N2w);0$-L})KV24%Ns@Ro_vsmuE&fYl`=FI9_B1K6}TP)qsZlah> z8d^VJ6o6he;8@`Hg$0(+rFcRp8EBf&0`M}#WLdhcUlIR7&&s22nK_0WH?Kb^cec_& z(WgWXNdt|7DQ#+!5_Q>(rBr?2Svpd&b>@ig3_FROjD6UfYAVmpok8WcG_#yn2wG<7_nHfbMaZ_+Mw zs-9@w{KQrDNNQZkxa>^a6?uMl_4+Fe7~NM_ge0>yZGHIE%RqX{rW!jWSFC}n7S~oy0Em<+uhQTb6SutiHi5Oz8ReDFQZI$*BR5@$!>QA zKf~Ta(}DZ*6*4!;U&Opb#qVbvlceq@vsU4&8u!MFdkYH;S*^+JVo8s8W3ppqaa12j zXuGliQZ}yd^>&uF_QGhC66z~PpGPxrjE?V)?hn4~4)5LD8uUg>TZ4to?qF$a)EoN{ z$fAcRJ-D&4(BtvO^|7Fi9i0(HBrY%NhZeC)joMqxxEb{Z3*c`^xa`{M()ezeu;_0< z!&U0c0B=>2@%jE`d}E?cTdL{%EgbpS$CQ&D{cX&uEi%_`k@sU0~1=IJk=)wmX0dLFC=V#leCm z8=rM|cy+bEetUgm?biARBOEL&#PKC$_Xcsy&F&2r?TO~CY`wcsbnAyB9RL`QTGq?L zhg4mY(CyCySHk-%;0T2m_DgGMu$6jO53a&SnvKC?e_^R#&{bwVpO+WW8G-+Rw`-}Juieb;+_ z_d7UTW@o+U{EYl2cP0}5gRKt|#x}Wylh23xBrxtwpE_e}w?*QlU_}Jj^`PSZ_tb4h)<9GJ^t(TvUxb+^m)5GxlZ0Ep! zpAC=wb2<#4*534N`Vaq&=SB5G|IT(t)~~bB4|XtXpU*ccM=ro4|Md3H-gtX&z1>gF z7*GK_4;CIQbMElF-;bWVjr)CfuyFNi_ra^d>#bLV`tHSE^}7$>E#I#;ey=UOUby>} zZ3^FYU;TV#^7EClID5g*SEen`j$57`HlJ~0&7%x@(0mQ(w=K_xEzkPRXMlbfL9g`m zKh6U89@mfjg}v-=^!h6|`HzAteXEe)=5HIfs$%3l>fK)L-MQWCbCr%)7N9=A*Ly3p z_+);Iv_|!Q-z(=f>TersRWY@3af^T3`e0(}=Hs4e$(v6;_5Q297jc~Z)zFP~`o7Uy zTMgqE%AU4Y)!6<%|JAdtzxTeG^Ex6I2;Wld>$+I%Q^LaQg->j!g`5;53z$_;VgxH? zm)%jj;Qdkd(ZU<3wcWZ<0=kCyL zFQE?gc45`CeT!TECoqvXdD>1!-3QBJlRf(apX~kD0=vR)E($UO2o(_v?MVP+t;Y#i z>#g1lQwDk5?%i7Nt!k2Pg@>zJI(M98;`f`qRoIG=pZg!BY~8!J_7RDb6ypa7JG-Zx zkS9omjC!N-JMER!Xn%R{-fb#|{4-=wIywUs?e}{e*=0C;c{tT*v=P`|^i}T>#R}1? z9O$H@5GOzNPOB2y9(QUAj);q^XbnX5dv{pw>+6g$=KN>KtLs-+ zZ{Dn*^>58S+ptFzy_&1{HUN0XCILzga~Lpa!MpJPomc(U*KDtbR(qHm<=xuMyU;lA z)@R;%CwO)9^_F)fgJnrTJ%^+H5!%S7-ftC(3i>+4q}oH8UFc0wK137?y!Qv?5?lg-ss<1S=m^*I#>`QdzgoA_xrcPgZ`~v_twqT@M{AS26sj*zs_w(>x3Og zF*rY8K@Rf{eyNdZ%k6!=u&M9b_Ipne@Zn15-uE{JOsSaSD%*F3vmKoF^`6j+l{8x~Q78;VMEwr;)oUtp) zgy3s)`thS}kIvH97vtXITOa0)yTiQS4B2mX*!+gCm+{~3O?$hqhKull9pWcsQJQ{t zbno8!$DQTL^pQOnkMv}fCkUV46W@V#8HOI2ku4TvWp=Jlz4NN4ks!64ke+*QAu?kj z(=(2+eH*_|hrMU%`#*Z$#P7r7-rq%&#fB$(L4mpZHn)Q=Q?)alVIyG%5k$&$KQzYl z<$yJ}x#J6OkfCPjLs&j>3=88Y;rp%@{hk)0ix(^G>BGnYB#P|1C=&RS7HT1Ez|8I= zVT3YbTg?L6z2oAvdk^v@g3D7~XRs_+P*>H6EzW(2bAMNT*sJ=`5O_i#LK*d;S%C5F zU7`=FMjwh|R{&E6fAkibrH_7_R`QW@@S=w*M!WoMO*KxaSMrzGxkU8+&L zG}?#_i9f;H@N_iHKOX9u?HGN>WAgcp4^)DANeuK=B(T>DaawlMw^woI^Ghs!-UI2< zu?H)?RmOjlk@2}=gJNth+G<g9&Bj)uz*8g7F~^GQbi8vy3uLXerti^Hx62(;GM& zfyhPC{4ilZK`+FVOf&hRDli|rwv|iO_&qQ71_z1aBnUXkg(63&rNG;%BM}MJ7Dcoe z-LK^qe^!Vt{veV$Sz+5jMTv42VDY8|TRe`yY$|@{>C4~ZyZZCu_i0B=^V7bZ z1v3?yzoePElE27CVmsrz+4<4VC^J?pzq6$sO4gT}U~g{p{<5i>iwl+!(wcW*R4hS9 zC0+p5J{l?UFyRb2z#n%?~q7TMCUe*PzvgRM$9rW`Z)f$`*DwrvqrHiB5c%LLpNZXJhUsxO=gI(OK&@iTdOOJ{ae=~@v<__!+}uJD zldT03C+PShKR*ilis|m93UPU&-1z?jOzcJshu1;SNxn~5DqiH=3im64cx57=-b(~Z_XxA{IZGw-u0n6pf96_*>~sD=lpPiXXTLxf2$%J%7>=)D#pPaddGzc#awx^zgH??$*+{IWS!%!A)xhkxV%LUahQ~HDy1&$4*!&`T zQA3bT0Xni_^Cc=^VQ4_*&0dwUtzooZkm5Rq$At=v6J)E9505hBYyQ5hrfdB`sJ5`|_*Pt)zh+FQgCm1>cT1OLZnx7V1`ND?* z^TglXVWF>|Oiqe2+29HcVrX6PIEmvU6(o4HEU0pJ$0{y; z=IawQhjRYr%N~~#K0kgWKqq`(CYq0n z@3w~SioUG>Iky_z)JCQVML%D`NiAX-ZSCA0LLnpe=Xko0G?O79#l;&pM;MiK$!_t(bP>@_2V+)fW&!@AMZlTm#9mF(*nSmcf%1?I| zWpyZkvWD;OFgbCaXJc1C^`3wK^v4!l zX4_Xa$hlqN*zx!jjvsKg0?raPiW5j6#ZZ>+1Otsit{(EPD9LJ{^;^n5`(ZTRIp5p- zqWi_*+G0%7fiu1Oy%iSJ&2ErlV^Ux1j@UgNs3+bm-bC)l+=(%> zn7&|vMdO_;Myive*@cdtf`y79ORcdX-g=Ep-;V>n&9DA?{I$U^c~h<6o!4?H_fbo~ z=ke*eZ~KL)giyS`I?CyE^e*&_$NH; zuW0b{QrHMdUB&2crJt+(+(^IH82?hLX=uwe4R5)o5SMG-K`;XpP*z;5{egA9J)c(NRG< zmMmde;hn#3eIR?Z$IWxl_4x4N{^0Z>cBF3XEMZi!+x_A@cYCGhYeygqIy+=+ z8oUSPOv7+-#0Oj7uR7Se^((f@-u^3nFe~9p_g9I)PBkvH@PN6p>RY2ver@UQ{o#Uh zff)e=8HYb&D3a)6M%JAmL;zfDEpRuJG9sf33n~a3qkn1K+uh%`IHccuyLG!ybinFu zA`S2YoNW;%alZBH&aLrUZ)0PXz@1y`d|ltrKkEwQSzG1nsvfScuH3|!q@sO2#K}O^ zg-YIDySefjo3!aNWf+X}$blgwhtqX`vsjY515lwDB5;33oYXyw z8};@=CcB>o+y`{D_vHBW`Qe#F2kR;z$~1~w_?n8HR}rA11gwqHRQx_7U3>UKHyu6o zD~XOz88=uSFrSire!haFVHaG!V`wHg2AQsCvV`|}LECtfbktWMvQb`5lW)Qil)IbzE%y6rV zRSNL29r)#FYi)73w2o94-c_C0-RiF{DhPh}uAHtl$XDL&-NgiNcX9PKkvFUk5pdTb z?vnIBjBA%oW?}KBFV7}8gn>o_cX{Gj4J%rR5}fx)SA0JoPq#yK$eys;Rw?Yl(s2u$ zL9$T~qaL+0pKQJi`_JqJ16vl-z7B40vF*qQx!CfymKl?gwG_K$8J0nmq zlNf=NQ3JxxVNn!F+Qu4s112#IhN!R6ENetO#DFnkh~AG73Ga)z1b7Iq`C|ZE86QrP zFa1RuwVRFQ)ebI0j6jV}UF;=}Fid&OvR1wucWMb~yjS~rMwk~wHEK+=s(Pm=JS7FfBYaW5ZeSH=T-cglI*;eMAB zT#2rrGF@1Ix;fa|!AOuik#4=XYcHp~9NNp^+$~?8@p5D@n@V;l6*69Ix~uaO!<@%Z zu3jCxqc~{bwvNyp!7r#=BzDP=osr5w537-Dpr-n7Io9>(`l?3F;u3-RtEg)9LQK?v~HPlSZ~_iwVkMvI(p zEQWAzFR1@QMLT={06A^aU+gS~sT@zgNeuA_c@cT$*44EIY`JB?)Fz$u_Xr^LMY5EB z`_6rMZeVQ=C;6;3ycZGN`5($bgVi|f zjtete7yx$Q%1Ji4`^R#5Ka5kHK zU{LgJ!eKObY2xi@d%2N1KQiS8Z_(r^IA&@1-mYP`dbZWSfr%cnA>9NS>$<6Lh`%AQ z$fWuETf1K}D|Ov;e!B4jtgzHDh+@L%a?Ur%4w=XFzTiYAa{7MLGJ-@KCys=CuY143 zB{Or`gR5Z2nQVQq)k1iOM2-S%413zd^0O{)nNR!FCuu^1Zb`L@J?v<|Vn&^T!Ws&; zQqlOEt=~D6!RY}Qq6JPJ=mBR7y5pXXyCBvzq_KmdON(!cA8v;6<46Zow9ar6v?{`R zgV{}nak3qLu)S{+ZSnXWa?KE)(ByY%H!7B7y_}2l4|z9|gW}+iEn=bw%*GL|T;nDh zN_K^BzcE+f!iJAj?q9q_#pGCCTb%NiT}icxvoB#Tt=*OPMEi-1_&WsJqo?8`#%LT| zP7SulU1o>m8pCm*6h8-?%O>x_!8wK*Ok|%V_S_v*P261wg5r*5+6BawO)Wz#a6BU( zjRw&?Lwm&=>&oI{c+s3DpU;9>4;R-syT6Ldf~(~Q)N`|L-`im)RmXxnj|rcmJ=$Fh zlBEf!{kmfxKgLdaS7PB$m+y;A2z5hIgjL(0s@+EM3`+>dP|`exwsRGyLtd@-*TRAS z87-j33w#0*Mu&QUJ)htU@~sKJI9L=3-VQy+)7Vz};O?6X$bY`pfiRXtNQf}SEP}bH zaIsV3&_wjm0SAd76K6+$Vr$t051b%M?yJRxi#up-D1Lz09GRa8t(o$hJD;K+W7Y=w zxs4ERZtgEb*D^So!pz}f#h7ecLbz>ZGU95GZC#~pSDmvSwoiAaC)^Z%N*I8-u3g=^ zH4A7wv9fi!+b!jOQv-Nh*i^7Oo`qU4V0Yw?zW?gQbNtf9RQI(ZC>(Hi!pVqkRWkUH zy;~bI&7Dk!t<9B#xieF1FqFYzTkC(Dv_D+2q|OQzKVSLOqE_rn2%CfnGe(<3N)$9u z&~aeHfj`e^9+MPRQk|8|A#FO7yMZ>pVcb>Rd2oMd>`seX`?wTv?9I&t;uEdiQQEC|=rjC~4)7kBlfC16ILUhHFWzyK8 z8+*Znu}5#lhymb0kJvnXvt~b~k92hJbu^+5tC*6YH|4e8$io10`HlZh`EN>_^xk*& zBG--iXo#m0;>$D=hWpmX3VLcO&DM_(JAx?Zu!~QN5sp57#C;XMtSY#RC#&o0{w02H zXcBm_aVwPUZ-g(a@ylBJawoi6Ga%CA_Zpom`yt43yjw>-J&8#ybGki$Kurk3##f%Z zgG`#Hs2**tLDhR-ZftUh{utaJ-9Ns2%--&}OQq@Zt^3Dc?sH64-jIEau6&x8e}4Ou z3kE3!PeLm#lVNdiTv}xE#l#~yTJTY#&HGV4`SpVKHP&C#SVa;=%|yj>X{AQ(n+qB` zxZoXOWJaQKl7*DR_L+}GX6NPPf(CxO;N9s3@22zLE%ZKMt5u3TPI0j-#sgiO<6d~K z2(xtLYjd|}2V_vNuXo=lQ_br26aM?H=Z9i8yQ@ow3)i~`yt@8>bN8<8aU4g!=ll5- zEzWrikOsi3G%_Vx!wY2bjCffBlE+JF$Oh0PAp&T+8{lOq?PuTLKQ5VB)zu(qOWHY$ z#}kG8 ztfW^MTf3%X|44(1SsK+pc#~-6dH!14cQ9VR>^!zG=aS8OaVkhQ_BjVk<1}Eh&-k7L zc3%83+BBQkG9A=*mQDp8s_)oN#qckDTRiGpGB5skt)!51aK>KWK?AeuUPoEo3kbv9 z)c!dOBb7`59Tm9#zMK`fPCc|d3w-_ZT6++fSDiBf)^s7MpICy9lCwRQ7$gV(Wf|jT zJw>OHuxn{WI{^QmmBSXiMn7H0B9@~pXXALDp`HDdbF_h!BL)_S_9^pgUGp z0hQ{dzNpjd17lnupfmWQQwehDOC22T)*mrp;FR{@*|ws?*geiw87z#{KPJ}61!M-) zsjv${_I^0`NwUruJ(4pEo)BQaMz5cco^5}74nXHsj2Pus;{!HOgU+Ia_RKv%_Ao26 z$_c8iwtaY;Ye`AkUwD2m;P1D;rLvyP`mjojg_yJV--%$L@s(q@#}u-S9EgdPj7=C^ z6jQ8|LnM~;+i8^$l~x|R>fj;XxhE-{3GM9jz4?QC?=>+cJlnfQ+Ol??@;qAiq`^MU zAx^!Hgqj}NE_`UAHD9d!5Tb+XDsH>dxOw3Yks2E5dFoi9=Qr?f`Qj?6A_>x>*iyDJ z(>}5ANJ|b*PO)SDoCQRoQGXE*$S%%(8~)O|>2gQpcK5LK)eEmSS!s1x{yXhgB*F9X zWqmgM<$23eUplX^o_p5IVgn^~SlURm_~9Hn)(&BNxRx!{(qWC@)GKA0F0><4D$+}aUNyvS z9;C&=3Wxeyf1&ZB-f7GtTWBQYvhp^!QHvy__4`9q(iiQEi`o`=fCPwk{Fbfap|_#t zOOSDL{t_UIfM|f+by5o;vxR`f;5)Gj2iQVVm|xTv927qhg2Tk+^}XC zRHG!{uKcQ`R!qpTvx9#8#-wrRNJ?=qDVLf{6Pm=d^Y5E{mxZ0#wzp^dlY_m>PfV=5 zc3~KgI#R9G61a#Q+5~XwbPB$;Hbld5gh&`wv z@kKiUV`>8qYBKhKdw9RA*g4@d3rfAP^VVp6iWS(=<}Y8wl76v|YO9FOi^u!EDTd9H zb2q%|B@>hCLvq!hu3W!z_3GN6uJO;mQFHhDm23R<+4U64f{PQ^~ z4FCKI4Tg80va|BnRUFOyb&W7A|9pm4LzTd$_GJxTk7ds9+&KOtN99!(7AhB+sGLC| z6iBS8XNg@|x0qo<(OrR0bmn6E>cJ8FxKqUR)uZW~C#kQd5l|jTe^!3Q-jf?AM1$>{ zqv_F|fyYZJV=vP=c5Ym~^4Zltad_SNA@VwYy58hwymWK22W*@0aNsR0`Jlid(WKP8 zFeED24s!k5_0Y}~hGrFB*oqJ9zXjva!8i^C9 z{x?@Y{LQP=P-IY=m!6fMfA{K1uInk2{X0r#&<#9S=jooG4mKYj|2TkSo_YaN>YS?> zjCE00rF_(R)PB*TarVLK)ow(#?YDFPwgYn0CKJKf)A1va?@WRWeDX2n0wf)a-LnPS2%&-1uLhBj-5Xwc5@YsJP>A6wn|Meq z&>1G$?9v8{X}Ar0fK9TqbRwL+E_lv(r@>co$md^3sE>$C+T1U5yw2`QWKs`NAQXlS=a$2&`YW9W zOCcB@EWVYqk`Wlp#~7^Dgo-uXi5GR!r?{ehKHqSMCRXViUi#^c>qWnRTE@XHs|qd;us zJfN!p{QNVQ-q2;#n=vYLiu(EI-jY!9rGWr~Qe&&*!@nE;(I5WM`zS~-USmp}{ysJ9 zU%oi^BbV2khkSHSHOTh4CV=qK#h-xikKV-vy>SKN=*5`Z&~?4r&V)OqzsNn0Jt|I zX_TcnKG9w8Bs(ALq7=X1-TR5YuI*jBbSbZK%{L(P+Lhf)mnWk?_%F|zNvY8SoFKNj zgmPoyBG46^)J35ELU*B3szcZ7a)J10#ecn_a_$=r&5B4ZVex+#1~e}so9y8$FDnZG z)?WErRZP$cqxY_Yadx>oJ@qvE}Aa;A^ zB*d{@Zoa0=>-YAjK?YndzS0hM76dH=_xFPIOslvINOa2I3r-Ey$EV-n>dW`b$j%N9 z^Rg|{DZJb+;vz2_jkQfa$VS%qG&WMv{EcguHm)qpDetgv$m;iDqIQCk48JE6wX*b# zOmrr2e|_Q{hV)FUxD2Pi2@?&&`A;!XM&nQ6qjuCKeAG7iARk%d)A*>_j@Govp3YS5 z*uM``bw*r90Kd`B)Q){drfNS~Dg*w%W~ws*`9F!N@}hWcR46vCi=whpwPJk-<8Bm| z;|N`S_a#R-M#LCL`*ZH1#{xP!R&@*R(@qt+(Ye~)E;^Zy{_uyUg~m+XHd};`X|dra zw$tq&38-znMA%-tFBg>C!A3n+Huv(30#kdnqt%rJV5Ort#&!0B)b;CxH}eV>0qwW= zz>Kn^Q|8lca;DkjC*m!o(d>=xMYcqDezBuxa|Z%%{w=VaU)aMtOH zD$E@OLSQ%dbkM%g3zxCm9qyydc{+La40poFN;@{BV(Z#%^TdtufTXi(;WI7YH$aFg z8#}OLKSJ5P{X+mB9E6fTAI&-Md9df^o0)EA)yq<%sHIKIqRC}kV=0rMu!|LC(vfNG zL9AbXc{A~@D7`w_$KYzd^Z8~WCrgIha!1h|?|H{;U7V~_>o27hvyi!M7lt>6jktI$ zz+Q3h_`8vgv-;8yGGCvt4!g%A(zwmjp|jor9=#2u)219aE?x};MXWTZ#b@#HgPot~ zR;~$h=N{(uz=94!?HOLs?)!ogE_}aU`~s`p{W~Jb?owE4y!}$mD_l2CXVjGL_9q&V ztAo%;#ALLX%*d}(X|=Dg8v7ya&{!?sDk_w3wz zjb$$=)8A#JRwZ3BQrqNgBXx#?F8&$>EuNmhH)8aLAb4!VWY33a=y=-i@xQr*-uw{i z>Iku)lBd(qSH4gll3~E(I$G)Z>{fp12#sp67adBJE(iW5^N@Zke)>ZNk*~GoC{(P@Y^X zl7I#G_!x?;WWgKg5T>*Lg3hC9dZ^?bZ90`;SpCE(pj|+@(-t1axjYIzdjhRVM8w~M zG8Y}TBvm?WA1>*zFPB2D8+`cuT{o3B^GHjtZBS_QpJt1vy%HQq$OY2*v+`;fSPNA{>mkqM&m(9Z`g_!zZTKOu* zYUsO=aG#BCo*(^XY%=`h6$Nb$M$Xm3lDOD3lLkvxQ${XmZvS3i@2_Dnvg@Z-;O}}5 z2}^U#DxA_80QS3*g;{qmaY#yG{ho+vu-G6*E&S)>XW8xXpPXg4 zvyYx7lzi*_XiL?*S=htT&O2MiW)*Xt=CrBxy2fjxTC$5oX5`Iiox_a!47nB zLpiE}G)18|iSo`Z|-vz$HDV3}UUX%vi9zlNnfNAG8rbSU5k6gY>U&Km& znOjFDX!vtN@{IzmuO-}K(vPhdPh@iq*U7K{Nx(u8l6KzejJe-AKe|hN%eFH%8|*65 z-g4q_D+=EgSvhDxuo0WOA)^&H(GmYl`S^gyp_q$W1J@IH*BH!rTCIHV2SX7Tu9^S;#qq1c)7d?A|k}} zkp9d*jFs-BSnsdTj~;PN$ZT(MwOS$#Pl>GtIkct$NnI2i`S&86uH?9!du&U&rZ0Z% zZ1bXoTxKa&{dM)JF1~5kyQ3?y@-n3Yg2WBU%**p}&?D2xaew+t~- zYHg<_UA46)nB8&O3#MQAj$KuIHqY4!1RWG@ZK{#A%=S^n11hex!0Ty4#m@Q5+URlm zb9}Ih^E38tevq=`1WFKZF!k+|$^2{FBj!bV(xOIauq9>(lryiAgfxczwGrpA$~0Xs z>oyxH7naT|S!D1zjnd_Ct^>8>MO2S&klx*}=^x1dZt4H2D<*1_)}Mr+@K$`-NFf;wK) zg_k;C%(|@_khVSrkfi<6X|qKycG|u?wbMW$tPyBV&*SJe%Qsrx-@AG~+8DG2OATQ) z;6hIFt#o~w%wb`eo2=&TI70aG{V%wpoeX1fE?&6cU0xXB=2CeyBc9+h*|}rWOGf4~ z#2~?vJvn}La-3h?o*t1xGr_LyI7{(^$Hw^sV;zA)j_U=x_&_q_Gj|D zyplnUTf$9bmsBCOFI==yvBSM^eAnODP*|lav8eQ>$zJ*;VW9VcMG>^o+x5<);_aVb zUodf1#Dd3{njQj^>I^MJG3Q^eyY%+=0ZF3K^8!l8lWGcOSw>+RajFV^tdq_8qJfIe z!{tO~XGK4d_shxTm2-NyEm#?<8nFRr`e*`2&yQc^PP%|yqw2m7d^XuT;nvHVF%_WU z^H@tcUsugCqRPCGI;P%aJ3H#vdLFb}u&mLgr9TxmGO>7bRL()4%Vyr`D#ZXf8L`*m zYot*D$D~Tpx0Xb717c4GT1m+-`=<0$G4NQeNdphhx$731RFPB(>5Dkmn4Pv7UYtr|bVa*Sg!kP`bu;$Y~togiIfM(@F8LM;78KI(d*`XuO3FK*q zotvXrD`M1D*JW~K#tx3L46$@OtC+>S+8paTgGfNMZMczP#)5spuRtOj)oNMm5uWNd zqwlx3drz^vJNm&NVFflSb1u|0w3Y$=i_{#>+FnWY4KOt`2{dZN(~-w+J36M&7P`v^ z(3Xq2v4FOG(^8Fg3^S&c=jXR3=1F_f`Gzpj$eQv+T;H}ZqCIbi^W;wu4q<9J7S;mk zhdS29_V6?7+piv#JJbKn%hTw0Rq|pg*4|uMtlR}F7b54%Zo;XMa1+f?b#VWt;I`TS z*lKNCo!1Vb=kiJLYn^&-boIN^t0^IlM+I9Xli&9bT0at0$44q(ay}LWt zc~@njFJj96-Gbc$uKEKB>lzB4@KQ)xtQV+4wTSUL+J#!^r{iK=SOi^*RvZnh6>DW6 zx6zW?NLAjE2UNRatN4#R@xkK&$1i5nH!?r0*~!tmkAdM%;RLmn)KW)MR7+=Goo7!c6h)@nrXfGC7)#HuNl~ zAI-W5u*sC^w>|0X*2;V`d5NI_3W~B>nMzQb6O2JE6{v&ybn^#h)i^>mJ-3$LEPk%@ z>pjL%!=&j#hJqJ3$ z!Ya{I>;bYV1qH%Cl!sD_!KT1dShnmT%h1fG)V1{7jRa;|1}w&nuC zCfOj;1elba7Oc5hOawiRLrMVo_mh2%HXFU0o{VPu^OvJN5~>tHagYrKu6AnlDbUg< z{~vvJ>DepCpL831Lzd{J-(PV?5ucyN_f5dN0xdeObUc2^F6xRA4y>cm<`r!1EHHLB1snBnXWN3Kb{8429#-wR^WN^2|!!WC~)U$3KsoC}?w{TstVhJC|E;*=DhE z>u=keTTdQtK6XUf3$t@`DdZXqih(C(jX3G7kOdRh>2eq#rK^rcTZ+B#>)it z?zqA{pRxIlUK}64x_TMZ-dx?7&YoY~ess}jaNTEr@n0$Qez4vsSnCOubtCRN zp1ljbip_5zv$eCHO;5FS3Mx?c+N7ZM(p__@o&G$FXlTO?wBH}!*V6b;-PfT;`Ze?> zl5*&p!Hi5RpO#g`OXb6DXd9=Khnc!tfiFr^@!KQD8WqzPxzXkN$^oqhdR=qkD4l1_ z&mZS3eU7e1{DR|;D@n<8NM(e1-`)J2d1L0l?$0D@oAhG|fL#PK0vrk*WBebj-+6G4 zfA=OEcmxa`^uh7>738vWmi4%U$%OLhY2kY5tjHcV5hrRWsXXC!qzm|AHZj`oa{3@; zl%nLwhFDSK+RAI}Z8#WgK^16>R7u|{x*X>4P=7<4!!M&%KZ~!#=dIES`!(s{sm0hA zn)(F~PVE}W>}@FHL$M_D?yr&WTJ(`ff<1RMLBE;3JXbcqbEG|h%X0}*a^GC+cXfB; zIoY!(I~)7c53wJUeDG|`Ho|pX*|)w~ADEz9uTY=5_tj0L>9XBGte+rOR&mw-j!bZ$ zUXu*M!rt4wbNA+x%}0-(+~3^(>w`!C5jZsx;=b+LM-E5mzzJEE3#eTRMe&gQb7 zuV&BIzy|IbBuv!|vLdrDqA*ASn@u=#fwxz&8P}do495P1>R}HR=rH9N`Fn(@GpZI% zE9PNxjw~8Wc_L9~gt!<@O(ZIGn_|%V^=(ZCHK8LMy)V!nalY_J?L?!X zf$l$hH~QaO5WLZ93#FKtlk>6!j+y~m#?q^HjSuH8v%h=vE#U>T`&`aSWoRJfn<4lg zH{WNrfR?lQG6m46?XDDf^uZ*grLJ5bbqr%$M7=Y>NZAm4@vxXnp0YAFq{0H zD9rKAqy0nMb-z}vZWFDti`-`9V;OM#{TwSyru=w^vmcNcu|X-m%8|eoi9(GFKQIYO;R(Wzjj4 zG=@DcwqnCBm$?m6HbfDfA};XgH#kxzv*J1cWfmTeh%z`naT5enDm`^U8OHTHmS!t| zMUyTrM#aeJ**Vyd)|tgT7yD4;9n`$F$BOInY|=4z%0`JBRJlvMjlJ{RrPkr^kjAKAaYeHgJ-n|<1;hNbbYp2 z?_B@mdO`Xp93L2b50B?wmlpGKC@Tyzm#>NOiD3cQc>eBa7alm8 zo}fESmF0QjiY9w7QnL6XD!4N1j^(A=nP^H#Jmp%Hh$JZasBN*O!u341(atHKF{{SU zm~JST3?novUkE9kFbH^L;mjl|9@Mt;@LxY1b4+8VuVsDUXT|fl<&g}3Rh>N@(&mHU z?49H3c$FPpCaVt7-F`8i-Im_P${)O2wX+kWn~J1YjoFK|5wtxx@YJR*H1g|xeel|u zNEf3O-O;GQm$+4Dorj#ES37X>Wz2e5yH|(*KR>tTlGXnUjS?TTvjk9wo$xZlShOOK z8GJt;aS${ZfKgWeJPtS=yFc7!_4E2Uk$K4}r z+x0){zojre|G5bYS&;sIvf7YHV!;~Z%oWmE&9BQGnkKHI5K_%X3o%vP5r%XKT%IV`Ebu$AbD7fM*`)mX z&U}xl5<&40j+HnF;)m*;+7(f4$h^{K1D7^Msb38~eNL%UvEMfD7CE^@Xrh^cFQ1-4 ziiU*5vpmh9*0~F2GxFk-LPtYfWU%H7fbA#=sV2-) zJ2HF6zn@*hPt=jc?r}_}^wgP3_GZFUybcr7>KZ_I%~FAVT^3(;0rx5<`4@R4YAvzZ z7yEmAlcU}ce^vU6dd_BAJ#VQE5#o@854N^wu*IV4sE|~csoD(8AO#m}ZO_bXweXOI zpA=0dTC_3x-^8JUlWc}%f!@5BV*9uwdIiIP^?ISz(w2#T>^SY>_G4@tv=Waw;Re_Yoi&l-1% zU;OXV&K8XC0%L01tQ9(>%q~lRcf`*Tbg74cjm(3ZL%V_KAZc(UbEHWivKeBdt`=Hv zB((|Tsv+s@NOZKYmDD(UOPR)7eAV>%ME6CN+YnIK_Nyr|D&4agtp;N*jz}1|^O4Da zGuLec@GNC>guOAp^r2$2cwl0!{UDd0D9331hRdu5(N8uor!je{Pa}!CfljuqXSV zluOS|f%|Zmv(vD-1{%eX3)HKVk)4_{*`a)~XV&ifV%~=NC)K>dp#|;%(*WpKJi;&_ zJ-Q?#vY=^(a$1`|dE5VOw4=<{W7~bM>@C;Tt?rWUDGGO$L7K)zqYN3FSGX)E!27vX zgq~O!HA0#1{R$ik;P9}eev9d}j%d_zJAB-v!6L`jxKk`aR_DsZ!xz~Kr7|Kz?VLS$aaIxM)D#)*+cnBbi`$&l5K z((x^8rrP}RX$;MT(X`BpvPv6Ns*jmCO1DN*7e9LOWLqSRPwG6Jh$10EM;OfgoeuYA zRw7YCC)R&|If4#F)M^zrhJq~kP1c>#)i+d~PU4&n+jx@k=mI{C$<;5Es9GRqld+g$ z6bN(^?-0-Tev`UkQnvQPwrGUWMQ0&WQ@`gg_tF1Enx?j!t}a|^h5=GczNl%=lW003 zzu3!TLH&fet&>!toKd^L_*Zy-tkMU$DOB-P*Q3=`1&{F|>;qkvvtS{#;-jK6SpTjz zG$1bM4)Jv(s)R2Q8kw9n+$ma8%F6|%c%j$AdR_PsVG@mJ2Gi2uJJ8WX>3c+P9|3)2 zpaiVG5L$%ryh3+GZ}~fo4gLby_l9WCKPxfbW;>XAVA`AUF$OZnc?!AFYw)QzgimFX zp%`%~Ga?3(w$SR9ImpDi2b1T@_H)}jR+(O+C>0r^aX+2x`gkq5^T}!sKu-1;D-a_x zXVN$CI`UM9kBUafoTD~UnQQdhVBH7W;6r()Y_>_%f#c>`D|>fN_9=Nd7M|fz;_jg! zVyhCoRZ{6I3+JY3mME%NXmAw|9efAryV=1*5)k&^atMs)w^dT7tVBL&%8!6n>?WCl z@LEO!EbkUzyvrCRF=_jSuhsl9J<5XdhGm>S3XH^f`^$OT735t&*js=Loc>EaALvRs zNlNaihZZ8cd~Hh7^p;-NTzWGZ8F7Wc@H^=x3_5Ur6!RsFI@uIVvC z6Bj(&1>%#eUr#GFe>~oL;Yu5X_oc%i(-~SOzR(klXK2l~@!f-cDNHJyNh zzo&qS2oIE8-ncA%hSM~!*d_U(x*FJ^%j4CR^6ScZbFDHBt;P7zz>(LAjYBhdGsYgx z*e$N=U32D{%(hbk;ox%9Qczjo`nDRH-GWygAU?f>O2ylklXw65VkQvz?Q7JG$)5he zr#n4(J%NnCE1>vNf+31zh>gc;ZYfO9>>B|_PQj5Svnz2HMQ1$P1=Y%ou9Kjj**>;m z84OTLekl)qrwGE~Z~Wx;fi#BpPs%-9`Ql%cT9EYk4Jlg{w~;qckm?~KHWe(7{wWRZ z)toHyySsC%a%Hxh*jO7qaqWT;#o?vn8Zd>N=}3gE23kJp0R9!*KUzsSeYh8XSTWof z+(x31koe8FTS0r)hgk5V9)DeZIl0InUwf)3{v(Zj8Po zu_fLb608Z!OI&564Jv6df}V6}Bd4XusdxCsrziQ$-kR9Z4r{$a^G6~SrFM~2S_Qj8P88uNOJjDJhJ9dpP9z)d-*VEQt)lVf${>t zVjLSvIjUv<+8Q7z!k!vFwq-5RPHuY&x|vh;>#mg*x>-pf7#vMh#!&W7zuQN@pqBVv zClQRa#>{Zcb9zR%ajh9Wa}(tdO-K=sO)xH4=XAQkP!z8$ebc{-fC_QvT59xJhQZ_jeq z#s~jG^7FmB_ckrE?RIUXe?wW~3)b4g5?UK=fEN8>MP`%dND&bf?rR^W(xROJ~*(l+t z#k2tF9;vh53m-Zbh!^PFFuD@OX`SsD>50(cu`C;RHw7$3> zT8jyxXXDpQF03rkSSIHqL-vm$4K5#Zca*{Brze^T5~8tVGPr+K8i^@a5X)ZN35@4P z9Q$;c12THf;cuI!mC;G|c7f@Pxrml9AhrH=WXXMD*wf7|!>Y*$w~3R6mBJdO(+<2z zMs)HL-HOnTIWm7Vj3UAUl-=|uSzk~I;RLhg)WFVnD%nwL@!aJKJwxfpk91s_X7Etlz4Cr(etaSZo6xApEm15l!64>TrfnjQN6-vrww) z_xXMPFIwlENn<1Th_ZQu-`3HYUv=%WZ;lTSK3zGFA>y!X83vpqXJw>5U$3sb@b8%J zFNOQNJ)1A$ALuz~m!7rJh`Oj}K+tI~qGVD*Y%UU2<#Z}y$z+}B3xrPVnXjBTbJ);n z#V5DE`}%7RFn+sv|1aC$Kpa=4c($#Ov2j|E1#LGht*@CH5=GMkF1sMZP3k35w=u4L>P;rOXh8n7(BjcjJHP(QmW1M7(@Zk+rrSX4uXDi0+TH`$-B%>C=+k~K zio@YjMTxWOQWLpU%mk@t?W|+(Vy?3ja>T?LWcgr`zixskFR5biZWi4(GPUPvMnhkI zrbcw>t7t;t$%f?6Z8#4o_H|}VHblomWr9$omVGUJ5{ zbRZrWCHc4cwBO1ZERZ51bE9oxci2dd{uVNw%(^InZG+I3O<97gKZq4?5Yv=G_kCm(>iwUHd=t+~TC4GA* z3g`o)0;u1@VEBHljruU?w67A??3%X)w`Xf^W^)o)^ebcoS$G~WnFD+C1&i3W8>VaS zQAHbdfC;B8Jg8UC_Gf?{UyJ=q_05`R11iyL@Jh?~nI9f&n7@y9-sN0f} zcomi)K4y$)#L@Pe3c)0AjCGue+14>j7j)Y=+tsS}0o9uAfVTZ&pQ0lDl`?x){q~mK zQ%!?XQJin(3a!46&KocNb;d+8Cmkv5oWy!z^l7wDeKs6D_5~fEymCFT@7-YL9pRL+ z!k?$elBf`)R!K#>1;Qd!u|_8c9R&SOTnd&H@ET>4HC)t{)2={>e0$;TeU zL?ZUsIV6RYytl>|)MtU!jLcxlI7FHr8tJNY&YGHMW=?9`0pd6_wdvHR?~xtLxzRrgDA7>`osx5IXHWL>A=*ku4JjZ0(&*Q|#*5t%=y2WV1HJWpt~XkH z@Q2N-xv;_-8cn%mmSR+L;Z~x0Lb^l(kslu5T915}4v;kl`fSV)f-Fl{;MY7NJ# zr2i(;N@gv&^7tJiWaD~?7RL}^bMmFKi4S7KD6OTkrOUKHV+%Yb{n`&2?L7?rAJ*%w zfitd;61IBpn~F3DpfUG%Cg^b3Zn_86^#|*#sB)(N*cFhf(Dhn+nBk%I0E7=9=+FmF z>D!bpdD4%|&i3ob`1ndBKCp)nr-cs!$ zPLN|_d+0rH&=jxGf@FcZx&}S|>D|cz;PWaaY^yDGMNK)+)`frPWQUj{rRpugz?H5= zG<2!SSS#H8s`PJ!qZ?CIA~BCdK|g#YKrO{)s)8$0!?pVf;8nPG)u@f>B`E?Y9ssvVK(MlE#y`(ELU zucxzban>kkU1Z3@PHv7sLs_hEG)PK4-gyk>EnyWb}r{36EMlgq&ifww~j>x!jakoaanC zZLXa3-s}YW=xMXBKdl=^^tg&E5|x=;E7`yhHP|MRwdG<}&Z%tdlX3kp1)H(su#p!S z2SIe92&A}7$~kAM5Mb=+JH!cGjCkmBTcU^m?VUs@PLU%Wd8H3Kz)Wk~hZHGQ)&p&& zt(!xChhpWj<~0f_3VAf&PfBQSq>~GV7msARgop*Q+fTqKSsdQ-{)6pJ1#9X7PIctr zK{?6NVNR5@xd z9Tq3?UYb`!%8QG%NX!x?j+bSc45u~mFKu%u#(151TaF!RfXE6t^;IT80LdS!^(g^R z6RqM26OCEn#(Yoo0{c+%({vakIPVC_Vl%YAw#u1%WkC1zwF;)MO;CxmF^>`lV6d&esBs0of!lQxIA)q> z8>*yrdn*AiJtFj0bgiDiy`keu%f95z$~ki+%JwicwIm2=3#jYWt6a@NT|Wg`rr1T< zoFctKctMszBq9ZA1cBn7WUe^Bpyn5-|iFD*3Me(g)b&jozm~nx?d`CLqo>I@)3ggb^nvO zy2}o}aD=1w5wzXN>z;bZ;#gE@j?%GfXPgP=c$P?{ip41owg}Y(COz#Z%j?xL7$B^H z$-sRJ-mseK=it|*H7p^0+}P9TpoeVr%_=tE^tdOnp|a<3zL=J(EYtS6V+2(ooQH@6)hIE?^d9B|(x8lNnyAEk~7ddP>p}NH$iSnGz zrqYDk|0@*xYQBCvUH4Rt_3^qf=(^4~$iP?+WodU^^CcDt7Gvmw0E$v8j+8Sqa=8=J zkkSZ(T3X)nZP=-9V{7}-=FNLgw*U5UbE{C`#_<#)gfLbwe|DZfzGIu2-6mx-H%PmZ zxN`tLG3~^=LB>xYD)x$n<84VcK)1Sb>5?m5zBUVe=)~J{kj{H)xYhNnvT6b=iQt3S zLHSEqQUs;oDa2?6Q;l++v1G4V20FRsL?EeJ;bBD13h8fIHj0|4Fq!pX;?oHM3@xKF;iGGvT2C6q#W7c>J=nIha&P<}<&qfv=_RW(gr=h9T8Z`Vo2B#mtIq28ja{S6^}|5T6wMRv}YO8yVK3 zE8otSsh!@N?V#$vE1FU<*F7y{4zZQ@n?s5%r#=j=wnPuz$jRjwIA{7Xm|Zj8iiD$I zqYt+6hOTW8Qx4p+37sx!w!M?rr#+;~nIhNuM66%&nYZW)xpkGA%>YX^t{)~vG`3C~ zda=lc=@sF~Y_VSVdiGi};O00JlQ(+~#bOvaEU_U%{`h581sB6T7*i(v5l6*$GFT7D-FPRMc(yK{|@&9XE@rLv$J#x;k6U!P+s{Se6@`d zZN)Im%ddM{@sC2huN6I%5<>g)uN4yFe&oo_qsjL={mGi1AAOZWZ8VQZ*Guet7_~!v z-qh85i+$$frcdXxV4}`U-P%r)?HRyHkbU%YKT<7&Z0X!u$n(P=mZl3DA)LWpg5u5g z$PTKozH}}rfW|Kn3^iMO$(woA_0WdD6e9XIQs@+-r<9@M$4BTuuiD zof{#rRb;JeBP!~^u`#C!dE75;T)I?~)io#2K#Wp7aRaFObyf~xu;eO9yFAjxI9(0j z8>tsSA?edXRi==lWAQFX-?UC6kNJ!JXUDGBam0uvi(@ofR$#&XPfFfE4e-4$m4Q~7 zANMl|Syr7p5!cBu!Td52Yo2ru^V-7*vntk%54ac6se-thK>-#P%`7-@@=`8t$y{7O z#>VCtUA|XCRuec{$IwbasI>$x#BY* z-R#W%LDy?@sd{bNaN#TK0;fp_j;jvGJwvB^&207JS65|00B&9@^B6NQ5ZsLMCf#01 zUC`_-k{<4|;=AlPv7a9SdH!vYJmWIy1S)a>gKpBa(Gq2w zp6m=aNb2#O1ApZccX1${#nYx^v|RP5)FQR%xHE+zwML+wm5e}<2a|*#CoooD3`Os! zvx+)eWDuLF_zv>j@-w;J%vhi;wCVG+k$ORo24*|$8_}lTmxJ_{+FHf}<&x{Nb;=+> zk&)pcgxC8M!UtwhIc*x@;ctC5Ve?SM_&5My%N%tXya%m_wiz8yPckVMO^uMGIBPMm zggbK%z4@NvZcM6x`P{8`sc|}W10IgaP>(qp9TJQo)QIEZoVsnP*I|el?@8mKQwBho;dMIU+mo5 zQlNRw*mo0mUdMMe1}`enaX&L-6%D3R3sp7NcXhT@kxIY1hfF_7VZF`kdB*dXOwult zOF5#v0+bJ{_CndxB8hUUwpa`ED%xbuZxBeIozWwA4%%r)6L7tvxESPqr+}c>*%7%C z#P;HclR3BB1~C4X8G!Hny(g*yj%KArG?uzRXWgn(5tE?5&=Y8B)9tW(4*{q8dqu>q zpE8)|-*obPVnntK6a$|@oZZ%JZ6yC{%eC#u+~FPlot`#?N#6})h*`UNLH?IthUv6U z(GcgUX6QCyDDl=fOvutt)F;{s?19Exouls#ysHw5xM*=D-gEjM%#%~4kw^wllOWox zC!2xpJ2};WO*z&wf8qE-;yPd1U0oqVcq{bYBkxw=JPcm1PKxqX;eMyR%s^7Yw-n8` zmsV`Kz#E1+5U^F0Jrk>GLmR=G)gkCzu_@3jnS(p4MX`^Rt7cX5eB-v>7I2f3N*sM+ z%|5boCx+R?Dtn6xa-$eoFbNsy=L;70EodXFTfhoQDW0fe{dj=kjX5B7e#Mn-#_M5@ zdA0a2tC)betI3(zklFkGRC$xjDDFLC}nS)>^wsDGM*!Yq;Iz(z0&d3ERYFIIhQ{BEUhtW=aA-WN0hmG%t2N zIiOOSxUSWH(&qJNO|uV!RW-9=(0tZKeS4DFfH^7rCl(KN+;cEz9%_x+Cdvm4Y={H3Ajp9@ntOv$H2XMbC-s3VOzPv zHK7Ec9)vaVS$VvkPb`NhrQoZTzJ>2qwqK|l{d;WmdZ!bVaxdoX*=3w=#n;%RG4%YX zsa#zb>cLIY$h|b86l*ztltJHA_N%}Vrm^aWeBLR1)3KeEef=<0+h!$4IBDLqR`g*s zI>AoUQIJWV;L`#TgdcgJUQ%XIZ%pV+0yo369;R`!9?X6x+SVB(#>4T=f z%h>{{CRQhKHp!{of(=!rD>wRg(IX z=)FlsRSN&W<9b{*MJBp?_yt^on>EU9R5|}3J?LU_klI_zE8hnPnAmZZXQ8)9n=8|* z(3D5HhEe1@M)!r300&+5mXlY(OztOkGO@jVzKb3%rnQ3Od9K~QE+e^O;ORoI_ig`= z(WE>`i0nYnwnjdkPs*na-PS2Ir>vXz6@#gQdHBS&A$k|@m5%G|mforn;@#>_7Rc@DE((hB0bvNdhqRc+jk$_M`oR|rLWdUwD+~CEV>}` zY~T-yl#ZkbvdgU_dnjwu7L|uz$c>?7L`0Ng9i_1>$QViVSg1yzZ&W=oK`LT?Hr zoc>{wHDC5IqTR=?IPhv0@a5#K?lo%`9DWo52kbhTL$ya=*xD*K_`;3-_oqt4CRMjN zqtD@k%lSU|q9FqXJcFW7XwJ~@MxQj~TFp(SE^i&MyPvhK&%D@7 zB;DZDL9?sWR92Af1aTjT)D9Ag{USW5JN02ZEHBEg*n943!oyS@NK5J1D-YW`vU#*Z zF7&V(-AjQbgMf}Ws*;*dGu|v4pnC3mMmH>|_^kWx(L9J)>E8OhQb`lkd0pwPt@Ri_ ze(PH}5{cRN){G_(G~X0MIkHJCgyuAqoBh{7=p|C&}HEsO<8=-yExEOQS$cW_b0ONn_4# z*^L1ljSDg%%Y1Gb1B0Z(qLkw=GWBI$2I(}Hdq}*xJJ!*38ZDU{+2E_TK5MZ^Qw-gR zZDpbOX++WmjY32)G{EkF=FC~-m5)mlo0VXpwZEhE^jo*vC>zL%vtX^ zGiK+mIO&#ZKz7I32x@3Pct*D%G6in#;5K4D?pea1@{v`3KvMceuYpZ)K)vsP*3R0~ z?}vdm(7ag#)VkfA-GiqQK6mo=EYF*!Lhd$f_3fm!97xQEEmV{#sz%d&=S z->u9F*;{bw38Tp2u6OeJbbKH#8vQ#KEfrZ6N8O&+a6lmJO!@<)rnSFzt}MNY+h)3^@?B zFG5>$j*dURn>lMkXpmHtiIl_>%D~Av6?HhLn|CZJGI3WmKR+EWODJV!>`9g)S@wx; zQk)%bPvxBr&4n$}zBw5R+0I<_F^d_6B6d!D`B+Y7JMG}^g2L?qhAcpVEgU>pm)nX|-z#(5Iv$FNqyW6)llPC8!@7%q4I$5wr4Pp2QFm%!PB*ysdDz|m!t2|Cz5;)Y>c9Moq3)65L8yCyUT8$H!0#nQ7-5JDQR+KDjpPl5T zt(fw0-n!Occ2G=1XGH0*iq*KJ<%F}Ivz1m8v01RY=kBdY$YL$?<;!N4GpFDLZ<2}b zX6q*kCCva}G((W~35rMCQ?AY`hgmoo4BGg{=t?4S%PB2e@P)ZlVoRg3cHwq1HO81A zgkYMr7=efCpIFI%3+Zt~ zH{=@-0CbEkJh=q5L=^i#xLBBoNu%~6-lg50+Vc|D7wl{ooEBL=I13oMQZsZ~#L`VL zi07lH#o6+7ZS*uI!oDC9<%t;Atw?-{u9!UST=ZmG&gNSk)s&|ruN6@OEw?OP81cWS zcJ_0dlhW3yT`kJl0B(vynk>{y&b`c;kNw@M2#eB>WiBAEv)c-JbXguqXuXNd6M85g z=%Vkuq3S6g)tlbjrcb%-!Q=)t+B*coRCT5Vq18Kr%5f$fzdOxdV)$DiF#{Y$`Ffj` z>7Z+zNV|5Yq>Yh4R5w_%Vs~{QN;=u-AXijpBvVo0t;*lEMT-nw$EnUbODhWVf~wY~ z*>4mcw5vu|S4xkb(xwyi%cVdgLp=z&9)%aCz1_iJM@|y*OI@{r_dV=!*zTp#V)*g!`+z#f$&lObaMDg z+K8WN4_VfuAdO=%_}PHGMAjao0iICtF^85$crtg&(0i^)*8NFPj@?1z#Fechxrvko zc4?Z_Bddk{)Q3t=U9VX6A>;+%`b!-vy~cshD~1fv5!B-J!u+C8n%{>vz#SUE=2jKO zdaH3YFbblfiYsetAtF7a{a^R_6pw? zh@~QFIU#E4SFB*TH#ONHZG)p>DG2X(@yG3j-u|2LSnJbdY~0?Uz(sk*?jlMrh$3JFtTl?g3^U_P?=a=&bGR zi7c5XLBpiep#kyah}!{X?_Q~}f^T}LtPNrUSbKHdgh=zT6^!u9R1rse+}KOGK2wCX zL*ycO(6u*A^jn_Z()P13Ks#{(MF}>8Rh}Fci7^WNBFII!%LfZxm*Yg1ZV2@I^IZ}W zR4$9eTlE&@I&7p`ShgV_JW_KVEmVOm7NVYC&K365m3whi_&Qly_6A-R_eo+lv{@{= z6x{P=htN03$gF(ScF{$rq(1)L?||;}o7%sUov4H0n_J4#RxvHMft`JKnmBVuHnCu1 z(}8dKF&8ge(tsKxThpE7$Ra%gW}7^hhv`YbB`SQ8L3xZCEiayh(KBy z-y{;Jnk53BO%Jmp?c+vQuGTbZVk|n!XOqcgaQ4|aa51ojsSwL@4XK$g%UBf$<;MEj zr+cnJs>#0^}xN9rBE&YE?@D< z-fgdB1oUnp`6{~#HQ~zA@RFNRd?}<|I1921zBN@-j)vRrCC^txnj9jjKIC)f^GE3k z|0EA|Jc90~k8B~1G7h-WKIx2@NGrZU*Eb!UlnHfbO-~2v9Qoq9uihhohssh^ zusb35ZW2T$uyZmeTdC~zK22jKuP>Rd#W~c#OUW`@surFN;~7Nh62KbD1-+elS}eca zW@`fzOO?hYOOwKTjq3{KASv~cqKPZ!?1uA>Ir~x<3^luLes9Hioh;QyP+fL~ zlrwT`3}Y$97Pz-7gFIfR+3>aBte%^dZ9loB#i`I)zKy1C1R7+$0xYRneK>*(UP5#A zn=4(ZNX-&3RHPYr7a-%;YQob@hs?OLxCVq0@mHrhT+KrBLE-=4#O!_b!}J za^yMbjz!JFgKetHo6OBb7iasseD%^L)|y1hKogU{`?_+9t;GIo8TY9yT)pDj!ehLt z{=Z7)m@0({>}l4F`Z0BMTSpgcD60j%au+cZPH`bIq{`+ilbkK_kMa!xJ6Akfv;9u0 zfJu(V$%Tz>Nsn~-EoM8*PmEnj@}ob`-SI4=sZHI^XI#u&#KT!X_jWB2r}(meC9=-` zT-pWF3Zu=%;pWcu5{nlP(?PrPF?F4sHf}alt1Pt$#khnYZy~ zF$vn+N4jT((hLu`w^~IjjEiF6vA0SZvbj~SnGb56aOguvE9+T5$y}XeCuE9qT)E=9 zrOd{Ztn)3b3#H8N`NoSYpIzGq-VT@rXPwGUp|k`#bF$t|Qvu4);n>hkKjXLGN8u=F ze>pgZwO!MX7UK+a8IN~QpGqkxbt(w^N7=3cp)-|y|Dma5yQZI*N>N~5u=5SC&vGi# z8#g?L5J^h;eU(NUKM$W0n6u%m@j!LAR^XWVa`B=y?VjOv8cG>ita+D?48i}*Y<7S4 z?o3Cv<%V(tlxo69oMFVy-#_{Zk*^%Wu_ zi7^SESTGYMnzH$Ymfb;s-R}aB`T^(l-ULfeVC|*)X$xgtPY8P$3B?p7169O(^im1~ zvsDxm6uAu>%h%D%9oY(&vUyr*DWhi%-j(eJ5%92{bcoHMh;F;|x{5xWPD%3SJa%gX z<;6n0zyl6o7Rx%Y8CqykC?JTWIF8G4r&>|89-4)jn!Cwu73B^aMoc5dND#-;UeMN* zAIXVhR@dHW@!E|oq0}+SI79%uZK>ld5?5EY|8b)RH8-RPZ85}lLS5|QR&{w8c^u`a z{vc$gbG0DXQOhbBpJ`my=05jW6hVMT!YUe7OVmdapD83(b>O$4xp0|vp&F^oER;E9U7gr=qb*QF6H0>@-u7%SeJ3Ry_J2pw* z;*rqgayiO3Ar&q1=Qu0V4?vamA^HgzEVc>py0t7S1tZE54}63hAxW>GN8P$WvsY(9 zP~Rh=R6jq$l(N)TBjN|L8Rzegc9AtCu+5Ql>{G!-fEb-s0TT?e2#C+jmu=M*P%Vlz zjEcisKBi(vftFb1V%tf<%X875qv{fhm>^uJv*Z{jq9fbjU|gN&I^I`oGcGkzBsSN5 zv@I((a^{h@3UB$jLy7LPGLk^D0nF zXv6)**4kLE7&@Aj-E!trijZ@3Ai@5&o4V&;2gD}%->M5|DR(X|Pt7ZaD|jzB|57 z=8+KCTB6Q7XP?Y;~yPN&3_x&{Fpk*R5&-u;|Uu&&)CM?d0e=u4m;OQf9q`t!xzh_u?@f z{07YO7hPHXGl}s|yBgSYa0(O=u4}tDB9V*3DBd_XPIGv-2npq9_iz34mlEmzQ`cR8 zm;FjqDFpG~J8a(H^XIalgwG%?+Xdf58A)C0em8|Vu3kZSR`b30>e}*GpD%xP`HBvy z>Zj-8@XDYTfOD=AM;&k)mZ+4`+Tr*mr|lxYFod!YO5M-s(NNhO^C{PNAX>qi@vQcy zwz92#GsttDg!2?Xm~dLJ?gyL|9SAoqX;}4-AARG7=2*k%QEn51(+DTeWpXHZD)qV` zCcyzmC1e-TRLPW28g^T9q8-_l{y=Ss0>Wh(k43Ks``kvKeophQQwjjwddM~hai^oX zW$7Utn;N|G0DnooEz1@WC0NFYZWYiwb+$>%RycX3(qoHh zOmlxRzfbvs*Auc7LDFi<*k0`mQ+#>9H{Hcx;YJI032q*k18~(Z=^|gv=JWR6tI2b6 z>HM$PTvx&0xnmvKXa*V7V^L<#WuyB@4G56Xfmq>hw(ouWX(ZV0E6PIWw(zNi$1!r8 z$($))`Gz|-K3zG#u|MDPi770VbdW-y8~?2QpNX)9Gl_#zDOAK5zthsLuAo#=r~_!H zM;G6&A8JaEzV#?(OzFel(NI^_ahrAL`+#QkBI0C6UaOx;&)Jz=GKUN8V;rfm^JAsL3>Ei9nLa`2LTx%6-!Aq z!75^}{?E!gRY!1z;|G#IG|2}uTqqlvxE6}-?QSk!7HX44TlGU5kVC{U1({4{Ik{Sh z))$YZa>|0R=i;p83h2U}eXf}{-`Eg$yNV|sP&^=1X8{N+$uJw?|3BIrYb$39k<8S5 zb&$ZuzcYC@J~<#u6Cf|O5CP_5->hZy4XYqD&fa$p%8?jpG(J+Sa_7WLsdq-g*_(;o z@sW0@V^hXn2Z!APJutU;Q4_qA>(r1}!hyD|6|yO=sXzP8*?y7g@`+NihXyc-!~qof z<@Pp~QQgXS5NO*~0$N-FEFLxO#(OR5}pBln6|%e<$*2 zsCfr&!qinxo~3XUA7o1;iOp&^okq4p%N@ola=cpz-3~I%@%|s}5whwTO3e~%YZ9j| z^hYjfx4-`Z>nb5F2`yvi!l;~PYYbFp3wCXZ-m)U*46=}+l6>6k8LNwO{>XFP!ZPLa zNa*YvO^T}E1wqKmPp2MgW^(rwT({I{Lrb6$Paj7HL{U(gI>C&k!j_k+7qe>f!LvKH zfTkCGZz-*+pIs|ECy)4&Y)fBn!Gng#cf|)vN)!g)$#4<1zD}{ZPN~UQLA~I z7PlIhCQ#wOrByR8S{s_kf!v!Ag!LUO1{K?RW^JvKa!lCritY z4aXP*5}k=nT=LEs3T5yG8*lQK?f)G>+s_=rjnTIx!i#!N84cR@>GVgiVbN&yz11c{5i%JS01Lrl6e~L= zY<30vvOlO!M1s8`LX_o$W*Oqt#37%-N8;OsiG z24&>_1xsvpZpiUH(Y|I{eAmK&?`# zi=TBLw{+5xPdEP&*2B#dH9AMDwz%j2r}1EgFp62VJS9F5ihgZYTp09s;>bsJIU0pa zGaO{ezk2yXBQ^WI?A1L!lIybfs9RI)l(&xdmSJtE0cPzNt8-R>m^F0!k^g=gvxZ3N zvzg}6f7YAGDX+UTsaPB0=cRL5{OnA#LD!*p!6sVP*SPyLL1QOns_&2Z!*JtqAQW4N ztp+1Y7tdHF5`?;6{7dAj6o*uHCLMc>p3P^@1(Bh`)`Em_Mj$_4UX zWItmtJQa{n)qx#5d8)ze&wnT1VWg|1xk(!D)$U83RC-3JNd=QH+6h>k&hv}c{_WD| zSFc<|=M#d~$4Bcqt@V@H!Mf}*E|Jb@uj4jY-=BQ8zE3)_;J)}TCM{o2aK*z(shZ0D z)OnHG;A$e3NHm~2;XuXGpk3+W7pnft|F4+>mp_ll1CQLPcn``n{RYQ@$%NH-IT4zZM$B0Vw{cCJ?#Px4^Z&OH?zqz z{{ygbqozF!ZF zy6SK1oU!z~ct9`5`A{pT2R;v4`J0@Om9)n)Tsn_i%>Xg2g?Z!z+(+*d5HJB|u|N`+ zk^}@O;>NaA1cM%xncy)c8MHP26t5k{E22Sh-|q2>PbG5(ZjRo}gh-4U*gk2T)8NjY z7>~OzaY&^&M~0ATpge(WDt1uwW?PT!1Pb!Sj*#mNGu+&xWP-w0^0r&zm26(~xss}f zg$d@3gFQh%x}x_S?{Gpn=La50i4*I9q+BC9x<0!0>Ex_ zs#7G46kaY_4RJKEq#Vc~_{1|9v}Zf8^$1~Ur&Y9xly_nAu12_@687h1kLs~!c^KIB zGsP>mqb>yS4tB@3QAV-R)SC#d+n41HJc>iR1AVnQ7DFi*9;~SS8WM8kLL9lwy|I&a z7}qM(AgPg5CDEY^TM27-OE>5)+0XfZT;rAV%M6Q>Q2~V|p@=BSEs*$CZcn&-ciE=) zRI0*6udky=lq8bpl&n`-W9>|}a1OG z;Sz{WgghU(LA7;DuPqJ}!TGLPxblcDyfgMb=B0{KE1TPQslN2!yX`zP3Ny6Ihp;!$ zH>GMlxU2WeF^W6$=sEI&kc5sJTKP>5`x{=ZUV@$qD_1yb!`hE75fzuyL^Uv(msjU94UKgZ=bUXWWAvtN@=u3*_ogd?yJg){q&j9nbitXoy>0w zA<7sMAjYf1uZy2mUHZa!PR^$8KwMoBES?(Siiilqdt#PWub}YTsMIIWfQ7_M`)0xO z**01Cc6pZ1sNg+ir?0N^8;rkgk6?LHrsX=uzuQnJWOAB}31uuku+0f`JGYmOV4uOw z1ZOxtb351WbgCS@Ek8`$$p55aO9@dzH4qiSnlD`(E8?NMtCTyTBQlNz^SSx27h=cA zhQ3uKH^Yg3(ni&#Y;V$6MP1d?s^N;Zy!8?0M6OwBTt;}GuzL1mE`(DpI``|TQuxhz z4ySvM(`U6mjZ=e52E$Y*Z&HZ({wY8WL5QLTJ!-y2_Ku^aA}dli@&#qhX!v9M9&0p_ z=`ZQ_@sEj8akPfiPp_RH3dx5-V6@LqJFD?1P9~I2e%}Qd7eZ2ZQjDGd?c%~YkNdv3P7sL`!6+=oyon?)J`#Q3= zT^o;S;Vj~P zNZi^>apn(H3O(#( z9sTi-lnicrBd;>MQU0g?u)}J$z)q)+FDu8@=|=ypOS7O(VL?I`(14v4Zg0mDFM97~ zj$NkwjVGq`xp#GD^JO!Nc@9g0JEYakrW{}}_V*26s-2m`1Yfw~9W9C?!@ zD&lE7lHCVhW(*onrPLr;CJtaceRVQ_@l?GM7FFdV?>!D&5wcPt62LM9A^m1E+PJNp zuCo>t2`faU>lX>JYz{l*o=N1M11E{a2GG4G>SlIJQnD9k={r=1xKsd*+6|XjiWJI9bW0sp{lwEhv&-R#|^% zBb{I`%izj}y>`~}6W6RWAf)LgpMrzK`2Ne;RaABlyCn&sJ^xzTC;C+DG#FB1g#?U6 zO3ijD^_Mk)Wk$+5Bnv5x2(xod&{PyWdWFAmZ@T`RXzk&6Mqx+)qQrCNqxC;4LmMaO z3CDI<)>g`2=ZUv_>+*gStw$?2R&f0BNz+7)^+Sh`|Lew&UTh+)rt)m<^H^hro)SKHrBbHZJ4G(nG$VQzq+o% zZtCifqm}bF;%|prPuwr1enU%TMi>%$D60cedbY^pL)#wNc*tl^1;>P6d zWY;jHajDvDs%xvWG96apP?IIOn|gPMW%`c%W*1_(Z2o>Sle zv5kA_$7bM!DOHeS#JjiMR>P^J$jwDz>J7dnM&phA?}w6?3lE&i%FcT;wofRBZOV^$ zn#M2g*gxVbI$M?JvgL8s$l=!R&!(2?{E5ho$TlGO?x>BY0tBK9v*zw0Mcl{Z?Fv#t zbFH5=s+MGZ)#F%3Yg(*V_asQFX!i+g-lWA|XfMU0um&BA;utTDK4EuMy+`Xg?ReV+ zr69E6cQ-&yLY3C;Pu^(mg@a>a)R$HJT;!%DU3!~h0IvLSB#LneT;2Vm?R#W)UFXSg zABkY$v$cxKW*!62Pj*}u>V$j)T0LUJAsa9CRR*fxG#?=ND`Pt$R~>I?MVY*o%W2cj zXCP>5;6j*O=MwG7!RX%A?>?8=r~^E1F9Na|qj&MsM*ZbRdvl5<;3qUXJtChVTKQFt zl8K10;VV5)j!rE<@j}9mHi$&%KKh=$LGig;mMh|E`^SZEBiXMWu6E+0txeJD)CHtTl7*u7{`?KJz ze4@|oB=b{~C$p#F^L94(mJessy%X4{BN|8oP*FjUl5TiOnBDO!3gOaJ!280k7}qK5 zID*~g91(gq`=@k zJr&VD4KSE-!BP%rPl#671yfJ|^=Z3Q)PVtc2XDsMd@=Eypy-#8nI4Voii!2D&HwAW&HJ}EpL*K7$jjUn>zRryILX2`D#FY0-4O=X6i>*1`(a3+ zv&oW(;zyPQ5s%z)`1It+4rDwvsW7noeXL86Gh!CXL{H(uB!x*r?J`cRo1bxuOSpFX zNa5VPK5eH958hzw1u5DHQTu>}HV;ua>}+>738!t{Ax$Gzq+K2A1snEQQtrrC*+MMJLcWMSu)E<=|>e^n*a7!J3*a3~iaQ0}DcTD$Zq z;caTdKE1x7#(P;_8`^)B7xRS_-ufMd~AS|h;itO=6*IXeF3RB3C&Qv zNDdQ~vGyq;a&#tv*q>ODjfIjDMh0oGT)en9omkya&k!Ti$?vmIhvcD=?I1<0{4m1+ zFDevkCs}7u+ZfQ|#s3nP&?&+^F_QEZ*YaAkB+(_h)54-6P+Gi=pG$(W*oRk7Rz83- zt#yKiwIbN=-v9dgSF4XNt^etVjUO+Z|7z_kSruRXFHXRkL3KLBt|8Up--Ys)0l9zl ztN`hF@KA?AB`;~?S+&mVLB696RP(uWFhz1+9;-40Lw9e~bh9h9iL%2||87 zNWBI}vE{nFGJsL`ob8*B{<67!=etKYb$xT-*UrpQL z)I}F4Z&l2%x}+Nj;1?zw{AbUkBI;7?)Kk`cKiFFt5XK9 zDA4~$pzYzeH~;qS-L38Q?Y}+T1Y5u5ewc^g)}^t1BzE#!?f+#@yZl@2X}A8iz4_?o z{l5q!h1dSQ`TaNA+LY91wJbjpJE@PKk>yU;8&EIF%vI8^&2PVb@YnU* zH*bF*xCq&VThA;h7lW^bJNgm3=-E)Al8%`i;>is~7J-06wdok{dzMoPIU+ z!LhTo{b=*%y>(Y$;nCkpWp)1_HGDo+bCvJi4n!)JV}k!?c~TUt>VS1c*p=S;X>)X^ z)s0CHT<~v8Mbl3kaPub~P>CAS&B?x|^N295yv_W4|5E?Od6oy@+Tgl35Z_q$n5kU= zyPw9%v}Om)uR0v$ohGI9hv?b|{*ryXU~S&NqaFHeqHu7`Gn>^M3{hyl$iyPf&SD65G_cY)jfe@u6_6R%#}c>nn? z7oT@J92nd~+r>^9ZUL8n_Q8%U+FOcijJDQrrIK+7LYSPe zv@6SpB0%)?=}!T&LI^Q?U;a#s!14O|#zPAk$LTAAc=o5KsBwI#p4`IC?MrNZ8!{Xt z1oR{QL1A5;Qz2V{2(oG)S_C($$e2t^JY|5A6TC`04X-v`dzPVHJJboru}m=sR7`~= zh~{zLmIycJV#eesDZ>x9%?&gp;(!em#Me+3cO`R? zh&oxz;{y_n{S?my^fbFM*kLK*w2YVaXT`)pa2z0{$ec~BgqJ$!5L1*_)mrz@AqK>H znNtP)()1tym=A&>zMCmEtL9#@|M|A(G;>-sP9WJB8zT2D%R~s_^KE&MNB&F<80tC= zZ4`gfX<2);{LHvtLv-tnAyXS3siQS1*kh6&%VJe@cS2dOxr4XE5ejm{_P7QH_n?+k z@}|zDbX3CzWB()svy-?dj%?4xy9Cd8~sS3`GoqaGW{oeEAW%IFJ-^Hng6%D%ZQsv)2%qD zP3slC!CRt%1}OLrUq-5c^}8C6tj|uFnFysnq1<1+gC^Ti4_2xx=~Qe=(3hshx&2{; zw-w(k8>9^&qe=if7i)ejdMv&7JN66ntXVm}5KHL8m2|C&qF6+CQ8nOHO08{!RM_Tp zYGrlhlvQl6T5i@cJYlS%iYhHGqRisOS)r|p12>8vt*NJ;&~?|YHK@IXA$?(%zcSJb zfGxcJ`E()eQ&}2}r_xxLuKDC!rGK-ZED&|Sd-$Xjw%&xDNQX>RCfi6AnWcI(eFPr_raci3mkL?`qgmZ)SJOhU2Wc^ zXe7gti0ya3qM)>4_U^}v#NTXL>Z(IlrE(;=l0MXvSAAlZE8xS#>;P4t=#XUVQlb>h z5AIHun4`T(S>{~KM^2n40%k&484+WndVnhW7U{B^O4GFL;S8P1?hi6;#7naxA?*%s zCA$Go?*lP)9}OG#Hn+cdaL4@(_aEHfT<|yu08I{i<>cU?zmjJK)&$DJ;N&U&UhBY6 ziyO^9j{M>II5K~wDK#6W@E>Qt5O6m)x7IIT`TQ)?={S3|k`N6+C>1}In${AFB`cl0 zBCAT|oMlFPB;rB1uQ)*anO|SR#i~WOEkP9=YJD2-ZWMj-(~IeUSQ6zqu;4`x>o4C*i=Opy z@+i&P?*3@?A!3z$;2w&HRj<~MRPorwOJ9ihcYbGnAGC|%K1Ms+Sq=ODPs3~n%(CnL zju`F$kXl+H>9b%uqyL^c@L>e6Ui|*Sou42eoIkF_Wqw3-51no`@i~gR9abLa`zvieMXzx;O`U-q zob!nESvH{M`ay58Y(s5y$v*bqF`W7{dF`a){im+hI{)xk!K`&N!|%D)TCb2_DT zSo(CWwt=zp6 zFK==C&*y$Nd1lJE^Dt$Dq4&o5}Bs?cNKBBHQ~)LjPMQn~Vn~#np$f}ZTXJO9q8SWK zBte1zMUWbT(&~S`>Ph+udiC@5_wC^f_g;{c?TF0Elrw`O?>+Yn`|Pvly-!?JiRs_y ztX5ii{bm~GKSpap>Eq z?|^MVIga@pw>l+oBb1>w75Q>9K~<{oGoM1z2j;-qr7Ss*0RJ}XQ& z&#W!xgvpB4a|cO8TmeYBuX5R_voTK-8yrG{O!LG}k(>{|6Wj^RR>gX8r5kqFN)i-Z zeO##2ktt5Qlq@C#`9=$_rT#HF)trhD4*^8*iGPdxyO?$Q0q#d;=y8dfng_2qoMo1! z%YwX^vL@+Hda(9#08ZF)-DIxO&BmIA+(G)P(JP#@sGvH=H@N3gbH9-*tx1oPBqz5G z;&w0X#sLE;SrM3$e>3i38}?`HV~P3!q4vY#G%*_vELodiP$ifws~ntHY=3swKr_a89{L^=@_cRG;&of-G>NT;Tvkj8WF0>fsQpN6jeI*F`zr@J>Q1;Oma9y() z6T$NYp;+oXtIp3#Rk)I%8w%^l%^1zvmOk&)o=;I55*NrTS(S3=X={1F=K7}89%eEu z$d@Xe`}pipQ8NIehijz&p1?r=zZ@8y+VW=squf3PM(_P%U}(WHxrK)0!;1QVgUche zNigOjVk!bJ5C;N)7IF8Q^{P!u_u9(UC)?t68Ge+BYr46b!u&u4PU@yk1aj!rhK%81 z5qS_>OiKcd{C-6eIjL8u(Mq8m6d07Wi6~9h8A6ymu^ZwUzC{5x{%b;w@obRTcv-qn zh+}~Et8GltrAMNrbmMkH29dj@QZcM$j7+Fgu72+3~|5@bUg1_`NT@-PeJXwQEz z1P;sQBz!Y{5;~G#qoAFP4q#~)`Urj7jf^q+sLUJE)8w0Pms83`n~-05Lun2ymt|te zk}!rmLP;Jy<6VZR-Q``kD=ZAuqjpeL3DOA4M8f<%43(!8Fz8^_tt?QBxJYqW976o8 z4aR4K3#dETwfxu(XSht*O5EZY;do4!)oLX(^IpJwQlw!&4ebb?P0l4m0ocZvt2$=Y zhX^<6*Td#06SJ039%zKI)FUm!2N1PM1{+06Cjw!)SY-Ul;x=mIrKLDcE+8~vnXE?& znAifwH}Y{a?Of_>++Iz5l1=Yu18yEWNR=oIrF@f{klb1g#wSbCpIm$cSDV9P6Q*M3 zqwKysRd_%lzgKD2wVlCv=6K%V0DvR0j73pP_Ick zaCt2pLO)B~!m9stSnT|D4KW`$)JkArRq-mSp@?HJu+yY-y@o>v@@H^~b*p7;3Xpz= zg#i;{h}a}5)xJKtfIbB3ioLvnOeCQ_dv3HDw_MYZk)) z{fh0v8}OwC3YQ-Y!#e*n(M2MgiaeL4U=RU4AN9@#hum}?YMygEKp-~IG)fHTQiP6d zE~3KA*RKFEe59tONEb}u5wP%DfwS{X6@ZQWk}T|>Q?XbsPC-lM+RhFT4 z_h%HHoxMcZb>>a?TkMsfSVwIB_+mINH&3}yHR08L0}=DS0u{i%{?T-Had4P|j|Lh=Fm_eHWXx<)n*LDG%%=#AzuO zr6}VECCov73Fptoo5v5suqF$!eTj4Mp-Ue!IiSE$>8M=E23ryin;t$0?Lu#P?3f4< z51o7|Y}QQzVH?TYH_aXZsgQ@m{#;&;(7qBQm_1sB4egWO`_DR1z4s22{QSjvRLW&3 zD)_eE{6JA!FL3qu+X-%tSB4yrtHwP>X9bOS#!Fq6z@1D3zXr5{qN zked*18CSzZ*l}=Sm@_VL6Q1p)vE|5YykqU=q=$Qgr9A#X?ztKAVm}pZBvU7`jfh+= zDyWK9+JVU}4yMnOuY{$ANS2@(2V`l|&Mnk>PUE7~_|swgEVK*9OJKD=fp)F-RIm4v zETz?43i zUxopqVfp@CCk8qTqz$1UHlQE1fxS{bx6NcQ6Wm1Rp(N$wh^iCp(UF#AGlQ7vTU)r^ z9WqNW9FSkJ{}jupNLBQnHBp#`3E?jJFqofKx21SS2ZvJDm`hCQLGYVulrTuxl;BpRw7Glp;_=_y1VoyN_^F_v$ zB+|KHt(okcP$ni>9YLla2aBIO{)RoN;!Iq7@?VZS2wN+oBSep|$r&ha(0z(LzoMH8 zdIX>wAjBD>@TgGY0}oS6yF*nxlW|?O=faJ!MOvR5^9EUfKFl$`7Jswr(6Fv>n?gro zS_NZrdMnmf)Yi3n#k>$kJE34NPSHrCc;yGPeJK&b_^uohw@N^+3H`HQ<{D}zz7xO- zDDzr()*UE04fmE`_}mA%eB$%@T*BNzEB^x+D?GZ7WXoA{JNKG>ImRR!wvaNszZA_z^6eC!8BPLhM>Ui$@Yt0-eogZ{^YhnB;)+ z77)3LTb#)seh*I?VqcI9E`F0}ws*+oi=jy}C5H>xEhd2_Sidn=D$FF1ArK8AL_TF% zf^v0#)Rv_`H9vdYk)Xg z+H}Nu&ahmTsnagNg26lG>Jr?#{6R1x;3#;n)xgmCFnGwtM9-49naDuDj&T}VUA_h+ ze-z)5-dBa25ymt49w`ZgU84J4t2(GSXw^5kazX`GBAFP~k^rR&8tsRO(KdpZLZw;f z=ZrBDDP{_xZI)W~f3_{yUnrg?LTy808OnuHg=2YHx$u6O)OwJWFdeh(ZO zDh`;4v$&C-4u%6E6b?}y<+JEeNDioRk zz*T_X*R>62P{i8aY$ZBtnBX#n%pJ?_?svT;<9THLnS! z5PCJ~owA^YmmwikbtVB#^~QZutKtYu7(LUV({<-0LQWKQO(I6b~0%9@HY6gZ+2Ws@BF_o{p{%C z9FDI%@%}mgUEGD-{c~kM5h`YPV2ANxZ5i-T0v|y@N>zTIIV`TBj*-cv0?LY7yPqFswItQh_C!d7F!P+;S1@^=6xVzog8N`` zLp%|q!K+9$mH`%h20yY(h+(|Kf^b0=q(Ry+6z?nukbp2Vy?qcP8c4oK5bcGOXVaK^ zpS*ublS^v#@DJsA)pv&b$ynS2s}3f@HOL~sj>V}J$(Q9L7gne45AKyF0+jYcP=OXE z-k{{2C`8)qqAd9hbsEr}r zNnCtyG7lxGf{zZDNF>4HsOL+3L_wraAutXCprU(9&`hAjJ0QM()OIWkp+dS~^M*FY zIaT-8_+Ak`exFfwFtLd(fbO_o8U{?{ zc2;7OwQeX5BYY0_IS;l}wmr9)I`0689r{js$R_P0JPVrD1xeD zvY{>3qBDG@vdlc9wC{d8As_dq|0>XayPh(XSm+i=#1i-X=!E^O71MxK4vB4z9D8%5 zL1+j`C#my-#4*|M08j(z$-daGUHg7U;tdPHIeS9Qo0J(i%4m8DENMi{v+-~^nwqQ}xS%td+NG>V z4GXvpPKGSa$roXa(2zg<)Fyk~msTgN%FWG%s7uu(fc^0qB3QIzpFliVvhc79f386K z7777FqA9!vdgS#cc^4k_do?$jrvtEJT{a=UK_+qYP+!BQum`~|rMKc0`e)fq>lXcS zJ;U+-KH{`crOOu(T{Ir|P@wQ-35N`!fD69S^SG^s+r6*@CJH!YROnE9rQe&Xy}mLM z0h$p~*&ML26AKnXoDdsXq(L+g+3|5&V>ggBVJ#BZzu1BFgogTX_DggbGo^`f0vP>; zrC2q5bmK8T31>M=KA9jC1PxHT*Dzx96Xy}+&H*G`T3eIwXZ*v5XOyt5F>M~mkdqe! zy+T8ojZ=}ArmuWA>+!575T2h6pfFGiIX~P+t_n?15STImE7AahxVuX~C+bGRjbLAz zM&bjZqd&=x(H@5L9N(E=B0gZI%!|=EZl~wPw>DNj;Uw3w`fgt{*6Cv6+*y0!Z1zqx zj%R0QGn7nxEGJTv6dZk#%=?{+>QaAp7%yT@Jp_t@a-PD63J}CULVbj*9%f@e|C9xE zY0p(v#|2J$yPsw~nO& zl)i0X%I8mTh~JHe=Z6j31_m>rcWRx^bTLipKjZ20{zPKSyeX*F6u@L=-~7-S0>1M1 zUZyPcL}^e~kj^_yN8VtuszCeb1mwlM!$~pB7QaVKVVjt@{>SfL1vrK|Xs5`G#FlEw z1Ar~>!FTAjTv^C*(kFS_!EA_{wv9L$+HUTyq8i^;?M|&zTMug$t=<EqXraou$oN_QQQqY~#@dbx_VOh(&YRmeJR z1~ZDAt@+qK4izOu3n3mRlL58}(Nb>acn$0^grb^2RL~63qXZv8mZ(&`T$m*_!MnxM3a1rFZ;G4ffHje&M0gDrVo>$N9%@?ilY$vF z0KWjgm2Pc4E-sKdGm{FS!NpV2#RftyyIfcpY+b;V`8-^VYQ)$#l~8KnI?A$lv<9vt z8QxM%(Ktn;%sdiMn(p{h%3H8g)(ie2WA12}e?f(+#C<8oVk!pE#j8c}?b$ zK+M(}I+eeNzO}JK^?MQri2%ru2Cv2S!@AMRT;=@RmRYwsN%;PU*MEHe{Xa*FfUaJ1 z*K>a{q*qi~a21ed9Z*Gg5>l3v3{{%cZ7_6$3J4I@6EnX#TmzkjC>6qy8O#Hg;I~1? zUaCb}%0^{j81^~VMj)ES4jgWDieUu&zhJejuXn--Lh3!-EnQVwJ3&EPT8O$!l4Ip# zxJ-kx=Wb=>-q15ZXC-85lWnabu2q$s-aTL)NJ^Zv-R~_^1x&CTsKvoNDDfIOI$C>w z3{4R$Y}=o)J2#tB;d4yKqSFV2Aq8eGq7*F{a>*`bo=({!OaV0s+OC(%gH1c{+> z@bqzD>!_s;U-j^VAfc+PSbDJ_srAtAak4273H_8laLRTSPH{` zIfUm3;T01gw|jyKQIIiIYk<|0hnyT+Q7yz7*mhwTtjeoUi*Ov;wPMF~NC9n-g5+HX zq78))#%a{;)-j3*NO^Jo0rtAH8FFdnjB&tBVT@Kr8fOxeKQLYzg1sYL5sw8DXXVsr z?z$NvaeiV4N>zBQEX+Y94I?YOdtD`u$FFc>pbECEf`Xz(2%vCc0f?xmh1o&L_Nb5{DK{)I9OR-HW#6xDK~pqr!nhD!gQT z0sk`!s*p<59v?eJc}mpMa9eE0Kv)Thi!2g!0ri}~YJHeIL?G>pXrD@e((hjED&ZaI z6@07MYfk!M_EdS$i9hA`1x;Sa#ubVQm-L`*sjTFX%P~nUL%)ZsE*&DAu}o^k?3wSQ zWY1(F_bix=(u4&Exu8YDcZ3&4q(-buT7H(~iIfxsKXgDV@b5vLym#oop=D44CtNm z=XWXKM4|z^g)|PeG^CiLnCyV;fsuJ5&&D$C zEM#oNZ8{^j}WZA!IJc%MGcv|UV%3=f zL@Ct|LSmW&sKZw|xFA!m5ynr&4sUS3p6sb}->WK01AIx~T zWTGe=x_}{NWP#a7Z0#gT2I*B6qN26)QWE?L*B7)$; z-)!$A`BHLqIvR}kd21bvsMcf=c;xh&41%Cl=~ zO+ec4b-_HX&`g?<1k$vI+bTV_s>Gg%2Sr=5H%feA+!;S!A}9kIh0l_Kh1x;2Lk*(- zhh?Y`_;z-Dahmdch7n~wMt#NHjOngveT8B~QE67OkDUd5!=)$!{o>KHSR{%TVRx>g zl{J>j&)B&kcM(j<6jx;`8NvJvl8LD$%;_rLF55vvHN?o7SV>0W_=~EinM2I}@B5!D zye39dcUGE!kiF+#g#U~nr4mbcr@s`Crwo;J_syCRu& zVs$s}YbJ7%J&DAL@N{v^C&co~jVbT5@2X7rrD-$YiH{+=(=o@CnlrTdm1GRjgo`zY zD#_|_5%D1J%RJvO0|Leq*!iT5s-j|GRFk1c?wU2zGr0<~pV+X2eNaWv80bn_QJ)oU zf@W~yCTY3o1aJUjc`;a|_|J2G#eWND z_!)gvE#8pX2u3mrfTe#Gtxwhqn2MYj;BtzTVtkKw3vAbzrP5Dr_Z9tA|55*sW?At) z2oUP62*PNsIz*^p4semV3Jb!)7Tr3V9{o`v6 zF~DuIExFbj1;(`#`X>YqI2F9pi)Y0>0`4UAwHawaZC{zSc97IXWnUO*MuWAW`*SAy zBOvWHyk>iF02wvW1VjBC=`RTB0}K(#LT{Zz!pGFpscp@KFK8@X*DjfH1Mh~0@WCXE zT6^@;VXYqfCGfR!0@@AV!m%JrWrC|HrBXux3y@q`kZ;BpW}`xfJrhT7EL_WuWHPY_ z_}$=NMQEbVLVM6)KFjjN3kjc)8;--0qdZ{qrlV6fPSF2rYwej(rRFd~U>|iLxJKx! zBErG(1Sgcv;;-gl;%5An7@;B8*si~Zwf$AWEf-o}P0rX0VfKTB#--#eZja@>LxW~( zCs`zLw#e}DOB?Lh5)r}VN;>x$RAg}{a8AV48DS9`5(pxy+7VA|$%y97R!Rn3ASX{* z6CE|*=v6MnfMytMCH-j*4V$m~%8h2O98$;(_e`X8Kf0o5I8e1`s7m;uX1OY&7kur9 zhT%=ty-G2n-!eVaC*wIsa?XKiXDr0z6|aFyT*VaW%`CuXhm-C=xD-#|G6o$xCk=$L zMXDxa%JVUAk3XO3Vul$w2D3BVL=ej-l0c~Mv9Mqs`JN>)M=&5i61F-(qkR|i2Lvr| z7*i}RN8<`~4$heMOj(eukuEMz%1}AP7{MM^0RqH|BifDZ0+TmMbv0P^YkgyM>>P(8 z5|h^i+{H;BECD3KryE0Z@|5u~WLPa=Uj&|90zvzguNLsL8R&B6i-zYi6>a=eA)}6j z+KD`pMffB<@yT%r^rr$lL0aLnLEeaWqZHWcx*GX*#*p3{bi~xmEeLc0G+!!`iqxUaayWZ0w(B86L3(ry4Co|ql}`i< zkPDd+Lsd7p1bLlZ@@2;!y&?SNvo{1KL(3CjVPsvsR37k)LfI>0Zbyt z0Gvem$l=8E!L!h{QTmNnMPKHhWwXw6?8tJE(6vOs6tHxAA#@2pUf9X`U zIhf4)y$RarFO_Y0aoX+Mjs33Npw?>aw@;4;^ZOq^`fpt%KEiP^J?#y-q)(sX)j3U> zpU%3at8dxrH*GINO>7V08lDmwq#@9RsmrTXvd%})aR zE@#%gv{iL3KYiNd40m9fq#^|%*{hZ>ix|XDr(J2dw!1Uhb!f~R)2(S|)cn-iZ^bW1 zErrY{TLOplZe;NI6E7BOv*m8Sz`a#~*8iQtS zeRb_l?MZ0K2H!yvLrMf|JurQQG^TfodmBdUP|oEQ7&i1?%Jzw`z}RvQQ&p3-w>+o^xhagXx`pIK|}`$P75d(6+hTvng0AZV$i> zKnQ7FmMe*B4Y0XoxP@TPY1+nMt3{<5Gga~Yd@{241bE0^S97lbmcu0AY@qiXjPj)R z@L_HJ4lY6!*3{5vw`;5K_xG9QfwvD9yyWXgkCN9M08bvVKZUL>@f9$gtb;t1p(_AW zjTaA6#_Ge*jhX`CHh2bR8>DEsmJn;M5F8j$(zAC~w+&MD9Mu$mf=biF^(?1k|G*?F zZ!F8*zd+HJ*eg!~JNW|yZ5YBX2B`BUf5ZLIJCV6u$|?GU@ka7DOz@a#IBIuVwR?;V zeZVp|Luyb!U9KbAPLrz^Mflo-fWqoV7w2S=Uje>E5k%G;L1j2ORrw2Z{L=_2OIR}h zl}(uUXS{GrJ2~gwXLAtZojbeI>@^=0U*ou596O!8FT8uCuPOgKHlg+^FdJ>C&l;oU_6b?&vyzH0uym;793 zho280atxm#eq|S&CwE8xGX&BXYiQEoua6$xZ+^Z0Ak<1ykD5u+4q!Tg{P$&r<*p7F zFeTmKc=EFiK0+_l!!~P2OG`+>hy^8d88*Vv?G2=*jggkdJ9zF0ei6XTwWxF5c_~y;O(!LNtK9ZxXqg7r|gN+ zC(>z_>+@2%M)&NlFw2e~;QkSKC(L4Bdk537T%RSv2Iw}buSgj637#YNn4-ly2*jYZ z@M_5qjsp81Yjn`orDL~hd-@CZg=~T(0SG}}OXD}DtlxU8wa^M%W338fnDP1!rLAS{ zTn8;fgjT)Ui}CyI+2rD6ss(;^Jjq*Y_^7Mc{yPY~#ss-A1t+R&K`%)M{{!3)Z{dHC zE@=9;@8PH2fx?vhKmJJm!kb<20DKU(@0n~}GMa6bbS*z17#2s1JS$$)Tk~`o@-IO4 zbrlC%y#aT^KJo-8NswNIsqq=O2_A>D0$#@%@;@+4TnfqtV1HdK87q>1-ml{^`11P) zuAz2G;HQWO*%A}|oM^Q_;!m+=dHu+yjw5eD!GYR$ilce`UbR!aG#KQ7Uhgl=!iv46k2S$kjm3tp^~60PZ)&=3Q#tz7lJ z7N}D)dw#Ca;5B#B?_cB}oedv=USnSR+eY}!NjN{7KYAp*giHhtzWGK;fwH3aT--c) zf-ZOFeE8n^O){T|?K-RX572P9^Zt(hv#$RDAFV^~3A=jm_3HbzRrx~=ZTBLOw#*OI%=JEMPf#Y}7~5#+N1Uqgf;hhn_ zi7Yy6zk^_f-$8l9?;9vdg7OxyhO&0A(=W0Lh*5;xu^t zLk}dOY_Oj6!1`&S0Vx$5Y$OeOfJGnw8?0NsBF=33d^#PS{YZBtX)nHU!|n<+uH_oq zgEl0OsZFfcw!*}d!fVIRC6WNDT3nZ~FLbQ1Rc0pO4IQ9+!VqCJf`pOZ3ElFd@?*vT~FVp@RGM1>Dv@o!u`XT6wqbDn5+Oy9k`I8w$H}>K6YCQH2r{L zm#TYE*33O^g-mQfVS2FFUVp$Pt$&k^v8ZM?4D9P0Yj@Fhu%?6$K_sliu=0E#z6!ikm)6>`;eg#|YKORR?@$ss5&%rPlqhDuyM zsEKhpYILHc3k&WCi{=kqRRJWtG=LG2 z2c?V9dz6{D&G41*A4qfj2Z9Ly*-+6U><1c!-xte$fq6qVQ``-+6_63a&sBlMd`?*o z7yy;S%2#lyYjouEKU1)WgX{v5U$6?{U_fhPYjno%Sz%|mj7TQ&`(u8(kE7mv4CB8d zCz{G4fqnc}DGP)fQcONr%U>vSJ zP4O6PtncVl>14~=68sC=il|d;FI1$uZ(8w~vR&AuhU*ke0T+ zj*D82(l?hB{!7k@bRAy!FQEYx1b>$O8yeUt%wF=3aFRC`b)n!+R`;(z{HQG7X#`DQ zjDwuvh&cj~6q>scn?LKH13T@!>4|e)QRbb@!napuY7nn_{TDe>Zj>kUjS;Tl88x zSu@nAY_(2HmF)YX*V@VYRh?{H-3eZ6CmRWvHMdP+90ZXmv}+Ym1#ToFJR@P7&8)@e zJP+ZyMEoe3BHoARChj>g3eUyyB66|0#lzy&`I`8l(OuyEN*zRVJeu{Xo+ggCAqyzt zk<3NfFq#cin@J*?I{InztEA`1bJ-xti_9}=D!<^jlqmkkte@qe6lT~KH&>&nMU^D5 zizWq5-l(4wyyAqhJ+F28ng^1M*T${1LwRbPx^(K|1L;;EBlz?-Wj%jIQu#m-O2cYtO2aX+wQcj$y~ujNe9-;83z0U98h-jORyk0 zpSrO$S3vF>Pv6dt%`y%O0oNh}3?+p^!o^3BS3dwmkdo=k#kN|h-34F^w8#+wV`%Y1 ziRX)vaPjJ#uW^~HnKTC|urQ>n2=I^tLwkGTJKC2fc&OW0Aeu`HsmHpLC z|NgK4^1$_r>La#`!Kg6?wFNuOpsnA~Wc2RcyLOCamC#oC_VL@^cp~me4OD$B zL8>0UTKhBNKFIaf+p8Q&roir!2w9tsEei{QZq;AWf&wewJ>P!z{i|mjYUQgKi{AUq zV$o4%_ZP>a_mWuj{${^h6=`nK=-0=hUlWPG#juYKDO#)FHjs5O`Et~G&x4u$sMq?9 z9^GU~fcdC#&^pwx^1;r51(^5bH`0S~5>Orj{VlFM4=_KxeLD#zKkxwaeGf3-$3P4^ zXRk+HO8d{Gru>2c^8*Pm-_*##BVgHZ)UChx;ptD`J=;SW$GvZV`04wn_12LDe;;=_ z_dEohYk={_?06n49z)Rk8iGFPN<#$L^g{^xs4>_YbovNEKW-g|FZ(Tporj=vNPqbW zl7|GA@81MotpkLgA3Pko{pA4R=cC4uK=&OReafTH;oodthC~5GifdXyC8BZi*CQaJ zmPbIFI%vl7a5j)at_Z)=)c5xO`MV#UJpOL)=?~jK zyVrc7MZs5@!`uZ=o)_dk7V>J|#ZS53__IBs-ms=m+9B{De> z(Vau3v+-%SwVvbx6m|nND9-r$A*x#RwtAI&#op)DT)9zV!-hDe84{NKRLa*b7^f@SeGe9><`&J+ML+8v5YR$U6wpe%@Z(1kK z*4f98Q=E#E?i=g6*^HeZVS)rK+<40ke7tgK+?ef!p# zo_0+69cF#r#f12B*u7Y8oGza?Tl-y15IZ}3bg{X=)c`CT({2XgDLg9pumFf=hhUhd zYdHp^YC5$=0@m5qS>Dqb7XR^MA9K9Gw*@%#F${JE^yb!Taje!YP@*#ATQlJ%C&VN#W+8Pj` ztGcW2*dcmd`y?rFLr`_h7f){uz!`dS3G+p_4zc%NdgJpt?5kMML1Ssqwnyx+-^9e~ zD7Zdm@oH(b#SZ*Q=WXCA6A)5(7$)7r)Y#&yEsknlVLB2Q-&b>jvLP_&scXdI; zp!s))HlzL$?A%-lXD*ZLZ#EBga+sRU}zl8E*8paYrq%0qDoekAPRGJau)3JB5) zhvyK|fI@~RVr4k$BP?q`b|$h@38zW_Dq&c0I!dPjXC#i$xeMSvxEi<$+5r(2N7#RKh1lLNUqLUhxL0s0UDGDOh zH9;}f@zD_-!!*r$1!k7{^C=|se8)&v^A??rZ-`0WQD<$9b4rCcS!+J0)}#ftr+VOF zqt|q;ttae#);$1CBQwQ6A3q-9XA@GxY)eUO=NJ#1zziFw;K`A?4qN-u?WyqMApqIO zwlrJg1`zWEdwYU_d`L_9Z7RQwqDtoTm!2z++6E1Y|sy2j7j4Nkb0vwt@eSy|F&A)<=13 z${9oN{@C6nm{5r+MsxJD&cAwWL}UFm(W}+_2S2(X4x7v;bI1BDXnPUfyg{%w=jiq*P-gLl>kntuw)@H<0^4x)Q8%kslaxwu#~fkTXwP2aQub4yQnuG5%;mHr;Q$X>Psg z9PpnZesp$rJBN7p@#6?T(O|?kM|^Y0-`*fqzB31jY_?9+kps8PRDXjSGT$O0?H)JI zFehDb2ZLi8TW3JjH=Q^5{SBuf?I7bPWJETE*1UkJLHv5`BF?YFR@9CdPj&auk)muE zBf**`&ZUZzf_&$*?86Fb7I4%qm#KHwiBqBPO5{yD?QCS?W-=GY;EI`aHtq*R7Pxf; zvC{(!oF#r2=JJny2c~pLf7xv}dMPEWdUi2+xXO|4ZG?UhXF#LYK&g)vMonY3TIT@}qbWOystaGf=IRv4_aeuq1I zrMw<@))i0eE6;^un)>xwEu1et2jw!;Z4nG|us$ zv5#zIY}bAhd;v_QkJ~=1C3eNg9^1o|1it#;1o?c?Cr`ZGsZzW^NA_Kp03uMI!HCAISIvYHm>m{wg z5rfiu*hJ3gR<}nqheQE8RlxzxyGz(l2ZAg4bmO@mfad)ZkN=_xestP7Az`h;$Q z&kF_&TxNNxoTG7hK12Nw*n&E%pO)&V(S!Pj1B&!c3zN^3vcdr6XcFFq=JCKsYggNc zK&dBG#Gu{D=|-a`V}8nXCDSa|uhBum413+W77z^G)?o4+wozf`91Gc6>ftc7`hgCP zI-t~#me)Wy{%Nh-U4;_*$mRBxzx+I0`rQil;hWXf`)l8Pvwru^{X47Qe6v>A2yXqg zqNgfIIBc#ULBHi@9C-DiK96FY{Q(3)8Y^(3TTZK+od~o8OqJ>g_$j+Nq#Y?J=RKTb z_yzFuuyY8B@6dJ$`;{PDDxoCkCW&9bzk)upP`n7o#ah5Rrvkc&TcUylnO*zttczRZ zM&eL}$hqD|hJ%yu*bruIThPp$i@#xkqj8dvnR$+x$zlI|_f$n$5KtI@U-SPm@ z7A9G@ytF1T-9o24XdIE5geI$q$FTTDXKx&a7NCurNnknBVRoYgvq0nw=?T*Svu{oG2G|y$kb|v+ zBe6$yTy2!3vdRPEk}Lcca_Wy&iW%FnXf`|h0&-y&TgRP)ri(fGYJBDiK}ewc$JzWm ztk(%c@;-qvsXl}v$D;Pq7E4Q5U9+EeAu1h~5o+A^@gtT+3_I!`7LVR>_s7uzJcf<> zU+PP?*rO({VL}ao!Kksa^YhPt`Ca?#rL9JD=jYwaPak(z4qEk}fBxO=deSOqBZwWb z?Q6Eb-fC=hfByOBM)RZOPGA}OV7JMRez%4e_2yFjca>x@flLCq&ieY*xTy@qAyMya zkWg-1Db=c6*LU&IBeFy^Nh+wqUlRpwsP@gWw_@W;;nc>V^m*$52=(zJy}c;DNiPhK zx;#^n+b>PYeOttYjH&j@TQK5M0uGRX~*47VB-T2Vm)t}vwG!5LttBa?;)n`W{( zY@-$vbFR0jBt@S9?5hkyvsQzyO=w7OHl$mKSP*xi!gflZ!6Ma#H6U8`;T;OgfmEIx znuKnfFNE%ssF0-sQ^k=<5W@wfq(>(&#*f^R?>v+OQy@Be_&{=QBrHLSJPJpvM1_(m z#6@-1N{E}x{w8SMUh$cO`zxA9@WB2`JinQs4|GcPK~danYkLxW>>a z!L-m!Vo~tuIDY9A3{NNV>5JYe9-PDn-%AmHJe$U60hed-nNoVRJB`m?jn47lP4YnS z0?*FkvwwksN=Kc?hqBTqlH`rn=kdk2s7c~g0`LZrF%AiNbMKDB2=Orf=DAn6#Ru=Q z$7}bz`TOj-WqqLihxj~Z2jThO3eUH-M!$FWIDZ|-d6K_~18u{(y}7+}zT4g2x!{kt z{PB)I-t)%?{`ebzJm!xlyNspSri*f$QLo#mErlP4{DFF6+pq%S$1#6Q_~V2>ru+d{ z*!IpTf4t$3Gjycpi>GCd|E&A;MpP(ZIc!x|b5GKcYZPr`2;>!_bX6ZL625|KYnH2} z*O5(i@T{r(GyfK9Bqv(Z6MuaULWrp8N^Ee!NrlJkn+wg$E7& zv{h$702+;9a(B51gjVcGZW@aQ)0C?lcdq8`{V3qk`~+usMZ4bC0WLGYIDvwHKBHVP z7vZ+KMKJ^MInZut@qh#LQ)fTfjPYlw3=w=KMJxcRvre~NP-zXUuIMIAjhlLnN(G>Fi^@*shD-l#<1@pN-spN&~A{*R}y4) zg6Ikw2?r7MA3wea)ji=3Aa+pzL7%{zZvW9LJ=Fqzq3pD=&@0_TTZClxQo&3bFxXPt z$K9fhO3W3*hlmlIF-B|%yKR`}wuVTY!+Zw)S+^Lr*lh$&VyOBF@@{(vBYjez_D-`pIq-9)3AI=i0-F-_N zE6?+{-Df-7yPJqn{T6%t?N&OwP7kjzuij4%LK7m}5|`Fb22jc@Im-hZtB6uyO1noeew9V-j^Bbhpv8^ zwEA23eNk_Ij7L63>j?#eCuHDH$h)7AV_zocsslM7pP@d{f%v=45x;(FJ)scrgc3%% zk40ZVSa?EV;R&UaD?VfIkU|PAJ|W2RZKCxhMpP1*Ck)Urg75@HLr?kugW-G*5E{|7 zmy9K3ELJ)4Euefnb`pS;$^F4yQIt;#HmPtHKgTBRXiRIs6`UwPXKumvQ>G@@J2x{W zQv8wFDje4m`O&b&$GD8_07V4R0%;atE(s4VWl+TaI%~9*p`HhQOIo>SRK zs6&F?!_ui3l}`l%tocdl>_PS!w3#?R7=iTR7-SiL9I)RFQV;x}Eb8zc9wb=iFIPLg zmh$Ef9*pR3Nu?S{NRtZ`j6$mqXb_m*m^jJwlYSF(ViARLbMvskX<<KhXxv@jPq{8l~=1lKtM6;mNsf@QL5RQH%6WYP_73=gg~Kf8g;s(F=gqdVD<1=D$}oq-8<`>3|c@D zJ~|V{=j+$;pbffMg{;H)0=K)nYhJo{Sj2hS3JJB_xA|@I;In(l;q*P^xxCYg_f=yM zMB#|%-x%yEbYiV*nD59Iir`2=LfAahCEv331o5+yO1Lly-jRMBktOVFB}P0QX=y6# zGl&AitFCFr$Yfc;ep}8d*1;q;Iqd3M!V{$T_+;E+zxs)a&n&_8&K;_mcS<(h8=Mg( z`i>H)r92%9o%bgIvRPIu6Aj@{me3UvOI1EsARXBT)ln!XIFvwmhYI0u&F(ILwF-n@ zXeFi4%EmX^$I5e$WdK)hi6NjWy{eA;Nr7dxlMB@J#9fKFaYZ4FGbs!L;e|&YD-114 zR315fUBrGo#K)5J>UDtVyp<7$Z0Rp?W+^NW5Uk!p3R)$880?ztds2-;j{oT82)VyU z4=1jaEG->1r`-udw-6DJ5PYgo$M{zWg*HCU8y~ar3DRh%@teks(%nf25ts?awbQNb z+yQrYBvG{K+(D3Q1zMI&z13)`x0)>*{~nKMj!=nYWqfiv8J!?FQp!>aeoBDr>1^_0 zA2I_@h-e$$OATO-1Y0qH0aKM62gfc@pGfn9CIIKQ2Mxy4 z?T_LhjCXOpv5BSj18cw)P(ZiM@}CL0A$l}HWA2!9ZZDY zhDWFXj<|lxuZ;Y_<%LL8gLpQZA`Z`Nch!Oknj@=bh{Tq#a=;4)C@h{i4Xu6rXd)7J z^B5(aB<5otIT-Q?ZjBT9?HC-#P_lCeHnJ3Bjro*}vBZXfZ%V|%TzSR`H(G z#25Rlm%PCA+gxtC!XkB7(S=*^^$xV&W0gE=n|*F{m2Rk=&{&b zR=41X9!uq&^;%c;L~7%i%DD2+1NfFb#+n2N*TWnGUB-`&H;;iXN2&xOgkb4dF>Ml} zAR2XwT~M%Fbt80sW^0Z5(h=$lj;9U0L=nwo!kGVjx6 zDM8~2B!Z3zRFP$0O$rwj<&SrGn0mW(bqFce_aLf4DbXje{Z&NnhIi88Q6v6s;zdZc z!sII+1+5I?MRKH6&se-Rcr7Njz8c*@A}iUE=HI1}DBDaU=+Hm8i~8h1Un_%>aZ)NM zI7beIibmm0B5WYB#>K2l_b4xC!0ouggy0YFiI`YL|HXe zYRcr<5xZn^jtf1Avqzx`*~lJ@M}g<+<+|Psdey86(nN!r&bEQ5X7+_pX>assHGF*v z5`6m5U*PN0!q-T))H+?xx8Eq=h8rjIR(0QC=feEnz)Y9V;*HMYAdGz0Jt2VSn85tu z*ky{PC76uRb$YC^FJsud)BgE)976u`lRf#gIb|K%1m{H2Ou(-w(u+vrDtv7nW4YMK zjf$!%Myn%OPA#3Z-=RV=H$C86(*I`idmJRF5~vGC&*heh0r1??;I3s!(l4jJq~sy$ z*T5(i3O3;n6zD;)WTfn!yHc2^WZk|AuW?d+rEKGyOie7Dj4-|&j=s+v_8Jt(NLnE@ zeiwFCo+>wtRL~wCT4+Fhu>3&!97hv0X6{Mo+a*DnfX`9R%VK^zO(5<^q!~9i~ z$JsI@!xc_%!Oxz($0bgzAedNiIR|&mgZCHOv4Ywu$-kUcK*STLm}1U`?r> zuEGcNbI^zAkxQLB9VGtiHOnOD(t-%Orrfwvo}?O7?v}g&K8)AG;2fddOEQ;i)u8)7 zUj6WW8&b?1wm%qLZJVG(4iV$6Td*^14R*^xvUf`c)pWQ(RC_TH`RD1+XInqdzh=}h zFrs4DK_#8jps*wLH6Dy0y88hcQo~%L4IihYxfJR2&TwfBtOC9JF7*B6Uu|d0ryk~@ z+zyn!S8yKFfZ#HY4Fy3c^unkrNJ!ytAnfHG;QIu?=nX&M8k%#+3Me@iKiLl^B2BL( ze_`|aDURU?scG?#4%{K{&q+w*v)70Wx_vwUTY_nlNBD@0+57z07vG`kmJr+DaP@TBx)9ovMR`DuELDp%7Q2LB@pqyEUNIABwj zPwF(vfH(p=7xQgap@jAbNFFC(VwpB_Uer$!Y~C!+gke8$e*NpyA8+3d`Sug*bZdQe z6%oAa8?qNV5T4!XcmpA|!|pLCCOOomxQY-_-M#G3h98hW0GTCBuQObZ;%rPK zWeeAWef$V0R0;Y0L^hTkZ%F!*6qWWvUOO3sqaw`}jtVJ-BU^%4nfCibmXYJGz!M4U zKUKT4IpVNvzqbgVVf$a7&Q4G+!+~!PGjvlEgVmnHA;MCLHD_b#>}-PIuSr|C7SHt; z;O;*^d(8lvo;DmC#l|cxc<7`V3 zFtaD2A`a4zfc05vLZ`rUr1m7j*`Q^?vXHlu4o&*b{Yi~)-FqGEfN+O!KU!ed^kXGG z*pvo(y9?Br+<64=3r-MCr*})<6YoU@TPweVWUOE2*$4|a`SRfgsKr3c_&{X$q=h1sQC`kqcn<0?4Jc;7jiBn4p(wFM~{Y^lyN%{tySQl^OwsdXO^p57P11%2*&b#K#DCJp)fmp2#6ML#@8#8NhLJdY&pw3d<|J zgLZHVJ_jBYUmYtV2C|SSX@7x&_7VU4ooQ)wA$f&xD1ta5`{$95FYIDPR6Mjl8y_5A z_kj#2ALzXAmF!m{>r)YjJc1AgRm#C&mO~tXuPd%9>~K7}!OUTS_5t?{xwHD$X^&Jn zJctZ#Atki<#b_AfJ~6JFb$*^=hUwRA4l_cVeysODK!)zH0rgkE<(=i1F`4gX??z|a z2s(wHL9e#Ihgu5@YJzORFvbFpTl|5Vil}^oUz+l#8i5a*9eD?1(mvd(B`bWJ>k7 zMy4??qTAaltI+O^Qpke|1VP-?lvYJfh@em|={+9d=y(k#$5aWS=wjm0s|$F)cvA@l zRbHMUu}&k1ns|(mCn_GeS1}p81>^mBt-fRwzu(-1s2Y5LhH4tt+sHjm5-0)D`hxfA zc8oJ34=aoNNTMW4tdaW&0%K!Bs$zCnd06a6Q2jku0b3SwAQqU zmHx%~`HVN508?3ulRW)TlohAF%lo0Vgs;Vew7AfT1B$*YpKB9jc*)P3YWX+Hns1&OIsW zT`+B4b7ZM9hn8&+0-a*gI<&+{3(?sne*d!rH z$@>8b)RisvacRsvYw<0gBz^QJ7l@Ea26=)9fx1F7DpFTvOwY2o0~KpZ>QHy}_arhR(kR#UFKii7m4E_*cDmHtsD?c;8B=4*v{d z=fHe$DFR_gRW5QNhjhaEG|1AWN7=Q6#XOtru}lYSZ0DnA6IfhNds8UTaWTUB?1N?T z1wbGeG1>_RlkG#WO<}N%gmkurJ`G!vhox3%gPf(5g(j^t4sU{QZ>!t~@@Oko1mPE1 zQh$8?;yY2S+qh`EHyQs;C4+RPHqWMRSu*|})UEGFi0dO8E^zvr$O_g~P2>jQtPtMP zjmkQSyG7w3+0Nt)M~LvQo^m5Oq-moQm^>SA5)_rxa>VUme`gZAsFG1~j{h|J@RA}a zj4~A?_}e%Lq_4&XBN<>5Jsb}XKYm=Jx5NH|9RW&(xo@AUjP9f=Sr}xv%Hc><;!w>? ztY;skxPSSAJ~hV4#|WxO{;CwGOpe0sH>tSPJqK)DOHE&>92G>?I%FowQ5n;LLnwI| znGK#xXuCF6CWB`vy-;K>9fZ8kB#6gZO6Lx%iQX%CWWUH}Qo*P)`1mHO-a>sPH=|Nx z!CiYnW65@#f`@4=iTvRr#02jkqvOUVULl|#9$buvDtt`w7WYWuTB-Op;tM5@Ap))- zX(aC_vjhEDYtlp1NM4@LmQm7rGFoQsZ*9h#tH9VV*eu5>-aa&HTr`mbopgarfdkwQ ze@YLL$w=?f3>Qj$NKa}IW?1i8bTSCGCec9e5`tqYQJ1l7;lY;1Go$RQJhFlIy6=;d z%3zf2E#q3U2YK`C6*;dw7!UW5h&o2p(4aj+g--s&pYY^Rbi!M8`QkDX8bilJ{fVk% zA92muo=(1wTMV^vceGUB3kQF%zBFyaO#jb6J%0*qPa4s?#1Z+gIu>EB8cnw37tLm5ev&oVsT+yeo!5IiV6WPCKIy8_9Mi1^p=<57RIK9 z1_()Q+X#k;Rj&|flYb^2`(zRZS!%M$(*)-64Y`=j9~;kj7|8J7!>4EC=MMq!liAym z>{P%8&=q_BY=WW;z2t>VlL*BD=@g8zp<-=%P;Fo28#|EsCw2nkH_--rmYm7WO>yZigaG)JdB@mvi0ENhw_xSsx`w>vmzMxTU~(fBwf}qVRj5iX z@l_LobhtgL9N7bt>HO1tUAQdGiB$Ag$>#uF-qg=r{6IY{?&ZQArY=02>m>uai=N5n z9ycuG8Q9wsc(yMPubogsT8#WLFvh4{@dKpvR(1rfkhYaua2(tkbI~?*`^&$tI@-d1n+#SR-X}A8ohzgRy2Qno;xxM(5gIifN$%gzRdVkFx;C z^jlEod^8f&2-{%Sk$(BE(A*FAqEGyN;WLEF$O(M%;dwH(co<|j`Bn)5z>-hXJBZ^} zeH`gUse|57m95wT>_yc7ex(9z5jrEgV~I#nin_r_V1%u3VHZ%5>Cj+L6-3}U_{x~t z7GgPQM<+kR={7qq4*&UK?XNILkN(QL+#_jd*95{KhPC;fNwM5xDiDE2@E53mML zO>Tq-@0c^ss#Swkpf=uzTYSLkMQ0ystVR%WhVdngq&?(k?c1nr&=tLQjL-vGLm#xs ziSZXWnNYUI2q~<>wYwuXSu=2I+rQz3fe3O$G|+)kVLP9S+K@Nw63A|dRF1ep&ZWK+ zu-0h!3;vd&2p-yPid=l&Xrkx<%YZcs|2e?@=@hbl!As3LK;xp zbc%kC8_i7H*G8~lmz~9wi zJ|Y+0a0KWk$!x;tF&`ZuLf97`pJa?*`@!AuUm<)yqqeEI7U8a>L4_d%fy-#l34`pj z3E4K5UkTL2IrtuIRDnrKU00ugG{PLR z7l<iotN^6kd0VEt;gf>Ym zKmco}hzKw%g6H=ENNWjyd?78*`0`NfG9z5ths&2xScfVsGNbtqFn~7cAi*E1$#Ps? zH)1I%7pG0J|5;x+U=WfC_^pPlMu%+K@A1~O>R=OUpQVQ+?o2)qLZ z_HigvER6Vr#6280StGU-cWj_IlI9=_p~e-Qjzo%=ijZtNUa;Awd}bT&hqHEy>z7qG z&33Z_XGCL8I#J?;bQ}lU_09@ZmJhArtZ)N9d8dp%p8p8J=EL3=uR#uuZc}?=3=q6$ zEVwP7$gKX)i_rya5yb}|Ke`DaX{FK$Saa36Fj&Ye;!=%y`s@PJO=c9hO3J3d@30!3 zoFaenfaVQxB`d>ch;6Tu^rnzd>xZd@zHx{z#W2VS0aS97hq_wu{znmAZa#T7k@v|- zF7!bDmB$aHJ>YFc50$th8vo*+RMfgzXON}erJIu~Qzo);poX}44#z_TIzvDvaulG0 zEAbZf_fPd8o0Rd-p&$eH*#D)Oh%A#aBB`4AiWTEBx20jKhU3NEPQ7<=K4Vs1f2&^a^q1;*P6bn-o1E1-ymp3<6bIEji}BrJp>aei4nfwA^8!q2w|cop~`p^NzQ3qMZyCv|B0b}h>pV@Xi!(>?a0ep zfg7L{ZaObmeM2Mo%^@>%8`Mu(y|qc*mBFD@5-=}ATf0Rz~PTEHoV zK_9I(@%5UfYva9{BB<|JLktXs=V0`&%kWh4UkEs*m;cjV{!j3DDdI7IgRF?**Tbd# zuc1~SJi;Yh4GzRAp`v{!f*5TQumqc&n#W_=Oa|TRiSO(-RMwzGLeTBI^MHQBAgR zkS=gxH^qHbv*9 zs$nku%DGq+MXqjOGYh8OWK)y5kgwekfC);V_r$)CLNGL10Kzfz5rJ)=2Se{QnRpct zz1hv7m`vwNFqQ%~<4j;%4e|vfShp?CVIT+XP5u_MO7?`76J*U0X;QOf(sy;w6rhui z(G9hTI5Hk|QWQh=wuH&F-$ERm9l`fd^^~1enTB7(&jUGOsh-+{8Db5oGdO~*XUhvy zYw!3xu?agI@yP{~H*59<2wE{Bb_!!bD-PC#B(Y$=O}}Usa74rp=t>4b+yx+6mKFBy zZHJkC2mf@X>#HS(X`ic((Fh;6YW&QM)sR)xvJcNQtm%-!>|bRD9)5k*!$iem$%o|6 zL3N?3Pn)pTdCy*-Q!vpkj?}{yC1HM(#gU!K0hd@7_NaHrya14X+LhMfnSAZM=-r(v-_h4Kg_Ctp%2{u8EBv}5qIM)>6E z6cikn&u0e*6AJ)3>f$CgWK>9u4@Hw@I%g4!I$s%FoG~x~F++Gt0R`VmpUl6&SFp8J zd^JQpPDTe6zL@X}#5z@cVf~XZo>~7VY>mL{iq=r&k#7&GUp22OzeCKFe8+Iv!YpQd zkDzUN4`L^I;=baQ;scw^DL-P>35H?qBd7wkr4iJSf{{^JXoP@oY4mnBK~2@rZ~mwC zdd3gl`|1&}6jC6|a;Z z<=?;O_XshQVG*7@7@Z|6M3Ly(iT}N@M-2&I8$^yt({^^X|;8^FY9mvxJrWPg1YWH&WQ# zUKAKZ=NrkzD-@afBJ=$xO`lCuH|e2I@@ES~DhWq-J_s|%Z^sj_i)~;sOhO^;sQ#9T zF^RQwuRWfB8^kpf@k>pqd(czI=jm%T#@Uo!LzZfw;4@@KPeLp;vsrO+mN!Hv}o5k{Q=lP=ru&^+rzeRVS^VI ztgWnS`VQk08Wwkh2nzUCh0Levh1Vw=ewQjyuzh5<%*j=@%!E=~%3%S`Y2IXlV4hMb~7`ZeWcJ|Aba}HV*cA!IglX)$m0_-az&UF z<1a8AjXA}*5A%#Fg#sVBemJE{)uU;mdnq8w1HWK-G9y+63%ZGTFV+m_E5BjJdqRiz z+8o5H4!At7kD6Nunq*W9=w&pPDdINg{y%&aNAH1KnM4hE#8`YAc2j>b)4?%H# zc{jFl8v1v!?o?FpydsL=i*@H*Zdba#SmYN4;kUHz;39kR8yCDHC50hvr_?`F8>;-y zD6D0r;ZC4ogwk*A74#MK5AAD)244RSZ}I-!trDyT!E#T;9(2OGe%%?reS6q zmCo5fDqUr{&%StEDN=qpI}=RR+sxL>Hu{zZrXPaEL?Gz!QSu%s01fK~-5EtKE8$`l+ldNJVbBX5wb5jkm+ z3HU9HvgarmfK)$($jhNe)d*w_jwYi4sVcMbaOrpya}w8}Hy47zUeQv1S80t;Dg>|~ zdsWx~7BI(D@JgD*NtxhRO`O8?3Vf|>IhB^a^jxCI_>p+XvTm;{c`lwgy8ODK3hs6F z&WjZ9ImGwREPH-KdKU=O+Ugo9)8}1X@I_PpqAC9)uT^kYTA3aeq9M?rptXjQ=vNWU z>jEOo1Zn~HS)@ZCZ8uaaT_;I}Bm@VrR&}Ip3qq>tOhR}D}UqPJVUlBQz+## zX1;siHxj$!<}o)@-BP_3q_C~Jk_V~n>jsKut!=G!23XNQ)h**T!^nYD?8G^Fg^S_?hbJq%qA{7Y>eYn)6k5h_&Cdq zjJ2`=^aWh~gTlHH`oc4x(cv;5e~NPgUmi^l&JQ>DABB6Z_Px|6S7e$3L*pBm(DK@D zl_;LNys9K@BEU<-YKa*C%s7qWc}zs>>=;_W#{Dn1ZTx-wYhUcKzp*{GAa&oI%P^-W z(Ga~dc6RYb`hIqH($kc*vK4kR8}{ah@O_<}_Rf*1HAQ)1Tx7}u;O8iN4PQ;TmBU|F z1%{AXj)YWgUdQK@#-nlw3Zo39goYLuiWx`9F_O>@_f3InkVi=3*|sYCQX#NaKbgUy zq*V^m68DW0txGUMwKA3KU$Ef|`1zZtssPj3Ka!)$Bt1t$)07gHSD0VIg_H*+R!zDF zV=$ewIJi>>7ZWgdWD}jUU6eFWd?JS61TELdAK${vqSqn!wmQ}Ke^U95)yu^1o&8$SeR$*o( zAS9Cvsr<)G_J28((gRll18HmR_Z3#B>sXy&+3Peh?6)%`m3UolCQ2_q$cRIJ_`xKR z$aCGH@7$-l_T_4XFN_q?0bXGI-`OpApRcYtpA6bsk&os_g&~pV&b*5A-HhF_-aOqr zx!;kAZc1!3blgi7jHq2WK0ol&I<3Zh)qgHm9~dtL4`9Wd zpf9?r@L3w810qs=FX@yqA|#>XHUtE}xG%)jLl%KSJz99x+DUq^Iz+rp@&bi5j8~y_ zTIRnSmRVKiO&-1Va^)te}R9%a#LNRX}3_HU9TinZWgx5LK9`3yE-?9n=j~eeKQG(*i^czo#sA;P;;$miivFWS zsceraP_#TSF0-3Q(uS%$B1B3ZmP~XCZFpBI8d(XR)NrG>rt&(ocx~zx%3Wfs!EnW^ z$xs$Yu25Y-K5rCRr#^}WVrw4l6ouE)wTUXc7MlM6${=m*=o7lUMs9H1-oQ0Rm170(>TAy(ERE2X0Y^06kwTz zz)21SAY23*E+snsc6Nq))3UI%qE(gnzl1rqSSp#8|}70n0U2^RKdfrRaZ(?xzQmF zr>*kcy)ucjg?edOINbafhr^XPEn?wVGN{D&V5(#VsPuVmpix^UN<^g|Yv-z+`%(*t zD-Xts_zt0TIeXNKkoP~YQir?QzvRE+o-nw(6DnJ%g(~-fh9iKBvj5$h6*d2jwG&V= zPX)nDa}{(f2!hwe%l$gd^d^D#S|`qRO)Kd4D+2KIYY3GeCA%9^4-$f(Tz)QOH=8yH zd5Dx}SzZtQt>2#Z=ck*vrL?RNZ(bM3wp~>m?=w@pKwh%Vw2E|b`#bl=7xH;kAifZW zb08ltqWzCX7^;qcpbrZ)tH1y8S9JZ&&by;;BD9p#lFH#@)yKZ#V5fGkN~yyNU82Np zCUlHHTj-z->Pt@h7o)UTU#Q4htzU-4|NSE35$7%?g}ax>2)yVF+x(}cLU?D;lJItW zimLu_Ae}>%oTIR-7lXiM-K`T`+t=Z}bi5jTC>I=7CC=yRI$WYwGY-85yUNYO;uEzA z4l(-1Bm}U|-e0p;@++S*($}PnQ^g^_mV0ZtQ}5~pcH}pVL{F=rW}Dr4AcpDBOWJmV z_(jnFkH*haJh`IeMNv#lYJv)Bv8u|;e(Iz~cS2w$FyKNmJ&D$ZQd%=ES;|UlXNNu9 zz$AgjWka2i6cCVYt07$DaYEvpA#TOd&&2aMEsvGbf^&IA;$I|RsHGttK(&eWR9kFo ztEf$6W-8F28{}Aij|%#4N3Wek;gS`U7jjb*Gg17?clq5ypC9$FC`MNje@LIQEM8s8 zPPk<7DG>ejtPc)gXrgv#!9LXc(Yh<1Jb4R7g*m2h)pLfy${3w2C`v^g#~aGm>FRXQ^K zc(ywa?m#Mh@OfF1Up$jvJd^);&*UQJ^qHQ?#d2>5a8oAcCFNCu%)}=8Ad96t*gz6Y z)l3%R#MxP5wGCxs=U{?}hdu8W8hBjZ1>WO=jkm@3rAvOAt#_CVF2{J!ruk(*&DICJ z!~GS1i#!Ls_AA%TafJmuow&8~a$(>eue21}dL6Shcomp!MUK{un5{!!N!2f6wyLF9 zvZ)>~11`jp2YKGgWZd$LOl!T6x->xQ(jeX#Kk(G0A&Nc>cK?6&zO}8b^Gf^s{0ez@ z#+Hf@;3RD$EVwY>#BFT+8j`l-c(}HtEg@S-L=wgh@ZaD2Uh6sTg8;{!>2#QD8l(N3 z&+B+E`1bPAuzDwXKu9FJH!L!K3!X>3VY18GeY{Q{IC(s~X z3|eH>I*EZwXnqQw?J)e|d0@k7cO$~7$fWq8Qc?=9X`nG)le!qHLXSs{z0x?7be#ry zGwcwoBvQ3&UCG9?E z(Af4WP-Q@iKu2ho=>&i)oH6*cY3I%SpIGNJH~*u~3Fn@pekUV~TnfUG*}a1Rfah6z z1ko}giIQppy6KQWjmodSYg|hy_hIOEntYcXVF^LR#+HxD&o+lbDuwp`jm=+6NF{S< zlV+HhBb8j9o3w4aCZ{Epe$A0ezkUv>BsXz%RYT#n6k{T|yQ}O!3saI+)geRR7#4&v`q|Y*cS73Qa zTb)b^Dl`Wuk4&(1Kj2;Z0Um1^bb)mQ)pC#?#&?gmv6fQdfF~152rRYf*&UB!1CEd< z4zhTjIFd8K8C;_uaX9+Ep<8~$CbM>@EFEt~@I;hLJ`CByiO*4EVdKWXz(Ix>H*uYJ zD%0UiZsxtrZ{W5M%@KvUFP!A{%XtqJcRL;(-u{J6Oe+sw;t14J4Nq{eo zTXZ)q4FhC+mV(BeVIr(o%VYI=k^?yh9XJ^VCV`%sj+h>ii+ZjH_sN5Ga69Yb`fH#a z`dhtC$FqU!Au5x%81@uqM1-k*=tTAv|Eg$^FuLi&5MjLQ9$HjYXz`Zu$zh4^=3vz-$u4NeB zkx?UKk4K?@K!z)vgcZF<&@oF$ut*882AXKK>cI_sk({uzpz~fLgx9z*3Mu1ULD-m* zNZ?X&3JYSqCmkC$2+~-1b5qW*V$>?Ga+slp8&+I`r%NvN5a^({75nk{S(zDSmoEMbP1Y5~&O5MkCQ3xtFd@UJJG^{Xo< zR(7dCecpcawjKVa!rrQ;D}~Nws%eos4>yXB^QwoO*T&{eT=bFMjrN`T za$ql>e-56i05do|y~a;s>1k~LNj!9`4yzhP{psFY_g5VW6TzmVlWb z3Nyb{N;_;qr28OvvG{bRodTGeKEW!bXl$O8JdRKUL4uJ0M+SRdSS*eWO2Iyq>C$WqXN$2eP4vR*AM7`I>-%3o7;!bLe&f z3um>v8LR`cCk{xI0rjL^z=6NX-flW2dJpPqqbDC&V*%;Zw%ekCtuv^bNRqA{33r{h z?Jx>-Cy{dXMa`%nt3;=J>o?vDs{RqLywh_ok&-(FsJnUEkf_JjFYU*aa^1~~@t&K# z=Vt$hxY-<+TGWR|poe5*`(XrI&&I}%!CwfuZ7JBrF3e$Zt1r8ll@I$2SIY8uPDVet zx`1|4VAuGEb@`MJM&bsj3X7B=cRfF&tNREV6~IQ{+=zoLy#uJ*u4+(g)Ku0C%J+JE zef^P#*npKb5H@~8z;QG6;TxcYO7yaM@P=H##XDoYSw-#Gg<20si3h#ciOk%p(J>S? z&aX${340T|`lA(qq?!qZ^tM;>mW9?zWo~t**IXJv#Zp?4G{2n6H#(}|Ng1ss)b_?l zl)n3Xs_y1jd;e73KUMcnRXQGvFDH2>b@y9*vF;*p}-+;ovO0Y2exVv|zOCaoqbU5XO( zioKf{CD-|XDpu(pvfv)a#CcBUBxnCv2%@q}*xE)0`U0CRP!^O6nHG7$m3-)r2nZR4 z5J;ZjrSTn+pCu{tsaIAUbw3~p1^gP>Ua^6*+g)a2%y&w6#&Kz9RKYx&v0`BG) zHyisf9YZ6&I?g_1V|59i5^@?MMyFD~lLc5Puh6=!YFMZT^{do z484eQ+3zak_${}dnI1s4=7Xkq*|>$DmYJ-{OcsErRU2B492}8Vr{@T?9EFxAuC9K4 zV3AR*(VF(ocr}$o6wATomIFJR=_%{Q_Ieym#k7~J_BH^&VNY|tZ>#{}7zAJNDBXzb zyR5p^LUm=EuBeFcxZC*-hS=LxF=RaSHq1N3hC(K^0*ye>zNyAXPDUgx@ds;cPJ_jUAzn0u(_U>~ov)s07f4k0G>E1i`p7;OP;QhmAH^i2?$^OA` z|BrCLP@or`>&@_2ndO5XRHbg3Uj$Y7+j~#a`xB`r(tBvof3)7O!(m8MV)B9fcE5f? z=uk~|P991>hd~FbG3CI zJn&WLh`vEYt7%=9hZ2rYKmB+H6AcSVSD@=kG6L4cYT}|6X!BvH!M;xjDgfEjM3g~^ z=9(f7JPh@k$pC&1^Voo1ip12R7Fso>h+!s~(A|pqM-$gVcYF?V%L|E&Nq2$7EVQwN z(yT<>HqlEhj_8oxA447!Ee7NS~LK+$~loUhug!6;$x=Bp(+PNuWbuOLa&F{ZCP z&n^A0feua;RwU3+;+W>>{@hw69P!{n?mJT2Nz@fJ1U*7z2HM+yfN%+#xur02W+BgL z@-jd6Ti)52rXFz(d`-OEoo+J+>K8Z_g#C|PEIg2HkUQMeH+m^3kq~Me(cOUd4^LL7 zqHPuRG{a)%COv|*1sJ$5aQlLU2|RA9X%DW~XSxac_oe*@#chk;6^&TZ5+F|bPw-wq z2C^<@nC>y*Ghy)G)^e{$`wtAmWM7H$N5ilq_wMrdN)K$1e`=+NkLv@vDDo^YzV8l~ z))8Ko+ChvxPx%O5>@r97P`wa`ch6?CDfF3gCF*VBgd-(>TvqB4UW@u#h1Z?U<*&nH zAQpLaq;Y3@a(kBmJO~j~sPvwtk4P&FhDpAc=pvnj1I#Ezup`MZ!2ie=|$ET)xi9?1Hw2=od$t9 zQv$_uiyJpZkd#u&!UC#-B>%PZ%rGUsO_1J((rmI$J#mF{@Rw zrQ2w6U=XDFJFZ$u*Jv!AsP@4iu6`1rec9?KhL0&$znG1N!z||8>`g&`)~l;@Gr{Go zFkZ&PHN^=`JD2>`?t<(~!M_YfAElGH@XVY=Yxk!6R#9=^B-059(cCYV8o+f~IwPkW z{=V@aIG*@CAbP_>W+G~52Lik{Pjj{G_UnDtP9+|v;Jo7Y@DU@tagt71%wdufhvLlLJNBX zz}LP;z+khc+*fRcgYLVmxA1paSP1>>5kK2k1Ltc@blYz(KQhgXs~G_IX~O}yXXsL` z-{`ka()q!~1VLi4T8mG(#96?%3x92K+IDAZQ9%(7nqM!tB4V+aSqECYH%l6@S-9|kUUf1H7Jf@&QTZcFS> zG$L2{&5CV;Y(n=ytnntf$hz-Gi`OMBYs!AUef{kF=zCE}aedJg-%Hn{e8Q4`9oiYu zGP~)dmyOwte1bZ8`jmVJD@)#~f2Y%5gGqCJz~_?s@wKc!@n<(%_*~MJ=&PTn(|OPh zw`)%4g>^ffvkRKTPf7IE_29*!&$|mT2hlQ;@S{8l$=kQ!T~2_;1gWtKE8zsazWM%% z!_R*Y%mq9*CvV=reY5cvXFa^x8kg@-`u$sj-idtg9Cm}&^UmV%v!3Cb5i-B+ykn8* z@GpCr^T)2e!Q+272bx}WO`dC72sfyH2pvH ziknvm@yqZ)ET()z4+h(%UuACEDVPS4(;dspUq&vOP|8kPg(vZUmz^>N=JXYrpGm~x z&$BuHK`S{lb=*z;7;~RIR{sz$fU?yS4loXqUPA8HMkMr-$@ys)rrVAfNmT*VV_=lD zUF1bH*|7A?p$!EUJbW15W0t#6F2$4s+>VF}Y&D~niJ$pGMFsOWlFUxL1r`!4<03v) zI=3G2VYa3OsDGX^YT1`_S_&YR@L{@(MQswzW)0wR{a(o z%8j~nxzSGkK0U9c-RTU(YHe|n)lRcMXjuwnx`2F7nvdJb4!DoS#dP+*CL^l#Qc$yD z?mob!cm!&TX>E{>#b5S4EaA6>r z>1k~W9SkUGQqR6~(z-Qzs(qTCBNKR}IXI#|v~;|^!D*afOlbe>u>Icje5@I|87Oyp zHaBb82vx`Jpekr@*t#7#hlMfc`U9f!G+mJ74;sxt(>K2fn?-sy>CHZ!agx(Xzjl$; z`co-$l77&kz0W?)ISu_xGS)`u{I#RaPwpd%Ta3D)1$+;-iLr$3=+L zC1Zw6%Jim=^5~HzNgL*MkynHdPL4xS31^BvfKg$vDM2rH>`6CZ;5z8*wd)&b0~^M& zmh0bk+P?HrcGGKL$Upi22!djGPf&aTg2IMV@fxw5WWVL#OKVdR;NAwY>Y~7RR?O)X z0#nF1;k9sP>@-yFWTA4M)r1;xXksBAQlmKs1EoZQ`-s=NQA((K^)K0{SFkgk8yR4QojJq@XVbHDVCvBhLaHz3gcTNJwgzW_mmS38R`W?1u!j$61tR6buwY83D3-7qzM9;HoLkl^*9F852nbc$a6F+v zO9xC5V5q28n#TAIc$8yjpdeA%ce#ui3sx=g~aY8-ZV55;^^~ZT3^y z*zEo1$A_ExtH-zx($>YvsCRO8wegkzwXJ*f^V-KnjV@B3wwDdk^D#urjrQX|`r1M3 znBB%P*vraXeYx?KRTd90m<~TWvoP@h7&}H9mPM#o0*D8879a&t6pJc;O435s4_*a1 zyr#qQcRs|Tp6>Oxt!#{|OYFZdtP9> z>b}Brn$sySmI=#SYdZI0jI+$9M~MqVmpDwdkRHKDL`HN#hy^;t#$}YbF}6QK>EHV~ z$<8H?)9Lwq;n~F+xfODRY0Xk=P2uU16*4LRdVWrRF9z~CC2pPQPO0g4po?KW|DJSl z%s)1oW27NY%c(!CIdT`M!I$1Lx13&eD83%i+R>1=awh`E%64w~%ro-sIHY?nd-SJz znV!Nrl7^c+H4?8e^i+^rGB#FmZ@0j7<1XtFBssp)^c^jKBi*<`TF0eqN;Ivhd4fpc zdIvC@6=GKDVv#zR3)^KAyy>>SHbq<8Yz(a=?)6(&wqY!DLSGCxTm{oxb%#C&-Ip{^ zb2sSeZ@)p~J!)kfck`wC7nE`Q8^&}m+aNdm{_Rg2cj^For@2E3t@tMr=`` zL5)q9lXut$FDI&qtsl#+FseCy+)_N@(G4aSRLG#G5+y*v`kP^_9@iy9wdU9ZMvspu z$1<)@IWTF{-PDeIrq~tQf%9>qk_ML$p(S@=Jzw%Rn9R@&iNLc5j=>YLwkw|hvZk6E zie1?g-(It%1=eh)wzu3YbIKX)*?>#CFkej1o}Y?dV3ECoRY*D%SWB{4 zO_<8v88wUKaMFZBQKUFNTYim4yWEGSnO+8c&-=f`YS-QHLAn!nM-pvQ*uEWeko6+P4hjy>M}1`o z&XEev_d{qbY;<;-;e!5q`|$SuES8P(%Q)AQcR4*fSri%(1lnQbv*V27IzB7*4ZD*i2KBnLA9 z@>Qo8!Cqi+wNFKMJ$X5;5zIu2*XCzgZ!{P|e_q>z9v_PR8lXdFB(D+2g0t~%-ZINe~E8VC$+DNUHygR&HP&h}FT zjdB|bwr1&@Zfi090iF}HU04>^8?eUp?Lij;s?10Kf?q|7s8C8lx?aH&DxQ!Odij>T`ZH=szLe?>V@_p z>J<|Cr1LV|>d_u-Y@!q6bFBBgEWDRXTsF~Z`Sg|;OtWdst7s1JZyhV}w$c6=^v?J$ zAOg!!Y4W57cEAHXD)}o?WZf7|nOi`=cpD>HLQw*L$rA z%$2xj;@x2OsFV0em3B$$4fR&GzgIJ3W~x#w_ZgQq2jYY}ws{y>NPVt$5q@c(Ov8h5 z_VML(0S5)%Fi@X5T)DW=WV*_%c=oUral>abV}&*9AHS6ip|b&X&`hqVtnSpwdVBq7 zQ*e3NdE)z)O`c6>VIsPqb%E~*?5^d;fD&3pWHemPDtDLHNp>6*gl*R_Gkj-IUmqkrCO&L_*iQkSlc3ehVtKpDA^wa`AOQhKU<(8peA~W?Et}< zpe=cox6M>O&2q;}Wf+C27Jr!qu^J}-MJ(G)4{>fy3Ca(332h1gB`jfJtF%4b`o|K% z4zq&w3E5#Y6`mWu8|RM3Z^d1M|I~{I6ctR;Jy)p5JF`h?sOZz99D_|XN&Z0yNl3`fle)L@~d#*pcqy<$*~Y3 z$Dl_OUc9cboKVg@KkF*-@|P1A9JBavo{5E@73tbN)Y&ss#389;W4ErDVv=PJ(h7p` zIsO05++>|dHwKrA*{4I181waSQFLyLs+N=3B!i`ePT(|y+KsG(up77s7Ed$0m8vy> zz(Trr+|0H!&`uv0hodeqJ%(-ivCZa67@1uxi=2DN<(o;@mCj|*k0!@p3@#^^LB5%E zSi?X-{+c3_T&^I6yNvh#OEt8_rLw@wi#tB}&GmC9o#=1=S3C){#)JA?CuV>AjAMqt zr)xUI^U;OWCX$B9nEma9-DoCQPODp2dn&|#FQg%KN^VnuIXi_KTpK|pw5{h6gSc!Z zIZj9~J0O;>H6dgVVf1%(wa)Z}=Z9W%^3k|LY-ZzmCN=dt!gD!!kMpwL zZ`k@u9`;AiPnD#si3GToFv!-UM9fUbAXsbIeDc3XE5?RMM1(X&>|4_&nMgHeGUvy> zOYus`-U;Twt%MtSy8S>&aLIaXG&A}G6j&-?HFaZI9UpATlo)cbpvy6-c}Z!oPosW? ztC8B-lVJuWjyc5-*8c0~{>sm7{O8}-z%XDxri~&ukeg*1@w(a7Dr*u^r&Xg#G3K1c zw=kokQ7;U7We>M?e>G(}vXAL0coZjdk()vicIwr)t9LFe7%FhAC^ zVn?s8z5>>Wot$N*+v)E!>E=ME1lMe1B?%uHv!GVH37n)oK9hu9*;S)Ay>i`)ko-KU z$^W&Il>v;QF75A{**(PDSxL@5Zu$frOIyvSf|To@CpMGTCeNAdq_EyIoIpH2K;JrJ z9Wb5#eFpel*8r+vk6;5CUC0!U9Fa)!`%7GnWSK)sih2%{6?9bcJ>?PHMKEaAyrk^v z5%>)F&fV$h84Ru%ZCFb*EHU6ljBS#4;>5PwgDvxXlh%ikb!7C0x+vNCU zHG8oP<8p$h5eT7%YXt2sVhPURUp3crR<$ z<)F|&w(q1gaz;Sa6XSgz*b+(sW%qc#bZgvr~a|+l6GY|tYA(FAGZ2SkLfYzHWDoS3YBT63&<^HPQD@yg!33qRy z6g(SW;rsGZgc~>?f?LSVlPP?p$rW|5*|Pq!S$wZ3l}+G>Q)qCXUn@$?v+R9YJBRvx zNvV>CSg5k4(urI$i^5=(77{XiNlD?k3bXKvoLI$pK#~q=vRW);5-Q5sm`o)C5N=8v zVXq(p@kg!9qdm7@@=nVYeG!p-VE`f>t|&1-2SYU}?w3RTUQtS1+zRdN(DALJM0N_X zT*-FX*Y6djaL&gRoaK)XPC36=j?jZ)}(mH}5o%!-h$}+5u zQniJS^WOeZfF x1ccLupx|ESTPG=`K=qy^7L531;Tf^1O{jXH!vyySswvX_A619#SNd&acjMd=pFm4^iICZ7RU9(%3u>~zHUEIj;d^5SuKHNmS@;f zQx+g;Zh1|8lhmNv%Ma|EPCILe^_3!|9Lm#>S66w7g1-)=I^FTC!Auqi3o8#?PB+Gc zZ$Qs_($`8$-D_-g2L3rF!3Uln(DlXx!u^I+IBr)0E;P4T)U)ox8gqU*hFF9+T?c-?S$f%n#1+bm|3-JCPu zZgfN17JPD!4zU^JT9K{d*elDJnGUJ+T95?$kTpYjtVfrM4Y`zc!AYgzvZ|UDPn#EZ zRzYxv<-(h91}G$rxH6j$wm-%g8~%}U_z-f*1y^!vAihOBGELub!$nwF<_?al}pR%omDU6Ei_!?~^ z=M0*!S}h^0{SeI-F0>LYR3TLt%C2KPJnj~<9A@f$m%P-_4VQWI@*KafE%R3BZQP*c z{qk$=zE@3!W%CO47sl(VG7p~JXqJJjJR3P?@He+)na;`vxx8c`KffinepSOfGruhE`?C7M02Hb(tct5Cw<`S3vsKlAXD|zGxSLWAD5-rbvoTU0e9@C$%xMN1 z&q8!sbNvi1qpGedS6k?2VJh6BX%lfD;?wF6A35ggS%LwxFwMn<@HJSzx^k*P$doN* z+`s6qaq~)1pm_)a30U2F%5%i@^pqFNJ{(t9{-=8e?O`>|R84j66)nuU6$Y5M25-6Y zA@)1?kgBTH>cQ8DcZI(3X-gf&>=rYEU61T*ho#B{9dR(=C2ulGLf@Xb$d24l?M-F|e2m#^IN zDwqoUPxZ6`qgdeZ99tM`6-+BFDA+PYk*ciM3a`SNWfbmGvSP2wDpZzLU4cr#DvMjO zR&@ndAXZrgR#;?Q)m7m65$RZE6*);)bxk>$%?%Zb=!w9uh*OOyoVI>7Sk8A38#0sRgn0>nRwVGsr^}@^+NIQzQ z9GZYoq13xBc9_p(&|d+$^7WcaDBoGM9ZrTMvkQ%D?E&mvve z+jHubq1Xg=+u~%Z_-255Llh%5OfgmfY)llh$jL{S_->?D3#P(PZaJ}| zX-%NX-L5Zh_I#3l06dzQzQRlXcFonmnZsC&5N%z1AItq|R~ACH*vJ;k2&<)dAvg}d z2+mZ-O`4HQFq`4ra^*=Z-lhU2DuoO!siD8D3Z>!5>&Cs3h^Ksn8fMC5huLk z2}IQEamOsNTHPzsr8-BZEn5V2wE=e@ScRpmzq!7JR~rc%Yaq>2Yo?MbY~|az&y3E^bOm>d?sv7^~S19a4@ZTWEJ&| z%KX-@^$^-kt?_b;W3zg*OxOhUjME3eH+!8OV>!ycy{4|Hjv0ocfbOG#CxWf$RR*h$ z$)aQwPr+Q!XDjQQJo-Y|kCr>~SNF3K@S0Zzec41y6ncRn^LhWy)#}Sp#3^lFK(Np!YAw z>BN;$ay)4TRC(W?wH|yH7@^p$A=4OED?-N<)-5@Z`t7=ScZWvTFs;w?H_gx<#!e!T z1`R_UH566_QzBoLF%f%f9`C47LteRu578MYDZ(nsdgI=IE7I_d*c;D*dBJ!Yy(o+u z6jZR2ju~l!?kB-!v3zatCgFz3X3xO3>UP4Nte1)V{#Q8hOfT%6;#jd__jC^8rH+FI zeD*qT&^Mwm-tBNsF(Gkdm<^SuaIm+X3=>-*KNsfnZ<`7`(OOG57s1Xpi56b0KkXf0 zLma?oZ-6*Ku}=UJfxt0=f1VPNV&K_=UQ+Tli-*ADS%!OGTIX_V+Xs{Vc@H3OxcI{P zZ7pxDlbDF=u(<~Twm;sb^F_4lTit2@lZJR?YpWNsu?$7(0^=mPjhC0B6g%o?61SBB zhXZiuE<_EMG%21-LzKi@#_kyVRVSn%ii?wd^U=*=7jlE^kU#%^A*v?-PIE7n4z#}x93>PPx1Au5sgD0Kg zo55RJ=V$P=63ajx5F!s7WByBHUJJ)W^u67`zP_d-MJ;3pjlAm-E%M{LGq|q9`;q^mMJ4BTR%lvtjBk~o^{`{DU*bRQ^t#cG zLQkmsFWC#RtA%6(?q1Onlr;tZ-@Z_W;-jT3@L6WYh1nAGVzR4Mdmr6`a3rMVpw0;# zkwuTMdm%AH=G1r+&ZL2c^UsV;#dPDrLZ4u$EDjAI1!Q*JIWTt8MnXbCo_%3mmb^k= zlp-R-F*I-d)CLO@?GIgbX+1o#ShUS9JnT3q+dH@RW{I(OutAmsZU)JY9-+iB5}2FT z&?a5U209*qy#aWs_t!S}qKbh5Gt$r6UpGzg0G+!Ed^q6Ay8~^a6bO*4)e{+F#29Df zNON}8PejZCvg>B8n5|SQVm8uYc-)G$M2tD|lC+k&_PdkYFJ7u(k5=_C$O8N7d?ADO)(A&!KT(Bn&kW=U^nS!bY;gl7?kwI)vDeTh0fS? z7LBKtn#IrP%MU14(hsSvq7O{V&xTsoRJV_VW&|*r6K-oML<1=zY#R>3e79~Rxy2L1 z9p6t!jB6>&C#V!Fo)>R<@hUXQ^j&RSs$He&Kq$Hm|2D=$mawwjbx#NOk<>3Hl*Rz6 zqMNyuvnHOtOXZt76N4XF4O{K2Sl!)RI~Bdn5311Je1>KH)y`CQS!cwF z4D5vD1g<3w++mNDl#aGbS$d^;mtCTuZ?RrE$yG|2pR zC25%J%zQNjjP_B#ndQh$In8AJlvj}ur4}s43hL(4&Ri;Po1b|_-L3-W%)e+wqlB<7 znI&fx0tgZa0&`jkml||p*~RX(489<=p1SdZPr(s&UrqbEB86?qY={q#66uLRW779{ z7fF^lgS-BiW|Qo$&b4fS)%m7aR1odzg8Zqt&&c?P z69qmIDmh5J{{}r&7eSlN&%fiR20bDhs5wMMp@09q3C;?nMi7y@ap{MXh zOatCH#)<`$visU^KK_P4(@_xb${MaWWub_&6WF4|DLekG8v(dt@n;5%83rFA$5N*U z0Ghd+_{e;aeHa;rPOCN?_S{XM*UP&_53x*v4Vgj_^vLNwQXO;Q1EQ$8b?G!Svj4c3* zI|4i4JK_UvBgK&cle$$;P2N%^iy&g<&S!|1;v1-Xc*5Mp z+aHd@uxJXWw5lGFtw`Q{E#Bd1S#RPQ_GR)aSzdvQ%$e#$u~_m7u(-~A$$ZU1T^q+K z-%}XjFtFS5s>7lt6kNRC$nZMuc+kQvYR?tMRTbCIv3?Is2n zkoz;YKDI>Jc8wtZLW!iiQ(bAjn%&R5YuIA?=fi`SeneKC8nvMBh{El`6RnG9Qz1V$ z?H`>tZ(Y#E9^z2-o^-9`yk{ln2&@idpUr*@P$;;Yyo$4#ee7+e5e|?B`eX=ef5D?{pRc4((2TVtu zAfuPppaln=j6tJ^_-6w{fB3M3kH8Zi!H)LuP+vp%9(@$lsg$7^1$dNjbcpZeR1rX{ zZ}o^vCkcpEy^cWDE;jYMtApQN?vKAHijTqf6ZHG=kt?# z5sd9Ubi;{Eq7-=e5CUA8(j^5fY7=3ya^Zd&oBwI>)8-6Y$;tiqP8gUCMspuVz(}9Y znA1i{cH+j)C9fjU1hwBJ0^5d2cmpU6PY|V5ezy^YUOw;-6SY-MINIyY0+rEzoP8w# zD75I~D=xc6CL6$jXhYD5e}J?Xk$0PkN~xX`!WX~XYqO_7z4%1AFzkq2AmRilynOC$ z2qWvG{4`~C!vFcguD(NqNsBSrL)(tDsyG8ieLH{p=_rL?G@MXmK9UBuB;i*BG(Ofr z3G=^utkZ`NgC8itL=sIu803^NGq!t%V1~9Qb53lDjJ-`nT0+gkN1I5Vy0au)?O+OZ zmeEu}w&jlT(YjisVbRRjlaaFudjRxJKz=?==c9STz^;naho!m5y6;De zXXS~f(_gDn=1UXghy@MdU5Ye-vusFqZWdr6ahvmy{3ndKg6p#LpP*o~k780HSFM5- zCb*F=0i#}mQr-T;20{+Rxa}IXAOxun|0afX`wt9MuqH<;#Hnt7E8o50iNzgnfBQ!k zFelc=AD61W{S#AiK;-RjzvWlG0z8a&dt;r!!GIJVB3idMHrCx&Hlc{&_$*`7J2XTW zhkTR|pfta+AzdzJA`2ZukfXvsNIP;VhZW*AbLiX1B_mSo^8h>^;T@!#Cc#0vE!W9|U2t#=B7htdwsP`FxmjbENX0pTZYDY;AN(XaYn>hLzQ%FC1901ccnV_{ci7MS@NmbCajNwh^}RD8t%A zB*w;A1|fK@{h&s`js-MYz&C;ogZr~E9(CmkM<{TEsR!@v!dPIFZW-Oqqw^V}Rs(Jq z_GXPoW?K<PxR54B#O$h-3tf%V{0%I9*8N-%~oJsv(Go21ZzPe)l*UhQFF~m#t6lm(W;;e3HLc^?0$ViAh4UGyq5G|os7Hnhf*V{wUk%kwA zN?;NnMyPSgoF;T&VB_V)&|^@)En0>hQvBDM;9YgUOusr)e1vdLg%h1KxycYF?cTF~NC zd!n7|kh_HPsom!1dc$!7EX=PaBeu*;vLsSc#>-*nQlI*-#vf z=H?}Q(%HDWaxY72Q=vQAzPxUSzoC?IKV9L+rG+2o3O{~pS%NT85Vm}73MUfmTjE+wrWXkm48fPv(Io#R{g^;#vhG-0_zI8sSUJli)2S$p^SHzoPnVAB!9#7RNuc@1- zs=VCtRVkFYaasONm$SU!@`cemD{p;KWoPtn*3*@kKlM8Bg)2q zm>}2oApsi<4G6$}4TG&gF*-fOr3$`EV2}>bQsP~N7piwYhGG(G!bLji#a2q}L>IbV zj%_-kLE5Y79Ju#5nRX69QrjC*K1IFygg$(X8`NzpPf@tHrEKBAJ3})`)}nvOKEYjN zJ}i<43Bw9Ws92AGeC+yC%kQ1KBon0L&yv(pOx@qi^`mUlz zBTew{t;%9-URcUK*f37p?wj|KaF0T?XO1-lqP_*Iwix2y_!o8cWI7xD3Zf$&gXUvt z?t{E+C&$$lbcu)NfyMnFiFLkEpz|^&Ehb5!;}I_HPj}+dtON%K9jqz{fFbr50xiMV zA(<^s&(==QzQ%05c=a`u|MFol{(uk9e)tL6aO!kf?AdI3`U+sMfzgjJ%eMBF;2B! ze{tsDK1<-jWz6EH|PgN{}&Oa1-55PJu<0VF$_fDRc%x3wEl|BrOy9bZ`lE;>{j1 z^+F3NN@?Yc!nbX~uK)IOLTx+F-|igZ?tbwD&TxXKG1q)A6uisctFnQ zw|6?9_fixDdxjdMmezU%TBxP?|C$w@+)Gh<3+`%oRj4-WPO3*ci#3RN?fpx$y>zy- z07NZpJ%5CL$;6#r!MQ^Kf{a4foj1gO$Bq8B>{5{Tm&zH2HP_Ce7DVmklW=|QS{<>~ z9jf!~CqUAeOEId0q@srSrdR%T{`ffyP7%DTSqt8R_YlyC#2vz$RzdI+sYPunv`lJ{ z5a~s2YR*`L%28ImCZ>C46XjsXwD@m5Jr)*KoVpn=Vj`F4@f(2G%v~|O&^hV z(P)0^dq_3qF z(3HqB?v&QpzpdjpOkh~Gt;^INja4)r@8a4f1Ceyx(9QbUY zHV8{WTe9bU5MZG}aUI7QGx*F{hk)oNgeA(#(%5NDnxc`w5&yU(t4u1ga=PU2oANUw z99(R0KPb!1pDv)EFlyYM8pIEz8$8`j;J&ma&}5{H&Tw|K-0&_=iSdxYr47hj zz*`&k0IoS}C%;>l{}U1iAa3a?$_{d6NBwrMNx)6~V`4!oSHh{3k|~f^M?lxk<}p8v zyA@j}1Mg30I;=yp-^`lU^NKews}RAmZY+F?IcAF zT~BhZ);zpsbc>6EJueFZN$C4g%>tUcf@Gv|RpPZIW(jc@^m9}tDJU3E;MDAN=Lj;j z$bNkN1KtrgHTq7ejf3>qZWJ);LUSrGpz}Jjsy}Df+M(nN&bC6Rr?vfr(bJNgvA}rfJD`12++Qo0{1>6%0 z*jdqB>4Mra&NjWK0z2LEx9my^p9A{N$iEwJ^AlBoAPhUGBhLd|IRH3C;j1Wc9bwBg znme6ey)kU_X-A|op6P80$0|Yx`_NgRl2^E+tkX#3LE>IXc?f}6gqXnJ!Jg`@3I3VT z50DbrKj(-yK8BJ^-$`4w!hG83(oImiyPYI-xNHg~AYPMjX@R^q9rGS-+U)^J59CJ& zg8_D&B&a=B6ZcToZwlRTBnIQ?YkxE~f6I3XiLF`G2QCTwu?M%Vy(dr2^|rYOvzAf) z>6<;^t)1w1sP8-{V0XmeF1Z;Onh!6#=M`_ltEkL|ch!{zG%EweL z?-A)CBu3_ym%6KFg?ih@4 z2T>ysL8Sy1LDVy3yo1Y~i>Qz-T9+rGN=TWo5pvs2KmthHmc#Kw0Xr`nt=I8`5z-Un zhouQ9bL2EA!*iRmdRHdcP4L(fH!K=eb+YYmtX1VI4Mqff0<+=mnr&)+1l z>xHZZSHpC&_HlJ?yMhfUZiArM1dr*}_OU2|8qjaWJAp00mqv6TI{1PjYCEez$dWJoES*D6b+$>W)3`fvU#s|i1c|pb zq>ql*KR~K){iK|yQ>ZR5{+^WQXLZ^!8nJ%C(Slnz{jMVtm6=*z${Qio{bN&fU{AgibAK~+kEr7DqAY_K}RGR+>m6HhV0KBzf+u(%(PluD$)lH@Q-U0afGq%Zzxv`6YZ@eb58XaKX+AUGxwM@=0uSC)0Wy`B zel3Q3H&>wfOdV&G{pTkeLF^mN`g!Z<;K$wXkN02hJpEyRkCA4SXNJf_P${2HXGb() z#`-;2zq&eaJwH5t{_6XKm;2_&%bla=KkXmyyxeEJ1ra z4@BXg?dHUmaL^cYP)E|F|3V2ZN1}@^>I@5UiiIuxUQZ%V#@w2jbqCo}R%boI{?uJw zx*NFSl|{9WOG=v+Z#0}BCF}I<9?y6X`=(Roi1goN5UF&n=j98En~dvHa214tVZ-7F z65&_|X&D87{aL0@Cf=&LculDtkpW#Jfjt?99e6(3J9xpZw9%mAz%sZ{i;qF!5zU6X z1v)d(#vu6k0T&-2JQhzg9CN5LA+ZFtXnGu0O;$gJxg zaKjE)S9RG=I)gXEw|EeM+mpEH1m0XW>J=Ud9K8|#(Zgz|5+C3QQZmeu)4k@rZ1rfm z*Uj%qC;MT;+=uIUO;hSv$+5|siTAYdO*|%5VC{vdc4In;irw(=FAP*_kPXq742KPd zumbfXa#lDIs5x+?Pk_m=Oo^4<1o`3PW*J^rQ`ScW!jzmIAsVsgrFWju4UA8Nn#hjo z#KS06zUS&$+KWc>@`H+hK#}4W#UvWf9K7FTTWvM@{f16+hncK`JYFo7bqU-0h#Dct%Pe%Zdr{ zb74K;!!J&*dCASz_HVM7WkBL#C}lO%z;BSs=4oSKkfq(iEA0D(yF!;6{x9-u0$nYj zG7Z+;@(T4~zM)Q?Q}Z&HSIbT9Yq8b>U<;U#*XWDhraZUvoA>%F<8~kBH}{O$oz^iw zo;f?qkfbat8f1&hllb$-4ZaG_x(yf`@I4fhcVPA@Vq6HlA!GF~T(_x_Ss4O{k^?!+ zty=vjDhvSsuV@c7qokm z{WO*4o??2JCn$G2L)^!F?$&lD{n>QXUju^y zn{I|LeXzC*N!Dq0^&;)n4i0O7t8J{ezHu4Ma|kj(r{@l8X!0~hkB`OPG{|l6>*2`< z<@^kwlZrkqz-xxJ5)^P9XcuPH6Axq-dAZA+1bLzAU6#{PB|ekoh%UphXKjoRkD|V; zw=V>TdlVvF58tysU%`+rdjdM``yFtRFZPdi_I8eTwjHNpZb5AiyRAg0W@?4yBV2|A z{4Tcvc!@&I25g|piRgEauaZw3Sl&!zO3V6zPJmXC0thC=ZZ^ zjG*XA2XbQn%Gp#{5yYqtuqpt-rP0Ew24!Upx$fus6b{1rVK0;askGHueRo^X=YuAJ zWSD=z_?!Pw+b<5*i(toYS@YG#&K2Qt5QDF8-5iO>(oiSkT%wj`JV2!Xh z`;?jk_YSHxAYfqu&0l6V44o}gs%R7F)w)@35@H*hoV`1_Wbq!vxC3kiboF+t^NVT^~rRiw~$^7FaR#COyYmC4CwB?mI#>V zkz^ha)#q~pnnJykcBiui{uP>=|DNK8$(RBuKJ3x?7x~0cd0;-MMgn(|O5>qt(!Z?G z9WfD9dVwk~QkbG6)BvhAzAO5d)Gw4YlB_JwiW?GIa4CulQbD#12_C{fQ7`|Y2m$}j zVBp}&=r%P!-(mthxnpSy-Rx%PW3&35sVR^jlofjw63AhxFdX~di61YD4wFIXBIf~J3t}?HnKmj)wkOpSFb)y`aknk z8D~GY8mDI&%$LT1O86eRg~I-sXclXuP0S)ixw{&Kn=eCn&dyuLRN(lh{nv-j4_!~T61ULjys0U&VRL*$QOF|lZzcUH>fvJWp+rpt5tF1QD+hEw;QmGe1U`e)b} zpc_bh&^rdEM>Kgj_+ihQIQ-9b_WK(<%cFljSvLJDbG*yU**ozrWjfEA&pL$u)Y~ZE zAvrE3I{avnKw|Qdhj9-DeAXO*qC@`+Pan=&rt}${FA5=ZHXBqH26t)RJUrj-eKd?z~OcYyp`3~Wq(_c_^3Y|pcpkklsz!>)X#p(DP zP;4Mz1G2xf2fDuk;9{9EY!Q~&n!J{q$$DVoz@jz|z+fvV7{r+f3^qMyQ)>+kBO6+0 ztXBqqS`tq|>}ogeWLIm5KT)xIRMbMy1iO4Sv4&Sp<{x0Yip@(04s2q-mmHE9Og#-Q zZnxY_7UAkMgqivXvE-bNMYU6e?5$<+a>D0sR%7Yf6xsua)zK8~Sh7O06j>?QZ-*xJ+?*k1KfKn6!eZcO`0h8L@AXkkIvmn6x@c8EHW%?3;&CH?i z(<2-P40w#P*@5zBHg?v-hcrE@NHl~Z(4TSD041lihKAs@GeDA9HVy$G4fyL^ULG_F z%d$)D+-PjC&;hrr(dWrGY4nNy;u?cQJ zmfPj=oo*MtMtpnx&EjNJLOk6EDY2*L9&Z^}@STu?s;%}z=a&N5vhaiRAjA_0mmDll zAB_z3d!ntg(J6K94ij{{_bI60{_`WMi)z57A?6`CT9>$ScjAeoDjCRpCI@ zFX0>&=WP6)6@Q6^zauFK-eYY1E3R|B5uqZr!st7Tsv$ls7Oq4ucHMyAUW8-3>4Uk@ zl$bHl#JXC%BN48c@e9ItMo4HM>IG)|uw$GpGMJFt_{y|AxL=xTne3Q1wRXViEAYjXnJmp=y2Du$J(R%;&Q1k})wgG= zp`(WTXl?u;ch^R;Q>3P6I#BQlYrlU`;}B~{l*D5ZYpcKM|7yQq`!_=gml)Qc=2pTp zTt*kpLFNTAGC9-99=w(4GP?^o=Fmbn#}!gyVRFN5H=HcFi0lr?+115$0HmPMt2l?- z`b0>z(`M_o^Gs0ITaF}F3PwFG^ki9+XGSh#BfhIz0yYyRFr~&?i5<5KW1W+Nd!wY^B?XH|IXJ#D;r19B%jJc8(lB_n zUS_tY&iMG#ks?N9eL8<)zdQyGM7%Z?D_9)nI7?@CfV$sH24J?yZ|r4wDU|4wKXXbP=MRzmu$QEIX7lJVZkve?7*towqy9rBN1-4a+)gaiN2u~ z53J0D?T$q0mfORqizwtT+qQJb?iRc?NY_xFEHwZXf_54(lM#Z>QhT9Cpj}a+tQ1Qp zX;$=;PCl$VS6Q*a(roC3>(q6FurlEk7Rc3b_8{GO5LwLpHS7L#bY#Vpy7w5cz>D6k z;x@9X&NRRC(GT2u zlN#2(N7&nuC#I>j7y9u!o{^w8y63tbTV5=TAaW49Hu+ag)^M*`y`M~ee(aIE6olhY zg@Ju-=RpOPuVM+VBeDNgEvb79ZF>kvSfc*tD%dv=bcY=9~ zQI(3Kps!0!9>30+JbwKaI7cuoa=Rb*LuQN)n>6gpj6oO9Bu)SLQ`e&d>%R;I;fSw6 zv4;Y&6^ZyWw`2nzcQb=fl?<_4p}BsPcu>t2?rXq2!~n(r0pd}qQ8*;H9w zmV8s;2ib_STqMszX;4+Z5cQ33o41fe zYGZIfU*F6CFsnG5n;BjdyyLKQ1ONc7TfPrsJpe1q>MNLR&oqZ%X^oHy+cm(L@|uMlPHkxY5AKh)PNmNx3`` z5XT5TVof|`LBd{`b@APBD14<07tVoze5(*LTHI~UU&;6OF99=P;P;Z3)0z&oMsq=E zdj+G9nn2L=SJWj*TGU4pt$QaIDTK z3Z834U!kJ1I7)dGHBr8PbtmPkCAMP)>{8PXA-VpEG`3|rJ`IFz&1eD(o?C~)wq$zk zJq;K=MqsRp)(LBe*Mzdo9c)C7* z*PHKre_YG{vWRBGypVAA1`oGRRi1q_<$40Q1f5o@7oBO;XW^s<28^f}c!-qgh41Z=j}=Ih>t;A^+Hag^Pd_~m z#6ReuUC6GQ;OUrUs5&}Vw_!k;gf-=+0o+cXN&;@0%!L28YuyFdW$UtOx^Dq&rS_$LLIIaOCK{e8HWaaMbQx{_us`Qf}b>Zdi(atLVxUxS(}^r-3n)RrD4yWlfMAk<%G z7jaI!mo)Hz$~+zW#-gr8S)y+C(m8A<+N}O`)T^<4?ZqJ)cz%j;FPgPMijbP~Pmh`^ zWJON)p5~wEH^A~g05^*40{+U7=@gF${K)3Wck976YknFZT_b#!-KD(d?B5y*tC``8 z%A_C-3QbsGy@JGM&jDK*h^(_f-YRd?Vmcg-8P%2w4XnSGpsYmbT`O-alv7zjSWXNN z>S0FPSx^{wI%vKETSh_z${#H&5y^`bEXyo3hjj7;VmJtGv~NYIjId3~pX;2Xu?*~o z6^7?6J1P8{3%B0|liz*f2$rrD8-s|!wV=u|(E!cF@i!-Gt0PP}Q~~w{FR=)TX5BBa zVYY0|X1-)d(YMN}QyyHWO9ARAyUtq#SW+}>*b@5zeP^=;q>#ZZm#BqA1GmAQJ}y>e zyR4E2r0$v8)ld&2`g^lm!e+ghwu3qgfrwgGBU18_JtbB+so#2--h{YD<_vDxxo$)o zBkTw1O|v`vOna0n5@}LpI1X_7sZ+34?HEWQxMM;cLeJT5Y(WRIIW3icqG3AisCtmNfrzI%C9KWT^wg~M z6oW2Irt|J*xHx7-s~0aU?U&IVVFLOZdRkyOg_s_w^v!HO80#%Et{8*eB6Jx7T*HVS%HjN0LPj;erXFNbXB#`1`2FmE`OraJNjZ6A8kAa2J67 z@n2zXl>gM7f`C4iy^>sOh0hQle2fF{{4-qVZ3?{8NXD&_j?-CXKQ*;%Q!@1@Mp2n8 zI$=>92=4_Kj8AJqOwX`GZ}AS`A;`ta+6*;MPN(9XNxWv$Jhe#^K~^L2!37W8M^eah zT$*mwZ?Bt|<&JKiL-FhfqBg9H{L&{{_612Q+H^@Or(8#5hn&efBop71NhaJky(bdm zIr7a7vWhbHtlzoBqd@IMA4k#rh0ANy?`Md`uK$8pQ3XF37^CUGhMMOR!O<6^1q>tb z-Ts+0Ei43ZG95rf5N8IN!(YgMf^3MRCAgaMSAt+2G3fL` zi@Ps>Aw&wW9xg>}^M}ux3P+ARamgk1-#}a7KTT0a3x-NtZ_Z!`h=_1Tb%X5I8Lx@p?BgH>J7sU*NcfmgoAMVU%DPsCKt?6ls_<5AX zX$Buc){j9r8>%l+iTk?=KX>!Z{MF=Thb;W3X+}aJC;Y)!aMr_lizSXK*frs&sv%B# zoytykOZrFl;8wI>XWDn*?FP_SsIublO8SGdoDWeveaJ>RjxXpF6BCzLZG zi%0UVxH(p7x7@>0_Op)%5SPJV3qhaGz}$eS4y?rkaSg_Xx2F&qh~1|FBGlt~PALVZ zJZEF`fsBHx2HgnyZ)tUgRq3%l5VX=W%%)Oec0f2!!R^+$^n*Q`{&_x~w6o?r{Btxt zar^1dp(AiATF# z`o6RCIb`MTqh>c&zkb4Xss*MyoFAR~BW~T}Xo_%ui}Q2W+PhTivB+VIbt%pROnF6r zW%{l?bT&8})_pk|n(1q}3-khpK^vZ!u)7dMNMHY_lx~ydRC9FqwZ8>b>qy-|zpR=# zmlA6I^D_GOhCDET`oH$T*i%ruSI?>0;6DpYgj*P1Ip(2Nn*eK!2Kr5m)v~_9W!MHt zW&Rtmw?J$g`8#A1%wm4Maeui&&q;c|C1oe@7}u^7qOKE)%GrsT&hYxejkVc>kkV9a zuXw8UrRTInu#Kwzy{`>W;MC|skMaK6_gp#wMWAo}9qwqpBq^dvB8F#8q~V$*J}CvgP~@s<=Y4gv85-%yoEiI56RXugz-_K3Qc3vRNAMJdP|H)a0avuDqet-qc?G;r%8lv8d!MOfzdw=VLG zMP6t9TNhY=h63NsvTSnuBI_8*Q%J&ZUE&!V`FlnZ>GoyV$_t>ILdSUPLhGF5-A`%N zV4kd%F6|TW>yvP!kU?6Vs{C8_nfW`v#jqzzE0pbbm)%m>TpP(2WX@o;E5}|af{*~o z)*-yRS8pg;H4AH;hF~KJf(LyW!l!Az#U|@umTXM*Y6(n1?EBU#{+#TS` zW3IC3-}(&y71A_52=`C${S#a~;%1NCAM=|oh|fLd(IF0wdj8d4h)Bw#_h^@lZ&lAYkhIMlGb)&>qj-BxLv8hWMym5nXi#jI*=aSptALXsg5JVei#CuiypgZ`|34)Bgx{bTV&1&w!! zb-B?ysj0Dd#0FX}Y+V2#;?(Nam=w}p(f%08EA&?t8DqeboQ-x>A?hsQ0xK;@2${%U z1GvPLoc4od2CPR99^&tlW@tTbCCpX}H%~ugb^z9~SBFe>+-;iF%h7JG+qGIb04I&w zG89(Qh=t|wvs*p|j?w+B8Y24nvuY3lb|`85>{+;z=mc5I60b3vf1}XFMeo4N1As5a?T`S zk5rH9-Yl4rK*8K9d%Q~)l1?dA*~^v%xG>fEtqR9K0yNO9sy@<|g+&IHMM`crn#onQ zPFc*IMKZZCKEP_*Wja-9r!zc+|A}O<$$Bqrh@gtI%H~DfCJOZSD8o zwCt27UgJhRp&kGD%_%|fL?YpTvN=(5r!z(RGSJ_1s~Yyv(d+_ zUw;hRXz8-r_c0hM5h=o5mwOld-m``(i{L!hqr*L(!o2B5M+JD4{lz1;co)1a~9NX@RZ<;jA6=tcL##5jZvpV-YV=d%nEP!D7wMX zUediT@DpZ$C}WC?&j%M13ShF?;uBp~=P+P0CP7>4+tqV{jxV2!=ARD_Uc%#G23N_^ z;1jBCw5zLAE63$EM$xR|$%?4yaJGU6)H<$W%o>_Yz%h@g%dqZ1zyzgxx2Vd96 z!7?^B!(U4sjSj7`({J}Q%1cLJFZp#~Ng3Kp=A|LX`lq7X5Rf}dsP{wgf!+`FwE>m`o;Lm~P4|K2 zdxR%L?wc2|a)&`DjonFOdC$8n%tfa*=y~R<8?rD++ z02a8U;ZHnS$9%Gm<;gluR^GROX#3rd&-d^m)V-q}s5wLrr`$rF@%Wn|#QPoV4oHJj zIw6Tm2OKS&=R7~iSjPeb8hTIAFPufVn+c?wOAG2CI14a1f9V+O|G-DgnEw0B%`+=C z_3i);npi6Wn`KB*Kg)1o1&*m%BZ@_%;I5DvSNf@NDJtQ?;C_flvHi@5i2W9Ut3zdt zYJXbgG%@(RDs?MVcJ$IvM)1>ER-ujL z^p&lwrdr<-_Q43~;Iy}FnYei?dn=VP7#$)YZI9auUwZeg;P-X0CEQpK!e%T64BO&$ zwvJ;e>FlT>-&`K&I%E($bao7+CcQu*y6@6IEAV9r>L~+elhcfw4nV=qr}PP)bh9HBp`@y;=Ql_&J6>s#&FvY@Rcu?6h8kCM<5Px|y6a1!Q$0xhOh zGti6DM?HC*qk@Vs)OtlB*Q_2U#c>S~9O2zO{$z?C3JbWG^>EwH5V=!usxVeJLb}X| z!zPvle*@4FS2q>4;2evQO-k^IwT!5CQ69wyW8OQcX*Xzuuz4zRxCAy@8xiUIosWnr zx;vZB=LdKbMiXu>LYxCP8fayNH~%$Y`+$~R>XMi?84T~zLPTws^$_5BZ5;LBNQ+0# z(>jE8czftGzL)DOZaZG@ddCH%E-?fYssB;Jt&|X2G`mvvUU048PXi*#|)O1pF1;@I9BYwMUEV0=UPyM_7DF{6|{ zJ%f%EI88s+kzsv1Yxh@!DiA&kXK1h~&PfA`8zBhky&1ga(XktMusK*+F{1m`jhv_Y z4yexxr*pDV5ts8hu7-}Iv78!s=Mbg1JQ{T&+O(4mVWT^=^9HQqG6pycj3WXLaRBBN2zn9=Id3}Qf+0uIb|>kF(J+N5t#yv8 zWQT4%kiW0(oWT|YSH)jOi=Wr(Z+`B#-mWy(Mp)#m$EeBgJMXsTXsd`FNVC&3+#*6| zL43Y8dUXQ31r%67`-1|wUY;KwKY#W8!OQ*5Shn*ibEW-ao}InUspOb2$FwBJ!Cq$~ zIi{WQ)zvAYaG3fJ4m(pxIP=HWO58>Of&kb@eeK||R{y!b(l}m2zk)S@XmFeIL5mwK z;C;^z4v&A@e|`A;;AQ7bs{RGDGlBWssL-*UmwT@dp6_*jk$kg47l_sg4$5@HRHA*U zZ?}JLNv|5)!Qa0Ry4c&Ur$E2i0Er#UJU@_7>;XeGm+%+~q}0NNV)m7!m8>v-qn$Fa z6fP-UI0U1|JepCsQO{&F^Ug01AFf?w-S?w~U$Tb}AGf~Rn(6Ex{IGXyr(iCH7A*A5 z7QoED`Rb2b?={=YoulVJ?Yo={$$8#cdp4S7gXu?Kxn_U%{Pq5`gTHmoCEth6+V070 zdRo|8yWhV)c(LF4Ah|9&YcCF;@Bcji)6cE-wcH-u|5N8ea((PPcuTZmSQs*XCfQ(_ih`Lp)gP=8fDycG!@P zMnTr;%bd#vihCd3383lm-~&-A{}qwJ#kKwM-Qs`;S4$8JynyapdA+yRoY|ba*JBX$ z2*rl@4LJr~;el;GkfGCSBF0tj@ph!AQ~DL~9;!~52ZIXXla>1={Pfhn%VA^yvNVB=3h zfHmEKX#ju_MIR*Gp7a`YKJhJ;KT4+EcL>M=B`eW$aoBry$M;$vtX%_W*d^4ET~tc{ z<TxbK6u`p4BZXtN_Am+#aN(gh5Ep~v^Jc7A0SWA9vL!?gNawn55>vFIB zLg3NgELMuIJj#8)>;`}Vh=rrsT(yl5hT-Lgmh~w}j~P1?rc&I4O9Ic1swTrd^p0Co z5mmPR;K7n5WF1y3+nJWH`PPfcWBgmaJmgL3DA&C}rDJc|(W#BH;5%d=z58nimM48HVG*M#)M+ zyn*{MJZ+GPF!TC$lC%N%9Zc6RZqrb3(#)Cz5eQ%hR%zCg?i6=XI`PwyB4pXsmFzwb1DGJ>0ybY0rXYAU2C{Q;xec}-tmEK-eL|tm zz`oyIzkHC4T}C%;ciR61vIOvJ5YI;`2ml~ZGQvo7>@GxkJr6jazFHKHtG%f(Xf|78 z4e=!G={EQ=qzU-mJtclK#B;mj5xA7sAXGU2U>5P~CFFbp&=X$b@?2=+jE(`_@oE{m(Uq}7L2?l9@e=mT)7)+lnV;p@M z6uJyu3da6->6FZZC5NG(6-)L05m{71jn>)m_#+IPbnc|4^0dEG{`$#F0oR){tW#WA z8_oJ~b+j^QtPQXQdaaLDx!$dwG}bcaDPgj(r}oF4ACKa?Yjup6BjKA%rY66Q!iNGi09D4`>U=;$o8+E=*mflTT?TM5OW z{^tL)_vZU;T-m+v|9J`sH<3ZHND-Vwfdcu_qP%HdkA_;L60LoHRI!|z4 z;lA8`lKcIwwRhF7LV=Qsh|8=ZNAC=cb%9l%4$_^KA?CBK8ru-zh1Xb95qPCSG5j<{F;(q|VfFXKT|4&)*hD zD^h7?;&YChk;6v`jjsQTQmed|&KhBS?rwNIwZGuWk)S^%f`FH@_ixxeFJKo_gW>=* z6W4M=@Re5aVc31~39?tNEdSBHOo@e3b(ga%%I_)~N#?J5G_f|Lf|4|I z(#!(+u;@_C@s?$qM{z}Kd#g~SdbmKW@>$@?UBJOZyX9iwLl}2XU?W_DN5`{u7|^)g zO7mq=tj~^5pXB%?-#?By{;H6<`NAl))Wkm!|7{}+5#>Q9=SuvWW5z?KM3dGvN z@0P}`CClG<7IMFQi8{bNAxs5|`sows(ytigL|(gQ({z310?8Nuw~u>l&MU?i?!Fn( zvE(2++oc`G03x|K=^4yGi0$}F)4Ff?leY6R2Lu~!u_263dD<(e#v@0K?d zsGt`U6L*dfKKs_CbLNuq@{eZtmJPq+y<^_JG_u9Xhf@zSM-^9Zmk+gjQsW z{p&CB3nuk*><|R&Vv>u;zK4GzF;QNxoE#fyHT_97(;LpVy1)|MPtOxK!3NHYpoQig zy+K&Q{7_!C1EierlM94;QlP{>eM-$HKx{0#Ua(OW>=GQo4h|@m4x2hf#p&t2z2!vt2QgZbCYa&c|es+ zji{1jLn18sV08M(ZoO_G1ZyRw{$Oh5u8BPfZLMdBZfL%d%2>YU?<<_A+H939%=@WRw zQ9|&eL>~3riR9}qQaX9{93*CKd=(c-QxjVe@ zn5k&pTf|iNqmmGim!ww$p#}<0VNi#;1C^>=U#?SzxK43mF?0j1Xc|ss+Ob--j#xAz z@%IHVs!+rUz8jFkex!f=2k32X_Yg^w1irvHMNZzg{9a!~!u)C^pKgsTK#$dOL)( zK56y-WgGZ5EG6CDUbECuIdx-ujiN!x&ujN%(WA6z|E?7c-M7XFWq#mB0NA)rXc3A# z4o%pF;g6&b)O@suJoE^YL%8Q1{=dn9S}h>q;a<0`;_bD);eK8^nCsTC9*-nMlF<>+wS~^pf!=<-WZ{-IDc!yG0U|;+FTav;t*)3q&8KW;v!Jj>zNFr)wBX7?n%T${*9nCHT*7Z(n@O>GAjw zb~Fgw&k*4g+;D-VYkQ!OyG?3hpR|gWDtdneu98|V42Gg&^Ot8&p8oi+FDaj45*1V> z_KTk_B4A-ZKo+ECF87+-WP^GZYp2RPgA4AFc9JVVWM~mrkuwS$+sy|lviR5yb<^b; zwVF0_1W!>C5A-`;)v8p=DXCnn6l>{t@d=FjQ#lvS&dYDJ!~7lRB_8Bkw-Bn$DV`|p z^@VApH2fiaBN{?m?yB7_ZYQ`4lBL@c^M@c& zrXGlqWmp>oM^O;pWzF;?dIj@Z5edK}+XvWu(ICN=S40H5hA)ptqZvqK@v%CXP9;g{ zN*FIw#>dEq!8oCbXdelJGGiJxZgtv-w#L6j_b}h?iYnBN-00+#l$jhH7U*j1;8E#q zn3_?dhSMjHu&}MyuUUsTsFcKYQM8wQ9BEZoRC3kFeWZ%#N3&yOsU{aLjOS!FIl1_? zAzr`R4K!Z?kQ=#v{f98%P^3?n=8xK4IqVYs1o+0536 z6>WW%G8sfOgXT`9p@DarSX|^wBGZkx$xS!l+-g2~`r@ajj~}9>+G%_n9r%5Ny2x_# zo5sa?p!8*5LAEdL4XCAJ z-*N^e+?2IF6n6T1gT#;{Y{s{}v3f-GC6#xy92yJ8)@iBeD~t|ryoVWVZ5ElaWi zIWpni1X&%U#ujAs?y7gHb|t{WB4d1Zb=K%ha<5t-uS-m39#mG5#Jz=irR-8zfYyrXyS*n)*6uzODG1QA*kccPa!!2Uqbjcew$L{SH7+l zY|z%v^nk0>kdW!GFr5 zhFn-59t<3s3gbg;53fKju?QB_Ygm8HZ@8J?H1{6d?d^TTFh_|N9W?;-xr|->dfo~q zC4m(z)Xq5s@owWX$j>_%E?t~*rFQA8G#t~eNj2_JH^_OiN0O4dBqO&MJw}po^t%80 z_{|$EAnb2=?V884*=0wIbCfRyfC%kjR*E$JfiuAH2BX&9&d%CD-_4qG6=M|%eEYRE zH#aw8RUqB`bb?*u@%YqFl%7Si-}rfQ+8x_2zD*umm+Ih!z-?9jUDKFi9CG(>ckc!{ z)Xk5+?IGyS4SV>(H?fB*Nudg9$Ex5-F-pV~55rFV{L}Nm!#Jsqbxt^wUxvH?-um0! z{Uxl2rhj|+<_^EivgNv+t$+UX`rrR{_sueCn7#0Ol?m=+VzjhGnb&09`ShBE)jLc7 zd>6G5MrxKv$X$Wjxy*}|l-Ut5=s7_h1DO-%&}?d@nZvi-iKidHNv6`>II$H!EzQF3 zE>aL)i*5;tm7^gs_<39)o;VVy>V$g*ofUt=Wr#nyZ9{kuI$fn(xa?OnqGHC6C>c3+ z@yS((8_mn`4O>cO_s*lbZeqaIkfaR#^xX)Wkk0&<7Q^Ql)R!>1VPZl7Z+_PRE{b8f zi{QwMHWJ}b+FK}ANihS^bahGUTexZvDJP!letQg1O@-9D`G>&ARX<{y@_XK4#LoAh5< zy=P0=AJfc|OP=Qx_~TOceOe%Qee(mE-@}~tOo$QCS0B*}I{k4e`#0s>Km;yjKT+`C zma>;=`;K0%M6E3LVFeiQ;iEVGiW)DMvY%DM-R}HC%Fj#LpS%q@d$@Z%J3HO-@_*L) z{wb`lWgbGR9a|-~KK|Va(9r z8!y=iSc>rO-YJOp@FSQxN_)N2@l=X)Kl+V+8uWP)rB+wS=W+4uUYfHg=!BV5e2w81yFnxu9Or>tJU57dMIs0q*DXVkc=-`h-Y{3w4 zUS(td>(cdKyQek00e7)CUrF!hKi}BfF>6Tc{~Q!TgSEw9vwuzy5ZrE7_yw)MW=+>+ zT(uRzS$yL=Ac4OkP>DYD}L|DmFKmYAKHX^5=r^o|}RxVL0Lfdg= zhNf?0YkQSQE?$^g4Ou3Hme=FVkSi&6_H6IQJqv=$nW;j1FU&ku~ zuF-I}A;cjTDMrT4F?G_W85K71jx|0UJ31t#)mR~ns@!H1zM#$WaeP9%=gFuw|2&6+ zg!zoLjyo4DYvV2iHiPifB3pQ z)yrJ+FH0&X=Xvk^=nCm}v5CekGg(eV^?F@Aw=Uzpv4o^%KP7`{xs+)acRI#~$k_o?>iH9`r0%!LXvoRwlOOV*q?Ym3 zAIjh4o2b*(OuCol2Blz)z?4D~jq2w}zY(4C`|yz8QG7ayzewZd?EX@2NZdqoSkrx! zX4L3P8A91R8}1{E3}>~OAw`IoadF@N@_DH<$6tq*n@ckW6Z;9d4`|6dOV4e>uTRiR^-*5XmbzK zFvpsqaLKP`Oe>?Dv~Dx?h7!J4(PbI^$ILq!xG>kmGF&#`Ma7b5kt+8{vh*A9NrVbn z1;OrYZslG?B#+Eqw>LK5EVcMoHjMd^HRw`L=M98=MKN-ug{u6W)A9L_4|5YyFuanyAK-aFL8p&CzUmzb>1j3n)t7xr%F_Wi zi4$^RdgR^};)!6BclU48<-12qp9N2AVXQeCbH`J7Qbed>PMk)kh`~l!Q}`#ZG7!{q zu-AAWqm97gKEjbvcf+%IelCe#-aGAXc>)arrdr0sx|qVvih~AlxONJuau{DOZrEa_ zuu#yVq$@}w+#EUAz;FXgES?eH$R13{Fry{RaZ_ttOJ-)pnn`vaL~%8lK1h@Q9Pn_B zuvS9aAe5wN!OM)m{0cEqD%>@6|FGNqzOmk3-OAcKjg57jRQcD&dj9vXO%%Z>)xPhg z*4LB2l(TgHQtmiyZGDq+YA^m(FJ5kJ(*Bbn9L;q{S(fsDYQ3L(d=Gn#M^4Jr^twn?Rt7dZ7 znkZ`6n6yF*$Eq652X~M5xO&8%{^#Qs zI;W{z`CJ+wbnQFN#r?lxS{J2_298J8nqeT75tL3R;Nn0J%z-Pm9dLJM)e9M~N5dcy z7|V6I*D)i=nulG(F5GXB8O*hkg#OaXaOrN6fSUDuJ0WGbj8sFqC9w;^6R4k{c`eOy zxq5Ts-YA&JBosP?kyoEp)0@DL9GIN-E(3h$G`haF{y*<1IOJkE~! zxjX7|%JS0rWS6er?h()66u(6kAp=6l3t6q6?R8I7fM=%stWn_H3M?a+4~K6NrJT>ilfo|B{3)2Em{sgUNgcfafIPaI%`VQZ;+LwOc<;k*4U%CV zJp!nfC57H;!Kc!@%jK^FTkuCP6#Bg6m3jcnudT%qk+#dCR%OLYYgjx0WU`Z0(Z=dH%_le-T#69iGe;-|b@_Z*RWf3Gkth$0&a`S)%hn~F>+do(iw=THmOX${6l8!-zrHwqbyk7f?MnfwL^c@X}Z zN+fp+O|PY0m}Imm&FXwa80GM#!~y12{6G(%-eAGQ=^DAe9#hF}xk6TmqT(zfm}CW_ zb~Cyh0do_-?fuaNsi`nAI2&?`X6Dgu2i_iS-03ad<&Pnv<{F{cOY1`%zufm#FPB&j zV4*bnORk=k90)|di36jc_{WQ>-NfNT*PPtOhX`*%vVTuGCavc8IGgvo1UlcJ=byBq z0rE7IGVM08zJa{g{)&r~?&Rgz_lWh`k;ubm#3+E7Q*sIhF)iz$fJcH-K34VQR2$#Z z07%ch7~2VUGW7s?ntcM8B*6fT3_0nC7p#E)s2-MUbIILlzJhUn4j1Z_r9HgBy>&rv0g$(;DyVcQtBOq z3j)R92}Ce{aYg9t>3;sp{O#$5G%E<#Q`u|F^NOj_X#!_79Vh&6-W&|IL=qmv;E6$B zw~dJ<7JW#Gn5g{>uIQ5wWd9V=DVHs$dOD{kCGuVDp#@TbD}A*h;A7ISFt{T?TSPpt z;B*LmJa;;CHr}Gc`D2W|C9$rZ%H!I z%K&=R&Kj|@ii;*;Y)%6EHB&p%OLz~^Z&jcm(>=V%J(j+P#Hr~!e)(Nf_t z7t)0TX^BuF0RT5wR=|{Db^Lnneu8VK^CZvy%BdKV{I!FJ(8&i@%p$%JJd?7(U33z8 zf8$%+=sWSy?@Fyvim~&TCbn9=IasoBAM6Pn81UwH*` znTP2?a{uL~K9rjIfB&EV8z{Lup0^W^L386WK#9WMl^YhJv7(A>8Qx|mkT*zdzudF% zVL?U^!ZX#lf`NA9tdT#ebdDOF3pKFi%kT6Ou3ZpBkH4a&l`*fdIuFEI-p1>5;JX&s z5y4Wr!3iFRljUx+@w&NO?p-yl#B%eE_zx87;PnIXSK!g5RpeqD*h<76pWchyN=OCbn=1m{YTfV4<1M1a~ zWEnq1I;ce-Tv!OOc9>m#!smV_8+3nMQKc0>;VBhx=;Y;SS)f&P3ebNS0&ME$* zpl0MB%M=K$QjX{ul0Z~x5Ck~E9q%HpU#WXp(iRN_bvQ#7%WderVOxR?@5k_3=oX=KugGXQ6U<5fO$cawzN#o1q99U+=eepW(g?uEM+5PUVU%aw^D^5j-Ah)5jR zeus6kkw~R|3$5)%HS=M}!h3EE<(4$tQb+M{e$FjN#}}6$IsV792Fin$)p%szgNyfALp+CPdk(v}(YSN>pX%B+ms%@Mhd9ez)b!n}nZBKkB?UyUgN{$$ zi&YZD8Ad>^8vC3Gs~LISy4_Jw24h>!cC+CgayxlB_GZI9O_~n64~6Sm9$Xp`;lD1p z743uLX+{Kst$VZ-ll9o{Xm7Z?ygW3Azsb9jS5>GDbNY0x%7-O^Ds?wlJKU1xW0fEGdmQlv1P51Dae5l|0iyIj4rl%IlfHf4h7i|wi8rV9tR6N z1mq>K`XKeg8zrzZ1h6K>R4PVuVy}2A(>}2VF7|~!t+O1kdXJ)N(n{7^QERS}`lkwZ zF;^d?>EVB|g3r@dF?$~MKs!F$+gTL@^jDvLxcmbF!q1XZpWg%cOdn^X=Vq&k4G6A( zI1V;$XV9i23zXN+9lZWnkv{ylhwrf$ly8#ylFP(S^yYXy{&X=Z+4$>1=*26Bu+oQp zEdK1z$YgiiGvTIqwkDR4*Vav;l^ktpQXeJi#X+_B{Gy@O(1MQRf)$Hh% zCOlpvyfeVkWy0#~2}j`QY{m`RcxB4E7 zl^M!r^{_i2kk-cf$|wRFhA{$&tnI5+yvFSzJ1gx79kK~H7{=$t{^5fMqfeF{yM$5L zA@HZAY2wcr3eWOiN5m;B79a@mjJ)r0gjfeIeosJX4SS&0;P!fZ^WNsp#`fk81LRqZ z4B33GvR)i=b$C5z*;IRne^m_YXRMr#&PT(V!yfKb+_hGFQFCc~|A=<9gg1^W!9nLI zS6YpHH+swMC8Ch|#Fbh*(4^toK_GVu>yOu_{q}N?J!yAV+IL#^D=vif>W;?Kt&UZ> zg5{%vc)1u@ocSZ}V@>UH&7D}YxCUrxsEjvg&@TmTg2X{g3j_(jQm~kUO2f9rRJUe$ zD84;?kFs7dD#c>Bw)dI4AP3#~%Uy_K^yFc7=dO^K`+DjOa!nKX1y0~FC4pb-ci>2v zS|K3FfKvg8urtq_Tp}zGpH>1lWSZ3I*D`>L^#hn<%_Jf9$*h{flolHSas`AoEw33d z0HkPnE!P)YP|Y)odJ^b_-fYDcLvb)3E~uRr$=eX@#wX+4m_0~=UZ3HE@^E*DX6s5Q zf|wrtl3|C9v_dFJs8=4ZRXkP<0~9iak2Z6UW^*;`#%lG)R==EG?!RU-_{GXolLf{_ zR-T-;XzSMYqhFYqhn%fBNd-lZUS!&NYC}c4eTkfnZg`*zohvw1>Iz^ZCg+ zlA;E;?iFI#=4Y$h*J-W3_wDVC9o~E^FnB>i6B;VrMeGT6t1?G5iUFMiu?{6-aHxtWUvXv(N;c} zfdiHwcG$5Xf>|bsl?DO;&WE2sGOm~pDyqx)nw17Hw|=OQC7lIqJY7*emqQ2-9pUgW8P`f{w2bn~$7B$O7PsaC?S!uR-e6rTU&;;KZe6wkXJrf@&j3EktTVEO)6ozwhbEzLv6H9T3O z!`W+&ZUG36%9E_jdAYllyIGFUS6wT|Uub2!XeE7ejH6i{(fA8(wb#8dy|^AGJFb(( zFE8fzy0i|!l=R`P?(XukpRc(65#q!nVhYpSo0T)tpIfgTAN|*Z%4~TVH5MCc>5M$8 zV!X*AG5&``(XRtxi;qUl3Vs!Q{=!Vgi_;CfiP%*dXbg5Ct+*TGd7$*V;t6S#4NLP#B@G&!Yrq>QaYIV$&F`w zzHuEC)15aF>GtpYmG3sFJcPJ| z+LRoqVhz5I-n9P?o9Z8P*iW8d{rZmE&y*^+ftFf36ftHd!#Nd}Cpnz4M!avB)p@C$ z{Oax$i8%q+yBsA=Snk+i*OD(QGp1=?TV5cUHQd4toTz&%LUMP&$Tm*mBo(Ag1HIK9RIV5<8-w+x%SfpZEB=z8M%*33n=RL$PCUO?~G( z6^wXrs!qnN?!+q4e$}>P!<>lpc?Wg{<6x3cQSi;|A0-SV~ zy3MK*4+yAHktwXxXN4h_66}ypd;Q%d4MK9W+qc87Wd)q~Q`cWsjCte(6*@v<-i+!ZjzW4NSN|koCW%&%(cvUmKc>C zVNHg)mQ*>jv+O*($SyJB(!8ZPklsnTWx_3|;4lAOv2Tz*?^eb9=w=vcu_c0Fgx4m1MlNv9rlw#EGfq|;wF2;g@MB%FN>bK0H~mNa zyQ3{2V`n>*Z1030>-Iy&BZ?A~4k+zR)j5ml;BFe5m#Z6fwFPw;NCg(fbg+-Q8#?*> zJDA{`slw6TF&E-^$%mJhX2{!n$4*42*Nk=JFgY)wl)k-5y2-s3k8ga#B50MzVH7oU z%V|VKrW)H+s*o#7EYfdqbiGrNa@XMH)B6l99RP+uUh(z8oSlwnl< z;?w~tjFWRqUa`FdYthw>e3l3@aFbd4Y0U@rBN-^|=iF2bE;NM4t<4dzbXc%PxhGh>Fhl=mm0d z-cYv9g<3=8;YHC`z?^ucUfuYP-_9j0!cl6IDpc$6}{9IS!`uf_|TGm$4 zHi>W0Niz}J>cie3s2$`;Tts@zPH_G?awgBLcT}J)yr#maU(R}Gmp@wQ*aXjjTa8p& z#)ppMQ1}Ngq)xlw9v)Rf{(BIg<*SR0-mxN{8)%vFd z^H|@!(~2V%ns?TfMeOO_!Rs-2clTJM|1^H^;NGXV8dpn>Po-|Sq8K5VNN^6%0~Xb< zAYkVK&YcIicU})`%_m_Fw8dqq6pZf@)+wXO=%Seki^A@_QY=0K*4~ucM)XeXJurP` zDqmB23WE;U=U{aPwsebw)utY&8BRilX!fxp%gJ5AcE;iG+~;Xuq*ZuHBnPQ_HnS>G z#tswdJb=DJ))Q0Ib|_dkDu4$Ml8E8j>dOq$GMisHHjQfw z%ZjlLwX@C7cN!b~8!pKK?}%sI%Pz-*x{RHyXAT4pWEOTnT(0pMvfzo=x}PB{JGeNc zop+uBS28AiWRMIP+tw6^gob#$3=$ZsZnkOWp=!0We0nWIwAO&_(4v_pk zjU>L^z93nn`mYNzTncIXz7kl$!J|#+I=s$elq7tB8(wLQeXC^`JkszDBs=%9=Ti=j ztBNU8D5$3)7Z^{EZQ4@wN=KAr%`a!ZSb*QyTd^RkEOyEkQLva$thAu>H68NRtZsll zr46~En|yo8XrD6$v0k)W2u&A^ zbzviMibdOnz!-G1wu`)M97Fvv4$}47Ls{PS0(cgiu2Y4hA+du32SmsgR=z^vh~lL` zw+MF8#h-pEO!8x2U~ndg2}1mECEBh=V>p=jLJtUVC{BZKLOweu;)}Vhh6zbsfcPn} zut5f#r&Os);5S!FfELBUJ>wSj?JOuNt$(4?dagoQZP(AwN|#19zR<|V(*A~mqf0U! z<{cy$#cIoP8dPw!LSSSDIob=;@sWlx!z_!K=ncd9@|^b9c~ibToOOn?9)=Sdo#)-f zp+O0z9M2o)xk1Aix27Xl_k*x*uRQv8Fm{fXN1(>XD;v9Gu?|@kdWT1dJB$8ucOz$~ z2vt`Oi$i*lo>MxcTWZ@%C)-aualCy68n3QrX=kLDj5%;R-VL@ZI`=D;W#lWaJk8&| z?qeE;s=gQTafca1Gd!qQO(TBtJFFV0?ZGVJmi-BGDszVZpA2{L3U zW!9nwm3HJB;Rk;_>z)*de*9U$4h))i#7C${EPh+FQ1+E(zYaGO{&Pc5vCT-l-c+=_ zQON>!H_#gfD29WVL&NxH9i(Mt9Jd&wasZk<=|D{%Q?-q+o_;=xd|dfki%s_YdxX|* zWfcse8sd^CXH~^JRx~M;EeteZaMjf?;w~uyPB-67svs8M(g30YV6I#v%$aNG0h!;H z9Hi<^6mgLAX95PMbV+XT8)KZeZhv=x`Hz%r@fXtkm*#S-xkg;e9*VCxiU4l~>lZ_R zDL4`o;0+K0^_fH`PJEcc>!0FPi*)_@r)RlaoYv6d%5rJ3$Sy`!t$1}lg8O}m0aQ_( zAULo7{O3Ox7Mzi_r8mi>G^-*)5Cs|g8gURjHpW0&AR%{=$(TKYURf`Ul@w~^LwcKx z%^?#Z6FiGBUuYPigWWs50*{EPdI(F6>QS_-kI45={|m;4Ki(TgSB&k&PtSg-Sv#Eo zXGfN1wQ#9W;l=$K&z-Fw3K6^~K7ENE$M0b(xVX|6K9_K@Zk$@Y78R#4mtA$?qxG+j zI=5m7d;5fk8n)$P(lM9T#kUU68qYA|&#_CdLP(k!BrV34V|=?tDkABM$x^?N9cI?AWe?POgG6c zecIXkO}L7Nb^p2DpF6KOsxDZsBO z{H@=Ewq-wAl)Y}*8?TRrTWoAG?FpHsPREauD;%m zLy~B{y&1oD__`NAP{KKcu>*VQR_kzY4DRg5_*&c6sYrScVVa2apLRGcfb7mOiy^L5 z1~m2$etd>0xwd<_2M?zojxH8sR#c51}4#;yiraNBsShV0L zj1?X`?wV8vRRVTuAT<>J32A7%NR!}G{A_FX+xh1@pF8>22J>IZYud6EHErFBnp(J` z=6$R#hZn*%C7HL;43?$sP;@<5ma0S1_h4Baw1r->kdF_RS-=5G1ME2_FR$OOj)yE__|Y;y zo4(0@@nkGd#2p6^MY&ci%;4Ln=a^4uPrzhp&6d;?YlzZLv#1hylAcOaa0)XKoz{JWO z;3mEWV4gTugR3XykBBimb<5Ff=6=K_`M!7gN~WA0>}iQ5EZ#ygaaB4b8D#(_^c~V~ zJq6K@TG&N&KkV8F)lr~I?IU}_V*Vm~%j0Om5%CH1Ttu<=L*PCDMcR*%Te?0`cPXpxcvUQ`n+$_b ztV9^w@@e{|Za87aMNBR9!mTP!N~w+gQX4o$wk8cM&!!K&X!wdn19a|$cH(DfD13tK z6>F)XnS<_d4Ii<}laD&h#We_?o`rauTFqN*JOpoXZjwI@%Wog_O7L^+ItG$ag78N7 zeH`Gx3FHOA`CXwc)LQ|<+407UB|nc8-fh9H|7@}eL=*ORh;zVVAh&PdYl9c`K}2?! zKwI>9r}-+F)FG%md=ZVSaVbJ{-_7}v3OhhNy#@7`3b*zWE=R^KnD9{y4tyIp(jO_P@2t^o zgomRUf`BoTM+~rNt^BUMCO#yh3_NFip;QlW_vKRYeS(OitAxv>!WfGPd`ACgHcdzr5pMcwuN%P_CU%rmn3~aas-cCBaMBrnfhW5}ecr54QE~ z1qhO20{M4$yM$1gbl(ZVR4jZ@QJ zU!Lt=?X9_p{Jq@|@StDw8g>J62>qT}JFL)p*7y1PJtV*lnXJ#RHFwgtmvIa?%&p7Am+zN>24A|(H<=GRo<{(}+<7b* z8C48DJ(9~??AzAz2ia1xf&9`L;Lm42srl%VCy2KaNPAC57Jc3JeNp=S%8S;Ynt;;X zLjBxOzbbwic#V#ysSJP_Z1`H&Rb>mdR&I(=!VN!X_>D2+hZo$zoM5RG4qO2W_da~N zaH)e8;#+XNk@xoo3kFm|Pi;VE(NRC30(rGo8PJytmpX_80;j5>8&|)7vHt4d#ly#c zeERC(`O_c%@aj9v3)(w7wS`mOShw%1-dVqw>0)%+TUk75oplr*ytlK<^;w`|_0ybk z6gjKkv2O=Sv*D&El~*4=dG)eVME#{ja)tJCOK~`nNQZJsDAaluc{WPb=Rqe=y9N%3 zgOx<~L;b7SKfUO82ph4Ix+uHb+rbQpAICFM1COteJNH(9dG(54U~maaoc z1cWc+^U;gR#pMXq8qj{|3~{OOsyXajL;uvA(>NvtbhFs6&A}CjGw`*Q%o(vFzo%ELcyq^k>gsw{I$b9`f z^*T*OJtg!(Tzngg2eH-#vLAS#?@d3lRDq#Km+Ek-i((EI^*69 z^Hxf(0)&4@rDF69?+`U5WU-;a{95?SKYr=|s3Zq_#_=W}A| z^k8u1Q_PULNP8I%gLd?vD>^AGf81Hy5^!D#l#9 zgXM3UZ@yXDZNcLq&9Un&s{@`)cTBn%$%7m5B@5|?Czl7odM!&I6Y!)g=m ztqVZdroJ7#;OaHH11K-8W6j(NeD&LHs4O56x5WxBwlK^kAPdO}4Joc3qJQ1lIYP~S zCzLyd^HZER67V1%K`C+FbkFJ1FFoJui zo4=3sw?CWA^q05g(EbvxSbs;;p-H?CQHjv^@$ht_zh}HN{`Yw3f5$!hdlz z^0Z-l2@MGGvs8YnV+*J~@#+#S#7N5#68Yh(z+z@UfQ#9`R`d=byFwExB9LjJHo4nz z1F(SI3R}kUz+2H~wysUu4vFi!I`{p^#NUMS7QrWvEf@W_#1fKL8U})}gv|5~H2-ii zf>J&od^E@Jh*+dmSfA;7Pk0<9>eT7r;_7@RTSIPQhK#680+nVXz;AEQqwERA5{Z3z z)_NGSKL8skR8}@imPW4zx&@yRG|ipF@(GR$7jMx93)Rl(BTVb?99GX{ z>R(B2$ndLFcz03)P9zdPWIG&T*3J&g+l6D(J!u-~6uZcWx378Wfz7^K>gcx~`Rp0~ zKY&SBKJt^KMUlhOGBC|!fhIyc#rr%Gco`7(yZeEi85O$*uj%sg^kd5`+g`JdARgJ6 z#@{I9#-KMNh6F2gn)FljBA3n%Fl5pG#(~%XfYH5>MaGT2yeCHX=KB53``h={?{B5u z#g5N3MfyJbjeURoLf@cJ<;f+{B_b!N{#M2JLANWvRln~%SPQzXvCVjMi@%F=yv)t{ zfXbq&-||aPA^9)aL|rrRPP=BQOQPaUlY8NZ3KpkmA-8i3^~#-{Z!0`hM*a&8B!VxoNENrLV8n8#|S-)-3puuAx@g zwaR0Z5qr-=5Rd?ybWIaPLy87q7om(mR<(c_rtxZ8WQam#bJh5uuJo;HC>s@H$ah)# z|3{7rg)vkRiZF&yMq{WJV17qmF$Ps*49OmdZmR8 zH%d4*3MY2fMZLz=5bA?q_z)%CXG6KY4<9lbfhXD@TTp4i`S+t!m0(|T@cB9(us2I_ zTMqMIuj9@anFRgt5r}S%BUsDU!Q!@<8GqMoQq0ZKI?d2O*ii0WIfhEI!DkT2MT6-I z%!A2%LsPUa*|#*g*xmrwQ0q*J7K!=l=dC9wN^xe2L{(rvFy>%lA~Sw107wOXL{yRm zNL;Z+h){m3?&SlCi%@!?5LGh#GS1>@3EJWb@tBW?d6VU)A~reSV3LzInS$w70x)i>MA7bxf*~Pg~F|)3cggch+ zclADr(^5XLTRT~Keg6YnwQw!CM!X4_>-DGCa} zt+^Lj~VSMThmqVSqO{`EJI7b9`OO7ywkf8*-5QE4zo z!f6WV1DZ}wG#KR-(S8(BaKsd*G5TN!G#`A9xnv`p*XPN(R88(rJQ&Lw+p`u=Z^ZcN zNY;M&!Z89|MrlOj=6Oj(vIq{Ws-@NradY zVXoI=xRA`O!ee3B8g|(0YsEr1S7w0cOo)2Cc6C&G&3$k`Q)*6n`p_JVB z;{3&Ad_lmGkDwtpW|tSe_Sn{})53D;!YwQmSF*N14hM|gCN6z=Q{01T&9%lso1DYl za42{FPdJk|FWldYg~OC2Vq?YoRFG;?i-B0T-tM-nK0)>f8KXa zO&1_ouoOB=@g?Dk9~sB_l*cB5T-Vq5Q7qrWh-H|3z``|dF1j54V_0GK_M^$VD?^xy z0;p$6HP6{bd0LREN^_xDjPPbihrzTeE)v!WFEc7SP+tEXnDgjL*3HqeGc5c6wShSk zFBN4kG^>{5MEc;|rFk-Qv_?UOEYd z^n0B;h<}JU#B3+g3C-jAevMNH=}H!UHWR(@k}l)CD~HGoE({|A;$B2G`l2fbILE2K zh^Uz#NqpDsax8&~HO2=}9N&~Eg`!eknky}`+7)`TaDWli9(LeY*F`G-iR`k(C| z;wV^xn5~w5V0lpQAHs8Wk=#E-{+*yk8U7(^)1hjP$A>fYr2cpI4^cWK-}g=d^_=p? zvnLx3vs`E(1(#48@3q6#Mt+KtgELXAyH#wm{xf|{yp?H0SAHh4n?T99 zfNjP;#U+i|eStrl`HcTD(;5F+bwe?{F*@#lOm}VfotXo@@7`-8@yFO_+J(D6>!SK_ z_4^!$BQ#h;lR_@W?`>?E<)2Y1scK8a?Ip1*RN`9iOh05dS+IH!KV@e*g#o$gmb`O$ zP_%hSnlI5bFh5LXMcg+3VRjkFvJilG2fK$4QmO}=c_i7eiQa$uG<q}02;0#cz#t5^(S z_`3-JTESnKQ(bcyZJ$Tw-EADXt-aybds?hVjHRFx{3sQ}^}zHuoaBV3SFrkq#)w8C zY2nL$n+ZYi%(4xtLMErkb2tHT5O+cAdmj~8+TwW1 zteaqER9Jb)R>(*beyCQiG@_&9mM_0uRL1IXE|K3Yy0# z9G+-zI>T*nB?~ig9z?hGmHjL+j^ORf&fKCMQ7>f1QnFCUspOnnDyLAK7`?A*1LJQ) ztEp63CJX}xW;;sru^*fw47(f4gOyD%H@PpU4&qQ2yozprxGNEAxyjc)>_azW*SHU{ zvqy)9JE5bCUwO57xEw51^%MK`SQgad_mgXZGjHc5Uqv=7=Cpprp z)>R6xt}HzgTBumZoawRn(Cp*LLa6Y=Q$o&*($0@lbP1p+QId1m&dULSSkvqzcB^s% z(0h$#ePNs*R~zqFX5eodpP1(JZ4Lo~{Xd`XxME$0V>Z2mpLF{HOIJIGn+V27SC%Np z0N%TjymvI5%H6xKfTDYI6%aiG(4=_^D7weKTij{y#=EES&^?)0VqJ`J-WLgm{1V;A zt)TLkI;8>;LX}~7;9?JD%QEV2>IqnMjf3Y86tpB^hRMKjZr|3Ye?54B^9@V?gu4@t zyF7sOU;8p{n%57&fE1IW*AFYqdto{eT>}hRFLhvo_EwDETmVH5MU!OUgpDCs^7#c$ z8atces^{w)s|9yJDR-S&d&*7W^EJ+qv*DXyLB*wtcLb`QjC|FLj1piGivk@?!%JSF z8RBM%mAi=qp4CP)5Ep7R#XvBHl02%>#;dYWW^R?d1!YWVRPxI=XL($@zWD=s?`c+0-TosLIW{+)sK6CN)CQUt6%_w zlV`cRHAGM>7c{6qfmew1hC6vG(zsE(r6$2QLX}85h?Zqw#(N#wPjCi-T>nV009w*u zL52|1l^I{m0QGsn+}VX@JBMC*VASyFmgrcbuC%UsGYdYl9Kv7XY%hPH;?5k!V6Hft z%1>1A!;6DQ+$tY+gDf%ir8^~Spez^7rdczxhRUiC&Y?{7Z|gc5pPAqy;Bosl{yin+ z4OF$=9oCU`WyzM&I|X-4{`DI>hWiA)_#NqO#NGuD^P7Dh{> zs@XzcW(yo&&5uZYijyPE z!<$7?kTX`4^d%Pj^g+9-6oMQgM^w&?qzy~25ADvsk$ZjvQF92U_<>Ii|iIF@Dp@6MVp8mbPE$-0}r{<~8t_MfK z_m>vJ_P25ft~osz&+@MuTNK*v9dvvN@%RQLVf*%m0tuxmO&x~l`5+;TMEH@u{WT_D zN3OBmxq7YmL!q!x4lIk53pG&Iq3=}6g+_FNJ4iVVd;%Ed>_ncJ3FYAz$z7}={7 z+tP=2#2~N`ENnjJfv?RT%J*q+a*FSa*%O}9{Jr50!!cY0khIb~Cq<}Coo!vEvP09# zX*W{Wh!rBbjL(Dclx`m=)>tL2+rBFgmVF!tp2F5@a*z{aU$pHe&3tn zuV>6omOFAx8;7?rB3jtn2E3qv9N8@#EQ5C++c`^s5;$tyHuG12BT#UG2v!JZ0Qv#L z{n~B{3K&8sl4he?Qb*yi6w$^vJw$&R)1e_BUNJcSn{S2t6L_6E;V0c+F_%Dx1W;&- zO{Ypg@4q$5WQYRFR>8DRlOZjiBp=RBaYLa~D%xO(fLbboEx_E(8oFY1rzjcTTase~!9AsCRJO== zG6B$o<&CU|+(n*_8$D{d|6g}>+2ifhu>Aas^-fU**($}bvzRZ%u-ucNhUf!{g+G7o zNW=&zcN39Q_58W?zCbGVRzP_yDmKPoKO!W@5FU33k&yglEUIAP;Kb2dZ;~2%q$lm5x2cBpK z+QSa__FOX|Bw4A{z4=mgAxWBmAP~_?DCmB4iJe zvQzD>K2S+%fcL9)7Kid^ex4%~j)h{4eT(#r7CJw2r&A!5&P@*RcaDx2yXRpM8Y$*f z=s8M3Vm=hP0Gh7x?+Znqat9NWvk-BwxPNpF>IR2&cet`H2C47~@jhdG9Wh2@Byn*@ z_mQDGjk%0kD%AS=QU{4ZL`9<2LiD`b0|6bb#MJr65fQ%78mY(%?1~xDXBbC8&TzzN zMm+LhDoWyc@TZv9k})#Sqc@S|i6L$3QO9q3anI$2H;FC|7ywE{SPGFGO7pNIV2(|sQKv&J@nMW5t{)aloF5)boF5iT zoWB-JTz|KP@~MhKi0g;N64#H7n6hy{WNj!Q`B1btUV2M|OUI!QBm`^nfyM~ai--NC zoT7!AFyrSIX8g#*j9;+d=X)2s7aVpUUJMGVA#d+p>>n$vII@dloFntsWbljoAKx%Z zo$PVwrDij755&SCJdAkVdZf$d`Dx1A8~WE=-{y1Gkw|Lhr+DF6DG%o4hK^2e$io$| zor1VUS`@;Fmm9Bsm3EPR!A0=Gqx9~EyvYrD)5Up9nSA^Q8!KMHXiUXZ7}6i7=2o4< z%#2YWo%68cmqZtTm$^YoXD;@*1tnJ?g#-mCqY(3u1y&8PQ>OpGPbr<7;Aa67k}#Zv z??g)t>gdI*mv!7o*wrF|!JwM;alM+n1%vcy|MZDKftV_qRy&U;^o`9M`pS)QdaFKR z5`r-u6woDv)W9%s{ICe)3F}Is;)9&H$fU=gMfuWt7d1=C5=hoY604aAunXGBH&0_u^I~i- znzwla9wYFTo)f`-{+r}x4rGH!u0ZLE`4#8lt2_Z4`=2|btX37j16ItKY-D=KA7gYlQZ1N#YlJ|ajyh;3Xa5i;7F9|sW}Eb(!15UM7%jv z_!u5&CAl1LlU1tWW0=!(=@dXtGa zU55d!2+4*n4jU#^X7OuQz=T?oOD@W@y7ISJm1tPag!xrlK#V~PX#L4~9CgP$RD@#cC()?EHj)7LRDsy39B@`*R z&39!bUem)Jgfg`mzKe&a7m!D_1*G3z_VQr>z>ofqhp$YA2b{3fDBE*|Jx!|=Cn;;< z48q(y4|%4;rRjm}Vf5kxd;1yMl*d{7b}y%;tg`3OP=V*tMqy$-OLMM{B}ONsVrS}M zO%osYg8$D-`uAb<)$*de6qEd{fE06*VQ;@Ahk%(AxZLb74pf7V!pOXz#xXeX?JaTb zJZ@L1R2)%W%B4?Xa=s2B&pAYaZII4B<{M|XlCOzL@!0Ybh#WtKln(4%H50M;M#X9zH_ltJu4M?EWH{TS5N=d>Z|n|XF^QBZWixZ97muRJn}t$C zl@tG(8Kp-dETO-TpFUYua`FN@vAo`1_<@xz--{4`ud+t_9*hi+$-~iwbyyGegLhvU zURx} z#SN#ieM_GARPE9|fW{-KBNuBK+Jjie)HF(Lq%~AL)8RhSJ&t%QdZQ@187d{M&$)8w zE(PU}x~$}w8<$9Gk>$?vyXiZ-P(g&*L=Xt{wvt zxci|TzhbG7=wHo80|_8TvZ_lvOi zCqN4*E+4O0c$c!Q#77+=K-XJM45UUs?6~+z6%9J&#LJsZlUnjaQB! z+bR{wQKPr)jm$-+r`dUSk@`5bi?<8Oaf8|rj^5>lTEXSZD;EHs8|;){&+2pP7rb0O z@IYZ>SVJR1F-c%}2tK2~Z*fwhzbB}y>#zKHaTYGeL=-+<^1mSZ=l<(5|8ILJP516bUq zaG3mbg(GKgQ;4S$&e@BHL~?od1dtIDYGS**i+OW_S0*uMF5ZghnuX?cgo6sXz`66O z%o|>qrggxGaYW;llWgKFhg>NcS<_EXN79`pgks3S`Gn{EBAg*Szaj4^=2@HO7r#4> zX?gV2?%SB8xrVAIG3^HeH}DXLaVBKnMd3BVr|PEK6wOJ?oCCu-6#lB2Dyg6*B;n7(t~vd=y&khfHbj?jD$DQi;7Kv zW-OkS`U9f)LI>D5TwMN0bRRzn7neU>{F+BEi3on4Al&%0_i;2l=w2bswL0e)=TB;q z7oLe>RKMtVH`cc|?&ILsZ$Z$*c-t|BA6H#CaYC^))KuHz)bmYsARmRF5FnXjk;R~W zz{R)cmnKj*r@&7wR>MwUI*caeDgmWl6u{yjo-ZOEoU4H8#Ff zx9$7Ei2~dT%6J>zMj3QSzA)wWhY+20lhxDVmIWwGnH*}fq0>mYNI9UVzA^H7=MolJ*pFe4eM8y*X&4(sdOH0ZHlFh)3F(rhv)b0rtu|$|sFPf9b%YdZ=p z!EU5=I`Z~y_+=eAE`DtTLlsjs*vLMM?|SFMQ-!3vmZy}${E8OR*k5KFaN+#of;khw z+%sxQ#V+|Q8p0h{9+Au-nECKZ=scszT1jU(l&#sbR?!Sy2{$PEh;Yu@Pxz_@pFUMK1g}a-{~ROjxlWHAN3V4IcBN7{c&nZbfpBwv#F{_ve)A@~{wL#YH|17e zHtvW9?!N84?@b4j@#TzDgL;DB`h4C89NxLh%5a z$g9+io(HUn!10|zfSP-V1{N@N@v=V}cJAiG3Gl|At3GhHzjhT!Pe`OR$~KStoK}&Z z>Amh+qz0;Q1!4ii$uSSn%0k`fl%8zuCowc6(+i-@ff+NcKufR z_J;wxSM+!Y%qx1+XCvr_cXY>QTQFdJ$lv>pIET+@~ueLyim7%-4Wc9YA5kWPSa zdVa&Zw{l}aM14l%0pjbZXYG2VXhSPTL3@LY*3QruL6^~IqHUq<&Mw}M9$$^7-%c*h z{IyEPn{b*4AONW{Fu8zq;L-ZX)nvOBEA!30Hs5tb$QTbO-E5bWlw7@tBlaC z)+-F6)NOD~onDnXDCX^8j{rYw?)ub0$+-&oNRkCmd){1pzTHhl$WORv12f)Q=b=+9{J>nW0rc_Zdtj=&m;H)jv%iHU7wrH+np4M z8o*H!5HTe!k)?s&EY!Ect-}L~Z4TH@Pa(bHkR33|AYQ39czMdvkLTuQ1BO%_Eq5(v z@IY4P=`qSsQ4(AZhF3tatXlk_TKrj5iz!rt!vrdjv<)zR+8ZG3%l)F~PSDF}r|?QH zhDCn=<<%?wOcb(Q^{j%f&=0p>r+!hk7`)&KcDgjIIMUU+VQE98g~F{`*d}_wuHCt? z1veOci~VBe(Qydx}uod_P)Z*k&yZ1IU+UR+HE zqi)RL@~}d!)9jkHV3B{Q(?E3 z0eARy)9YL?0Z6-FNBxuWEJ;HDGXf6m->ug4*F%v0?(kw@5dl^qkb>IHqmR$zppOF2 z*mEm98x4*R9M$uBC~yys=f~y!7gdb)JspisjC{z)P>8HeeLtOUMCpP6yR;MthgQSR zv+l_(!nTK@y?;ABkV{V()<)aJeW-5G>Z8BBdiwI<#nYb-UOs*N;}1^`{_x|&=iSZr z{ml(R*Db8}>e=Hzrq#OJYl{mPN{|5Nm&r^^++%~8!c;^o5S9rufe$~zVzn{ANL!bK z?Ah_;;@5`M7N1TgAm_~=E@m&UE~R8O8d_4L^@||Y>f7m3A@g@4M^9CpnidCY-Cu>?17atBJ9# zn@gRwyI>bpLVdoyRh5Ms<|-GH$?e6u>i;XsbMt>Z3<9kD z{2NPQH2d{pa$;fvpR`@F)sgKjcK=Nex?lw&T+=lSB{ssIrC@>1fC|Vt!#rT{jC;P> zh<}Robf0u(le3s>H|5|fZ3O=;Mo$jr52Ll&@Xi|N7qiA8&bx=@6A4#6=s^Z&cvCxY z4mAwkxEMK66arl7eKMr{;%WvyV75zx(fG909&Ox>Q=Plq)mtk3rBpb*1o>pY0IQ?# zXou7OLLcN1+P|eCmn*}_774v}4;w}*4xs$7+r*<4UgWTJZv~x@3Wk<97ar;tJ(MOV zuC|4Ha2HE@BCkGA^z5S7;?Pw!=+c17H^fQx5vHvk=y~||^!<0dL1?i`(<+^Z-U`5j z-L(=v!23}THq^y`88)4t!gLa_GkL3VVRS|0t%#J&@8uU+XMQ5;_)q~-#S>X&_mqxF zIcGp^J42Uw%rS6aTb$SZp*nB57 zdgl#mYt$G|<*SnC?g->+3W3$fOd7Hv3TdW6#)yZz~f>$ ztdH7UZ!+f(gpH}IDCxVknz{KQG><)IL;#F7x*_q|~)oapI4NltlTO6hp z()-D`>+d8@6h$3_D6$+^FTRW3@b*&LieN;a4dgnoXwZ~^l7e>DS4z`@`P-CTTsmZC zUg$U<)oW-em^$q2_)bM@qw@KG43zmc(k$OR7@xntI2qwaP7p;XUHZ&49hiy()NLjT z4SNrIlMwH0?*W7t&*9!T%j4zdgS+AD!QG_9UGHQM*p>6_eFbguILop1SPYOt+=h5l zzvgCU;{5VHz@M_l=YUrvZ46&X9|Gz{#FFPH$suGJDRE7iS2*iHW>MGLjI4+6d*jny|5S2~ z7}u~aX^HS24H%FOF7!?M*Py z^S;!WP&pjC5UdMc6QP%Wo{kzJSFpm1Z~~wOR#~?ZCn-<^21=sv+rbOFha^q>Fn=dq z+Z|N{5I|1}JhuQ}AZp}^(r=iA2tSRW_1=%<9o7=X*#VFnI*Db%xv53^pD3brLYfIU z7bwDmN=@;G8NM|dK-eQkGIK1AQ$CqJJ{}FkzY3X=8i4C&RULfdR%)Kf6`GzsPGCz> zrwnqW=xKSCcD3+<&!?Y8aoDNj0G+=e<)u@SId369wCU!4_xz=H_57l7dVw?<5qQJ4 zvhm_{1clmg;ZS1?)s8@|@sT#emVYy~l0QzM``GPpr@H}wtxn8mWCgDvQ zbnpHzZsD_`rGQ#+2!bn`+s+w10LNrFd1Wc@es^77o_ap zYIoo)pn1m)5fZ>Ck4@>d+PQ%U2Y}5(v1;4zc>uZO3K}Ru-nw(vE!gMARdri zI|I?S8~Cihp4v{}PE==Gy1QOzbvhZKzQw;GLB7!X1ntUsGnFYNIlQ6r=voF^-_6cW zx0*`;qN6dla8lX~7`H4*IjMQkqP;>Zv#axs9i14$*HGqBsY3v2gQpNe4U0wP`ES`=a*`DG!X)uc` z&t#>B(3=5m`d0ulDH{}DtB)T3@Z?X=p1k@Fchg|;Xgwz-)30(#`6P`~G$)jf)lXmB z$ctlLI6=d#W|b!o81W=9+R<$}x^sB9ygb=4`lrY8W-t57He=euNOQc`J>K`@Q>=<_ zrWwN|a5b*%)#bP2$<)>%KC3uPJoV*@DgK(50C94-<`3W@auYv+aTqY1mOdvJ+jl$W zPLnem(^Mmd;e+}7j~HiZ1oNW?12fKl>9$B&sB+A#kg?Akve*LqDbsz)Ny6rNkS{EC zQN6`?`#SU8I+p3mwi{Jcec z)V>^a`;%mX;ZxAs?*(Km$6F{$LPv01Axiv|9FC9;{c-eBs;6I`oi(F48AoM*)?5$U z0nnns=#=LEd<+-ednljpJW3Gbiw*U!`jE=g&aE|sRmnLnH846Au3)`*i$Xj4wUm_= zvZ4CHftw%jI-v)}(tLX{c@BzoP)`V!j-5;=nkfh%?x~sxq+7}niW3L#vS2j zCGdh*lzwW0F8Z$|R1M%9A!!1yZ>N{SHIm)~3jdsuy^fc{e zS0Qw=g1sxu-*}huh4qj5&gUCSySH;KyKE`ZMF=CmH}=l$qG;AMgd|?mWM{zfqR^lB zzZbNZTp$dVmA(V%*XrXRpFDm1QdO3_-|RMm2~6{w<(g8<-!#7oCuy3jkq_FRIR;sDoTkv6wiFqTtpNH~~*l3dsD*&q2Mg;??7s z)~tb~OQy4#9E-kDi6it2a#;oX>H&X=n;5_IeKt;0c>eu@&b71KlSX2c(RiT}Un&@I zniM#xZFC9Sv2+~{+2QycB`{-X`GLn6KZ2WLV7@UTdlW*-(TbhejLPT<24uxZgA;Eu-j^`tu^u9Qsm?P?1l!D z==A7?ePIg3zjF?6cyRpk`iVP`h$GzIxCT-ETO3_22d3k3TROwqr>(*asbjJTkQjek zFvGVj!jw6ZA{d_gaEpsD`f!Ok>hM7NZN4inLe*T|18cr;GhU9~T@jglRQ(RRlXf?Y zE1?}SRmfcHc%(b-N!kj#ySf;AGA=idpRU@>TZsnclrm<_TP3MEiQI%KPjp<}0 zMw7qcVa4M!7-RWu^_u3>e|y99a{$M@ zwej>@nbVG1V>yZaMVc)rR4nb6K0Au6RWA8Ze$0xJ@lz$GHCjEIE|J`Ik)$Z6N&y|` zcvx`?U7Ig8Sv%OKdO3vIACz1}<3xVrO2$-aoS$~zF0ZbwwePfW<|8+RIxmtm_Ev-P z?rC<4r|Y2qdg%JE=)EE*biLO@eo^y4p^@=;a}sr2M|G17vOeQKRX8*yB4-|`_HoWo zkH7dMP`t)Gfc6^aa{c1Am7YwuWeJ(RE7TctG%H0zKnxA@vCeh>U1|hy@^qc4IgjXy{U=-XhLi zdi5kaPz%T zZmT(*Z%aH` zGq39C)5d*#4kv&wG7YaLL5|dSJy)=#6c(N)HEJWR8JH}yF&3B~54?>9qRsrS&%x)= zSfnNM%_Jf5P-^a_=(CV<*Nm&o0#AqMtO3L6U42Z*YZZo^^(6Yr5lO^?$Pz^noeBh> zbx#6*U?}g28*}>2#=QaxEu$9!#m~9>OS@-6%?I6+*JpANoibO_uY$?WJ`w~oDOhCP z!QFLG*NSohN)tp;2C!21f`bmvAE;&nJnNoDUKs&CWC&9`)}Kbxi_V;lT0T-P>oTb7RvF zzS!^sngtLKlcP}nS}lgVFe9!++DcL{M493gp)iTV_A_$yW?BR& zb!~_toU8v=N1G}H6JvOO+J-+oE~{|NP2cZ`I6}Yn#tK{;Q2k_t$-6s0UzlrkJkJytrnz}2@ooHh~m`{dNaBQFh-j+ zM+XmLk~zs$sel0vmL7C@qz?@<94ze-uQ-rw!b0cJ$f6q5vye$Z?f*yH+jm8kEc>6o zwPyah^B!h(bI+Wshe8BV(LU%DMTxW`DyVIHlvNZ36ciLz6(Y91=D%6SJ6>Et-B%j07GSdepp zm1JJp$Lor5g9KDzXHntwFJz3Qy%T^?7dtrK%cB+b0Gx#p|kd_*GO~y9H=Bu@>h8o{qZ?3G> zzud*;H9_=}Tf4MLUDG`Xd}=L4Q1X_%M104H$kw!G;6CJ9y0GQv{FNQf6Wj~a{&LI; z%6M#<^J385>c1HD&5`>>khzsr=7FqfLRL?1h8t@S0Bin>hu2yWJH zD}3nwe#~h^n~($$clWPMNFSTogk2i8W7E{T3^-yo8$%VK$0$kq0H@|a=exGJIZp2` z<8urI+4(uL%CUUu7;z5nQ(%Mj;?gRwnQ|k(qRa7TrP!j@1s)N#Vf*lWH4$Du<9pV| z)MvwV8RXq5g#rc`g#F>m9*%ypIzP2WKPm3_r>SY;RTaXPD&JFN?0s&y<^-L58@tZ? zwnv0Z(>+%m_9`8PaHa*+Eho#D>oSmme;5&3rMu-8YH6ILrpLT%R_pKWL6-#8DLi_3 z*KA(g?}Lj|%-rQ7jW`8M8+eg1@2!3Gh)-Q6w|*dC_-3y(l(*N8Iv4k)F3Qc1hhZ1v zF5+UVpVLTGP;PTzKo|yq%m>Z zpww=OTbxdP#kH>s*?qf!U3E%Tj=n#U^)4!F6%G-eC33TYN9kB?eOANtjHcX zjUut=EU)MJsE5m-@=mjf1Z*{58!Vk-_2RuL?;~K36k83ln6EiCpS1Z(A`0@F80`WAnEG;)AYGXKBh^6&pbC&X2SEE%dX$Oa>OSEBY}%_%vXKl&FS=rf#wUNz;(skxsgl>9c%7$*!2P@Q-So!&0WI341cdJQb{(A}GbHnNu~1KPSVj%2>UX=C8t>q4!GbHH!!1xTh{z`R64mA3J`!W1Gq8vM#F53kT^Z zXroD`3azORh?r!NDGbJKq&(?f<3ZLW3!qxUNT0LJ)36hJItMf@mONMGM9hcH4;}`ly0lg#N=Z+SEf?1dv}oFdmbXH`@> z%b|?g4KDokg&ST=5#-{eEQy9)-6i(q?0AQrg!TGw+b`>nUo^kh^AN;d`=L$Ill|U@4xXT5V)7MheyF;AjYTwHs~q_bbB)C$EtdF z+JIAe;?_B#sR#TIoNLx&ZI4y0rS0-z+qekQ8pE^2@y#pe#EbUNadha%Z@W7j*3#8r zEZ&n(0}tmEp*lb5_}vITS#ehPOk- zDQwnLK3rN9E}5&cJyRQLwOex1$ZJ?~*;vGye@T3-^;w!JgZ7Wbe-I9WDJv%c(8&Fx zHCXX>zj(x7*W6mepStm4%Z@AB;SWrX8a3vxOQCRAn|XU0IBie}mr~fJ)Y7u)w}$=p z@cB;j5c1qHv#>sf1~!cpM)W?2%{*W!|+Dp!f8BDonrdT>44TQqyIx%AVF}94eu4EeLe5 zC*M3#UZY7e`q}~Y#CMqQ?fx=7y?eDyuwb#9UdvVaZsgTpZ1t)I-rmwzE_KRv1pC*z z(XrgPM|}@N$CeQjf(Tknf<9lx=lJqDPkl$XKmfwRSC;In?N%eL?N%?F7EWf-iOUg> z&Bl8X0%;PR_(A{dTJ=S6(dSi;WFD4ZonEHiyjyzv4^DM0{RfXzJbr%juJ-mH|G|=K zilfK4Jg29wF4@x#Pg98+#5d17`^}H1S5)rZ=i1dP#8a!tRoVR2#j+;B$e3o?wuD$l zR}Q63^Q3k}x_0sKly*lnuQ1!r((Dz35D>2YWF4-}dE!6I+|W9qH?)vq=6w>cW?yisS~UgmQQm>xru z)Q?E|5;Mg*&pshlq6)EaLA6(D-p|i89yZQ$awJ94=Dr4Y_ zphae?Tcnu8DVi$w1ru2boG;Fz-vQ}T;QrLVi%we1g!>mK4L8n=v5_%Vv)zn8G51xg zz~H|(f7_b6`pqUVOZ9~-w!abdcR`tnJCKFfr3~}bzXn`03XvewX5Xpt^&2mOY}pt4 zWH zd$Py=lh*D}*K*?2Ub1Rf=}hLmu)PZk|af)+#^4H}l)fR{i;E zb8F?r^SYv20$Kz1JAm{va0#}F@a`CxH9~H_3#i|lPiD3@w(5^({whdXcmG#H1WACV zm(Ay!KaQUde65Tar!rz9iAzv4ecz22hr%|aXEvM9UNoOHnoQQeX6}o+zIVRN1vfK{ zgCAwE{JZCW4XTy3O)j0?T6^+hZR_=a0=kOV`oA2?r;qEeAFpk0&1}7XD%5>1Bch?~ zR)Luj?zu9`QifO`u7eldx%xd^r~BWY*PpBkkUW9^d+GT*m``>;UK{mOf72MnpbC!; z4NtD&V3hOTOg(+RvHHBeKC`wmvMr_a z_7ydZ{I1BTzub65LXCIvsQKE(%J&c=+p1-@El@j|0@q$Lr&HHIYTaC(rE6<1OV;4^ z+B|!i)hS+k`IQRuDCM!{E|osEJEdo@{jvDxEH@mE6^De!rXP@uu5Vo~E1P~CI#YrZ z%Fa(JE3q}9?2SofZ%izEX+LdjJaP$qk>DhOzL;62Mj7wf=v-h?=wcb`v-s*)Y0;3j zl{}1!WgmgxM-mz3&(4n-?!KJWdFNPcYJnG5c$$q^O5PtYd`;_H-xV&EjRnnd>!iEK z#`4l1CZrn@-Q3tvs}R3$a$7Wt>AO-hlMW>BUHt>kS!=(zK8u7ae@vCNLpjgdOn_V~ z;J}v{nxp1*xp9)qdWjhJ(PWi@gzs}(Tzv6USCHEmN?Aw!RJ8WfsQ(kH3`TYYP3rLH z>)Inps>41j-;p`qOf%!dOmm;VAXS@kJ^aIPdo{uQsWa#c=)DL7;iMjs zf~96BKoQD6RbfyeDa%8uqMZV|wTM$=f7ZZfxghr#m0~_LluFe!9T}mO;_3FO@0l#C zNSGHcIgToq2G4-21euK5Z^AOM+K<3gX<#yJdwCDhKdyI_-=TxFIvJep%o$(>MtEk33Dr@%%MlPjzmAFbI zPl_&6`~n97+)o@KKIn5gu>VuNxj8d8zbJylmFDTyE>j0nsi-aPD=+|+$K+K(TYJgs zpM4U-ExI4716_NGtezx}#{uu|pY-KG`AJ|CMbvBgrx(m=jKi8(!8Pgf36lMXo61=I zDU6UmYtAaga%RG`wi&c9z}(^Bvg`}YlZ*Zkz}yI|yUUq2_%_q5oaCuJc`vIh^`C*c z!Xs(pmkEqv{w3HeZGL$SXy4HF zp|PBu9G&#fxn4e2l|N}!>C=#sY$8evmCGZj3fmlhGh8}EC1esD-bWP`Z^-2GE9Qk; zI@Q$O%4?;$A7!`B@#*M78*H)SA}kl-V%NgKZhV5h9HdqrB*L4#=k-Zmzb}e{#97|qPpL_t)ASbNWsI@C%1VxK zDd1tZqU^`|F9ZMIvO$!kVuoKG{uubx5SJ44e_kaXIlQ9mVs)>&*PJa9m;A*N`pAw5 z=sJilp=`F1a&)!kL9%(it9W7`F`-q4$5ApizDIL~ip|56{u&)%R~WVAWa+Y!%C6Wp zV;6s+^vv2qxh!!GUuHY*823Jxr;WRXg%h|v_P>0;sAS=X_q~*I+52vg6h^-zOh+Kf zwXoX?mwjwqjn|pdPQ;&M8|ByVUoS5G@i;Fk?(Wr|+Lh_X#CP}oZE*MC(hg{9$<_g! z;Y{!8DwFh{;;qVi>gC;2ZJJj$=4E9oMl|2EX=iBXuK!Zn;jlP{Fp*kIsY~wA;YJ1B zr^0RH>F$-CtM_*-Enmx`%HXfS*wP_^B^SS zFMA%ydGKcM?LBbK?vH)RmVI|Vbw{Md$?jd{X?4MU?>h+Zqd&EmHQvS_bZd>!^H?h+ zbKjjc)n;Se+o*Q5|0bP&(#?2uTI$%kbEs1xgPKcyx?px6=or*e{%G#Z9B0V#z8kl|DXyuBPWc@;8_1CobW^ z%~FC6uMKax{LDVoRT@*J=%t)o%};m}kE01=3v-XNi{pb}Zpw&geN6WpRT0$sm|Oj2 zZ)WB)g3^M=yU61@CqaWYYP*+GbhmgZ!~r&ukhNnFKkpQ>1TN1b(`0wB#!4e0emiFqlPgigoouDZ*VNKj zvKZiJqa%43QlZwhwG&Q~@};VL6r6}E2dokeQS3v<8J}M5*qSU5n%cZ{Ce}YdZWptZ z`@UT6dW|p6`o}u_+D~p}gUG6g9ebZH07#}N;%L%ja`h-&WDrQa9&o8>mqSXI>ceNp z=0iB(T2U@7xGL$Ds7ALI^p^Io0O&Ym)5n)n2o|Uv@c)^m9u%?EOSF4=?BE>ws0KYR z{gEWt-45R?^b4%+9%fTuOvQg&t6z#tB)-JEB$N)~tacAm=o`dEC|)_n!Sri374*Ft z%ma|ZBF6-~qAk+;Dn%Us!gtB-lFD6OITq`&A)oX?T4IhO;q}#yu2FRnuB@2Ngnq^L zrRSJ#t2LIUVil^fLY0)O@sYO9FI7+h$pt(J=_67cYGr8u?KG%N@xL?QG(>)l}BB3OkL9Okx7sIv%rIT!)t&qjc_KZ(6sBa2dqz zy^bl({WqN%zOBMEO6~evR`dH6HIH%VLixbY`@u-ElqC|%x4DeF(0}d_bTjrT(mLOk zIGORaYa$ArCRLocA_KeJuSg6}DT+1(r>JjF;wW*|G59UcAzxvgf;D#JcXqVzUpXE- z;L6Nc>|^zSYX;#jg#sSQSRFuOEQL8EK#w+&g#T5;?y5Te># zqUM`9vhjHJj}n@!A@5d^uJ{eLemY3oMWvED$KBaY69;Dh1dcLh)4c^GrwhceO5^kz zM!#-3A}^i_^W*9tNAUL17jIa?y%V3Fb}D0OTD|v#vGRQ=_CL%IVQ|^7iY`L2?jS*3 zpC&aLn6&$htG6#8%wl-yUWWDhCeaP@Oh?9LE^GKl7>C5|whzK7nK0&GZkd`+l?BKY zZX{f|w5b&|UuyzTnGlI6O7gq)_HuVG#=UO1eC42NUHzp6kmFY{ai&do>Bx$MdNIS( z=*>+rsk}059aAYd#r8CzGdFiYfSGnlSovrmh$tONSo+W1`-wIj=K zXO6N_*-)=CXY$DOV%mTCeq#IcXld84Aeh)N#zFP&fxXHF1FRu?X6iW@P=EI3RK|zj z(7352SS!SPTnb|^-Q1u$x)f&u6BhydI3B8kuOML9E~C@RG+sP^jsuz7L6VUC((q&Q z5J9pfzKRAjVtTUR0oOo{T5KE3A(ar^`D!a1rgdG2Lrts`8fU-YV)pm3i1j$XHOBMYgVaUx|Bh*Zhki^OG>K`(&6W4O^ zG}S@yr_@4zBtOZajKj;>Zzd!izBTrr(Ab;9x5*mFv)8_YHq0;-9TPP1LnQLmHaJmH zLcMFGbm=d8OZdzTHmUQ}BR{Wydrc&e~VSz2Zq{?g7&y9(9BgOVk%9Ht)Sa*Gzd71pZO+O^j4?p1%hfTtL>3b<{FVZfpFvIrMm1#fu6#eucQ`7s?Q~!Zv77T|(6YsxW`XeUpE;~xU z2tsKHv)&KWoEFAQ@`!P0hJtf%F=3PD>0D{wZ*%1^9yGStqS2bH4D<2?%G71bG!MKW z+4~-B;A&wvhMOaN8UM>Z+{ei>+RLl;&YxHQn7jKXO@d6Ev27lFfkCE4p?riJhu7JT z-DJff7{3_fv3W{oT5l?^#9(6|{vlPw@hJuJUeS?{5}JHJ;L;9L-e3Bqyb)9Y@XvqF zFMPgo>*oC8^}n~S{_~%UpRdf_x;-~{%iizZTm0O*ckkZ(0=wE3d1q2#TVEjc`%Ga$ z;WeC^x)j!>-S$Yg!4H|?Hw)VR@p_TSUW$B(j$VuwTbeDfEa5s&-B7~MqJA!~d)6ZA zqtzK&^vkgOi37c{)d5!RPz=lKJ?%MppW4TKgFof1Ho1OT_(ykoe(~OpedU)MDC|o{ zFy;Ry_t^E%pBMR|dw*ZB;8VT?ylc34E2O=%x4Bz?pTBvNgt=Ruuo&-)ypr>GE-Z>R z;eC#?gW-4H%DY1~!>IY4dpEy`ui)_Bz1xb@1e&)7Qupn<-S9G@8g${JzOi&w@ZR`) zn+?C68L+yCYj0_RyYoJOUbxr3uYE4iouPgE?m&D~hF3}Rk>n67<%UumXy}Y9tkT)4 zr9WaC@4k5hK1=`SrSwM5+qbn6Rh0LMMIOPMF8w!GP7n}Ft&CEr7nHtJnw8&K(j}HZ_rUNkJMVP8z#Lna zeK5$AU2@5x@ON$1=g++U+|Zu|2znoOcqjbqzq@m%rY4s5YsZKK4#VL}dc$QqZ}=uO z>0p7c?%i5kxN-gZoqz1TyLI#Cjobg|Q2F*hcHc$D;y-p^2qm4+Mv=O2H`Xk~kPaD- zdOBD-FtR&<1Q%;ZN~PoOQrA+uO3etlS*i=}xX30mgero^QW7)mS6LO4RhlNZZ1O!u zFmFT|G&#_ms(GTBHG%8W9s009& zN+({4fxe#xH*9)<%>xkGwdvH57h=erH&<@_edh4$^xoU0^E7yy{__$7OctFNNRY%i zFX3T&8lN-!B)z3$dOD$}KC`utdZ`8;B&WB>C$Q$`E;DwcYA2LdNH(z$>FOp_mE92> zD$K3+iarAsx>rv1cCUQp2sGbxghW)VbXi|n6JCXS#(IAry(jVC7Afu7!6k;ILqbeq zTcmUXGEe^5Px|}>gtO~(aHap|g>=#`XK=sag``LY-Ue9z|cyRIzqvIQ+H0bNT9j^_H&J z!)sCP$KI@jtMdEf*Fl$BF5S}Xtr+N6W8b9&tGP`s+Z@)7c~sKJLDF!sq^n^4I24$Y zmv+Uuy-=!)*o$j;f1jeT$LKFnzwLp1jdFXCpVoN>WovkG()LMUqNo-Zw3gG|b7aLs zMmG+Kv)sONSlEp)@-&pQ!zMTU3H$Vr9KC<0fWcpS1eahis0Y7WEp9nHxN`WWhxLHx z+@3_;{v?|BCpdxUOW^(}SZpM#E`JNxfH`6Y_4k z;AeL`JKQ(Zo;37o)42u^jo71X9e;l(TA`0PI{(cYT)Nm9oV0qgwia#lPcMG3N|Uox z-(N-dA^lh!c2^VrqLy23F2LY0+H=k&*_Jst2x*}>=s5WRz6 zrNJKO4y^P2efd>X_2H1XXzoz^ZftnHKQ}IM*Z(Z zT8~5fvznXzGu=`0?JjZ!?sESoJW=>TI6S|%{CCn;wEklwecI#uC_h#OlMm(oy};{O z&aSVQzQwsVfKmTPK0*`-jGk~M z%p{8Oey_Dm+|3@ehMO11JAEvt%h;rA zH=)q5wbz+B910HXAr`Ka--pKZ&rUM+ddnP`p4;g#_BV>_p12uq!GlU36GT@`mPw>i z$vlUpwC{jj+>@)um(ISAr;PD()f5)=O;)T{<3?jFWk~I>^ck!#57n1>>I0wMEXFt+ zuV3TB$u(l6U*x{YwR)Woov;ihNW-XO(==hGEr4($LTMEro5zh;AcCg}AFL#mG*aud zTgj5}74C=l6|)l{;Iv4i83UnGN5Ia03F0F2lFZ0imDVJO$0qNzcedX>3ClcyAwV3N zFw;G5B`-{5AgIp5!IDzA^r17DWn*)kD)bGU*}b0JbA!=wwN{Z=0nd^TM#sIImy<1u zuu6AUTz{&iC1Z!PCBAH*b!K`T1N%m?NydRmwn}5n$8i-~m&>R#u{r)-@c4~xzXP(Q zAHLpFC0C0yY%+HXPs*{K!U-AfaGKfeD5%6%VX_xKR&6G4eYan=JUrEyrHUcX*sI!v zk=P$_0ho!S3Bc^1b*tRvm3sYHxd#z?s;zQo;_EyU8XM|Uzr%x0r%DK3*@T>lQ?0Bs7+dQP50Do*>c-~BrJYTy}TLALp zO{BnyxfP%E&v{1x5;1T zByFhpTg5jwRl8+4@XZhkFs^~nVeS-uwNb*4dCmCka}CA-^njS#!j*4{kU=kbiWfCX zoRHd;Aj|i>c(BB&+MRgPHV3IFJ#+9vw%2R+F^Q;$z&bTf@SxV(6y6XDLEII0I!(le z22a;!$MWXpbM~6pOCA+_059(QFpr%l&E|&Y*vrdX7*z8`1#xl4o+ES0uH;58-t4JxKk_O#_(Al&Z1v8(=!Ok6YUbXx8$wAgW{P4Bt_|U~V4K>Q zOzX0eQt7NZR+aO;shELlHg4OkiO%5TVpG7%CsK3h=8z30sO3Kmm1LF2oXt|NOmn!Z`S5-)#jOiv^_(< zNs|mJI--AW#nI|&Fu^c|n|tH@q(n6?B}f=aCDRNy7etpCA*uE}Xb%TGWzSfn0cK~n zalrLBByj$2P}k5vWiB?)EC@L5U#<0Xs|79^={HG zi=Z0_5t>3VTgx|)6q<0~IU-3jiL4lUzdQYY&!41b{mB-9{z!C*Klqh){ygaHV?z3~ z3<#U4bMDX~TE$;%2K^Jdp1_B8T7(FeUT!V;3lq4QpXP4m$5i;NC}59`9+pdI*UKp- z)zNcQx&iNuW6LG%4Jh1gjYqD*%EbzHyWvD_EQ4|g<{2J!PYb5go7pyGo1)jEtePN8 zw_G_rtE4?^Vl*F|#uw*o9<=zPlM+UTQ=i6ED+-m$lVd#(tzLSIaR7UpXU$XnmiqX?qAB==&ck90TBT;J^+k}$kD_P?;zrFu_nnPi28 z=G_i%{qCvrWVMHta+c;ZOFidm+xr4cxLw+g##kUMcardtoGySoWgf?5r~7%RMsr)R zYschnX%~|$$u)^M+oq#0Td3%ilqkXX6)9ES%_M=gp2kKQZz6hrnC;50rzNHRG<%7H zm$okH7!eb@jg&Nn$nTz69D@YRMS-#6+n^Nl_5xx}v=)7#U52GPq-qh%4?cn2E?xmW zBR2QC``j&P7Qxi{plioT$U$L@J`emnZAZ&CU91lVl5( z=U15Ca;-T!P!l$(W=(5pr0KQaq=NhnBU0TS_PatwQ#VD@4Wfn4Nw9^Q9(Y}0YeW)Y z`Ak}m1mlGwWjFFwoclRiyf>*0vEgpiQ>^;`cHY@J>W*Cg?XGCq5J{Wx2R=G(HIjw#x9m4y6!kOqGR%L| z6wsKMKEN*zVQue8e?*~uk%G*=O{Y&5ZZQyJVq|X#0a5f-e{eK>#SwfEpRIRp#l^MQ z>Ur&($SR~N6%dEL4oJ9(^bxXzahOIZ*MbhV+8E%3prl*9Jg^4G_!N5VTT#ktj~G@i z^N@MN6^n>%er$LATY6+du=3qD<)_t`Qq+PSm{apNF+&PIyD6E*F7#7fNVui#XUbBY zeM5nwy=i_-LHjQaAY$ZaP{t5<%T2^UcNo+bHas7ZBUeM#h9HlG2JBw2{*&XNYPj4gX)DJMGg}ICScE?dUG1>;VU^Cbe3y zh`n>=4a~`+PcTglTIbIpNH^CRXT8@;4L|hFb_yAs#jE!0Np1Iy9DZAY%DX2;D~$Ew zXmna6U|h))riftum>MQdmgoM-gt_RS2=$hm=DL4!8at+z9N5wGX-8AfXmMP*fP`Yt z`?e?>yO4r%MMXmyDVT5psE?1NosQ)BCbVq%_H)wjOQJ?FZsu}BOo~c?`p^Z&TGYIW zoTZ&GC?t)jj~J3yoTtdD%hyu8W)mf{v&QV%FdcOiFU2F!6S5og##}#iu-6?(r-3kJ zF1d(Yg&UBBFwlbXmaQ@*YVl30F)eh=9FnDU-WfEouSu`U7~U=P?z?VjLp>W)liob6z{4*d~HlV02$qA>H2CAq<}O-wY)wQY5?okJDo zyyytsG<_y zx1f|}Pvb{Q?e;ni&T>k8VKlVd@44;t_=*|qpBrk*2^4)G=J1g|II)42hiAM;f$-xR zrVT6Wr90Su9jf8(u5wq|4B&?uUVXtgV+5{}+xkAM4McCcg3CVtiVo#fdpg{9#1mAw zzi;Af=WGX)MR>QW6wJ*CQ@JU2rYYm_Kkn~4D1J?|772k>=%g_CbcIDvXJDn+PH@lc zTR-WU-QjboKOsCO#NK%|a(H&uF;`{rqLRDlA=BPG+lP@i1`j*op2B7zRSUw$ zGP&4R6|}b1!|&+LSH4wtAktASrDX>(|J z+EObdf86aFahx*2zolX;01z^2_}==th+?DG={g8y6r*yFCw=cMgF{PUuoPm&_A%D9 zH^Ra(b@dRCeKl!yn>HypMYxB7B0==Veyq%`rtOI!=1MK4ENY;7%dDB{ZYcC42tpg3 z?SyO~F{eOOh;GRmnP26BqGUWbBD=o_EM{KP`o@vM`ftIWGc5UB*-Xyj>)&qLKY`3`oKmt zIg8HJUb#*l=eAnNZ@tz|r{`#OU7=jTN>^f#a{GFZP!vHjmdh*bJ0WB9>{Rq-2pWe< zBcY-}!LNE%v$Cx1(~`Wfwn0-_?Z+5gs9%dob5initd^M~T~xm_XhSVL$&%v7$i^a+0##<&;#3<-c3oZE6`2Sp`cTjoR%R*R%iWTH~BbGfX&|1BEco| z6BqFyPi?7N({2xJ!&^z-ISQk#eF62B#D~yXMTk=|o2RWh`kuz{j-bYz9mKu*h!V*$ zkEutQvZaP>c$H01BQg?oZnILdD78xKY4RrLsoF6_FIb{v@hXU- zTJ9cqm38Lf9F&l)Y#j;&OXXMNkrW}O#Q3J%Imzlmxk;{hNo8oclL0DmdIHLmD3k!J zj8&C25|!ea(~*;q?PTgO(~Lgd$eK3A#^sS_Fg#@pJ1LQ>xsP1+fG{62oE#sTVJK=0 z5h!CJsbNyLv7mAj33~7CQZmI^*d>_F>`)7CQ4)G!wuD4un7-e^=2$lVgy$NC&FLcBT zWYp0RPfG8+vMl_tf=!T?IostmkJ(MTzG0s0c#5SYq}aQ_!i&R^hs`xkfLZV6TVYsYfGUONeUDZy}^kcw;76zkgvLd;# z>8gp`=O#j*n8|l zpVic)cHK&;<`q(YQm%>bYK6@+*v-wdVsLd`Rb4G7$9#8uY|Mhf0IMZ6J)K>d+tqY9 zx-$tV*YlHdGDQ@bXG4(gp%015gA7+Y1~JY~bb7OANG1y`k7UIb4ymxdoOR4l!a;!jv!*i@RAUW5;3p4z z@RJ-mYsV(`^|+5rKiN$sTWsVeETFJ8CbMD8oj6>+ARH(3ZcAp7^6fB5)9k8v^h(+6 z;Wal~OvX0uHC*{F{3!ClRA+V)?3kBN&W13lNQj=DY;3Am`1&MucVs0?__=lDL6B!B z6O&I1nxXZl*~=56#1WR3Il?)iFxh3}`kfRrbh)V}&Lp_GoNun7mhX+kp>)Lzvvc(T z;y-xK@f4<j>#TrbH^}*vjnj=|Xzk>wVynZ7@DK`G5_sWGlgrCppm5vnh8PmXs$f zci0LiRb|~L#p0*5qqb?Sq8MUfMtE;}N;&R1()=P(Qlb-)Aa!Z-Ft5pdP6`<_XeW5L z!@9LSb()g_{NfaB^E~R?Q*6R*w``r|p695Bl7fyY3VCd6zI+2jvUFP#PfTbJ`n5@U zG3Xfwh~|@=#Q$TWY?#z{{gxcxdl8;E?Lnv8*cJV?WJBw@@myh3f@d%#Ul%@nXek~<`X60_Gi zQzbI&v**oD3Qy7(n}$Xz+nyl4K)lM4-O>6x_!Mm0&Kb<4Xb391#`q1tJ`~LRYG(xg zyAjlbBgAIur1hbT?l3$eRxL8i>#NJ-9RgJy-Ap9%h<5T!La9(SDLys%6`y%msI!9H z?56RV6CqYgUdae4WT}YD=;)zNh*3NgrL%yxqSS_d9W}D2(?6{8$ zB-`o&1A9wuOo!#Bdy*2as*!|mpi`tsxE3h$8q*rK?N z3{)L*>}awYig)P;TR>r-nmH*GrIHX^d$}O(7!~3T*vi|mV`KEetH(jRFugqTsdJl|Mb*?!r4zPV=MIfU90UDtcw^kz36 zuWUyl63|MPp=-)7wdLc@Q%`YQe4AdE;Fhe+?iJq0m$xp#?HFYq9K}Ln^K}aXuaLoJ z=WR%cB=(Xi;SLCs)1ntItqgZd4y{70@qH^n#XKSRrX=%4rEYka5o>ITWGE$D)PDi7+L9~bZ?Cs|0 zO+tmM_do81V4{(so;eqg4-J>M0r^p7+3$dxbgc)VEt1C_HSP z3^#Q_qMqY7!&=OY-|JDl+wObu>JurSl(>VYw&jLqFKDGJoh&42T^BKYS~m{ZFcI>T z6=Goo$$%CuZLr1WtE$o9!g<8JcUC73CN#o?DHaEpQ;K%niccl{t;p@{?h}iS1CtKa zzX!haBD@v+qPIt>j)^XRY9=(|1VB0dpRM4-qzH#wZKY75q zC(95d{{EI0cZNk_S28RFpZi%WF=xz)Y;9o`WCTD zW`=Mx6fbE=gCVRmDQnpJK&+svXi5ScZerh>6e62UwkP{CEcIxG$k^lDnp?*^rKf^e zkWjfj76INcb`+Lix!cjGU=dEJ04p(er8p+6xR_LCNvMxCLNyV1e7&GRFEjM=h{?*& zO%M6W?}Ywoj4+{1r1=;+^fUIRA||cn4I5=e74nfZ#>!u|>!U$gHSQNQ!`R!Ugwl-y zc&5`a!l7f*oru&ERxg)qI^qzrvIj87Q--v0d(a;aHa7LJ zu~{-hNG_QjtwUP_kocs&wf3@E%1b&oxprx3TX=qMD$?dNlw3+w36AoId2df7#V*To z=YU0r2l>V>q=ty*|7c51?i1#f8O1>(G)lR|DrZ~wg9V9kvI3uNUf#eU&7S3p>L;aguFY`N;B@EmyQw$DdW@ zb*@5hPdOR^n__^ZI2HhT1te_R({9=#BJp8P%v(jIz9!WgYY!V_%LxMGP+S}o z5?2-+IO-SAegk$Q2o?uiTCi-fs5Iu8TZ0fEtX5ARaMVP?M27DqB#;Gl@Ym;D6S9k9 zMF4nk#N0f`5qv*V-Yh)W#=HAMtD-&CHc;myow%mrlnSg!9@iNl=f!MiC!9d?&?&M4 z%bX3^FC3_II{G=r-#YI}ZNF862e4?uAf+YYwRaK>VRfq&e;l!thM4Cjmd0x7ZIap z*W-kY%5Rh(Up1M8a|Py}I)PqFY~Ujz%B#3n#YCAG@B<*`>@bg{r^?}Bz7Bg8&)ULG zgRXg)-`bi|k5pteT2YaPrLR~653LgYL=TT@O&+7S zOO0RdE~Ttntw;QA)b#gPYv+*x^RlMg+AIChC{``cJJ#5qS!%;l(_b5{M$)KcTCzsv z?XNmk4EiEVg7N^h_xRDhs)Nz<8QR=g;e>>8+vIetJe0O;qH}n5Q9_6XV$`s6{H1W%VzmS z0f`UYiF)X@)d%pBx+3igoG}vgfcE^$F19z>Up- z(_P()JhT=|Jvkh&41HTcrs~K?5EJQSE-G`B*q|M(Ps>yamU#q3JjR6R$B{j7Xf#-| zjmDi_>TpCu_*ah(Nv%_F`uuvqRV#ASi+HVD%e9soGFDYDj+7YM!ZHo4)-D>2gXQ|| za=k?nz-s-eP2ygO7#BD{Jzo%L>@Nl4SQ@dWvlg(H|SF~lmu)d7tY0?hWZjTdj&KXOupFa z!n4OoAGj=AB9G}eq&1)h(d(*ppaHE|igGn*LCYT{7i8wrMewes7M+q*#M{-78c>T` z->|lPf}Ku_1{w@YEZ_q2cY8i^y4$fH+s3YGC~EX~nv;}NwKA5Uz*vtQ9*G)ITafpm zPvsLT)$8YKpKLw59B@fOA*FAYMk=}54CaEQq!XM|G|DyaY}GpZ&1$(A>Z!Lt4Z`G6 zeO<6T1|34sGh<4ZX&+qx^nJv=6>DnVN82_4X-jY-qkTe*k_`M}bS?rB6zdw6INL=J zeG5r6p?(EhNCzLaD>4U4NNpswp_Vmi{1*_@VtvmVdu)F_J&}s2(_vO0jo{@St6QBv zm3&!hp=~Jjx(|)=pORZQOo^kNpjxCjiTa#Av@#byx===y*+FTkCq#|LpLCr-Yg&_& zKzl@m$2RDv_IDD2y{MlstqDC1hN3n%?C-k$6&*L~A_m81VjN3Iiba{BkcC(qjoUp8 zM)Lp}FnA#X86=_;hUj?>AsEt}1eMWW1IYhcH*V5+Ru=Q<3AJa`;rKIZaT=gaF-(;C z;Pk?q1g%ewL1ENducJbQf=~}|ljOH`hxiuw5UauUn)Fi_#GVhGyLH%XoHCpZh9gF@ zQj&uz)u@XbR*Yp58O{a}{bjP9$A0%NI-q4Sa)*+;KEaLx+D7EwNLGbJ<8_y%$BkOs zyAy6rYZ=ZR8Uu3R63>QoD zpOdi0)ar#Zst?urdL>!1hAgpWj9ijL=@iB09QGssaSd_e`h_NgW)d?rOv2uj?15!G zn+DX~yuUdVK^9noYCyn-y7973UWN;)|IlDD{jP`SH93j8bIFg6^h(L&3}qp%4XNK< ztHc^msAQ*MEYX5M%;p?;q&(YRN_4 zp%BX?BTrVIIS@P6R&64^KCRO0{sa1G*4Mp;sD+7A<3^W@AX8L5bo>9N_nZD^;!M0R zgpfSZgbWKjA?JHBr6Kh@P4`RwEiJYzIr*6(rnhZg89|h z3$s>?j!SZ2wuJ9ZNB2c}6;=`gFC8bsdvM^fi=&e!^0Qg*OQ-Ok!Tdb2-K)mwva&P~ zZ^11PS(8kXl)?_3WWspifZlRIy`G9?CVY!Y3(oFmGy16ca44OsR;`h~h&lmiT=I*NT-J=s$w;SC=A!(sZK()-16^!?<`H##3*?L=ZyE zDla;au9kg;6lOrd;=rw${NyQEXL%?hr4UFMay~_YWeHD;>TS+#n0bFg9Lc(KO6htU z%qo5fwnHQ}8wd2dv2xT1IqePv$E6|sme)l6tct!?>%U^}t6@i-ndV6$gvqmM6BxsD zCE;eP=0z5h)2p7J8Q>x894*e>uPh_sMx&E{1_#+d6THr4eo#dzd)mo6c98A;dR3_!whkH3;8GVY}Ao| zDmNF@%o=@?1|ZD~%tkqUI*s~*zub&8meq|qqEhYMjZYV8O9nl07B?EC6`Q1^C?BLIYukRh4Ydum~$i;7yxN}c2O}z$`sXgVqzJn zfh5YR%6!lzkWgSM^GRYkqdXJ0$N*WU2^=deGO!7PPG4jC)^yWZP%EgW2N@2 zUbMyHKs9|O-LmH$%lCS}87{>a^kvWdd1OmPGkrAorqj~;857IWG-bxD7%@F#P!})i z?7KN{b!EdRGh9^xv$5PQC$rnZa!~R2v)qDLx*2tGF->MK)Pvx?6XnjA8(UTOx~@fO zQ+_)%N^s6jiPzfU{Su|^lsK)NURu=sR&(wW24CBZnOHk@dVr%~@TaauaXZxOMLbGC&EmGJ zLd_=&z-2+9JQGG-2~HfyDUQr zJ-9;{D^b#cuTgCtUppmTcS;g{1}unlBO$4GJW(1stNlz`;U=+!SiKm9*rJ{JiSqgx zthr6$0`;T+Sb_Hr2nAHm`on`IC1Z4oTOe|j9fhqFB&|{+-Fm&}`1wkU>tYy$XE4OV z3T&2)w4ho19cpXj^J&APUBiF`&3Qm=3YkL6@IgK?NFX95rD8FhrkqVm_r{}*qHg3# zb>1lrB2Z+gz^5mWFpi@3xZ4FVvJHq$rN)n3wb;@_4r&b+o)l1@620mLlXSK5G3I-x z_9&4Twuzeg6y#+_(AZR&Yi;O_C7dCpA6Mnsyp!Rh5XS1WYU-3-X(nkzZJ$cy87tFR zGA#xHnqNV3_|Qk?DtxHXm;GIi`>>`>8Ylm17@s{CK(R)=!D<5gW+qWK zdi=TfzzE){z&v2(saWu-@Y?2g0M8m?%i4?eu>nA$r7>+bFwHi$?_4a9S*T|PvfxAd zq5>JZ)rp>Isa5ek4!Dfj+a=7>hbDR2S2&|Q*UaIf7YjoSP1vl@dNE)5oj;;UpbV>Z zT)OydNV-U8N|}Te!J5HIAWIR976D=7j_yK-hI>X_0i@EZpiE^$GCIoe(QKr}!I_)7 zhu*ywtYg|0P8Zl0Yhi|u!F^JKJC@SN-lVKMO^F~CB#yaoI=TbmHf<+BZuunL36kkh zx9@GA25hbIwRGRj85U4x{A--0DJ+TZ4+W6*a1VBURfNk37{%%h!?}CJ9KA|4@aJON z*oGpHn~jG;Xgo_3Q*{}2cF(v8;UmTwY+)I;SP4l&18em;$CFdX(PPrIEu6{jMh4n^ z9rW~|jsa&gZ+4e+M!1jN8IRvm^?jNR|0iJ#3QkYncUR(pei~Xnh`OrPcvm-3S4EPL zi^VFq!dUm3`&z|)aCG`uE_^Jd39!zPQ6k*7Q}?3l&Qq7*VXWX`Frv{Qa6|~Q>yac9 zDm<#F3=?{S-X@StVHpEV2~fD|V(P0UJhyuL;6n{B2I5OQFIMYV6AXBceFK8_UNvqa zOw=#VZIQj>&v6w-Nr5)z%Zg5=S-hxlPJNNw|tx@Wra{8r68LM1uUckd*upZgF{HQ?+i%5@;AnHd>cHW{>Qp}qj*Z)o zj9Ss98eOB-$<~Urd6KuW&GyX&>GWli9h1v#h7Z2f*(d+0nV~c03ngu}KJNuUlb8hy zS%DZn2uB&Rys=w9@x2(I_x*K7*OZYtdDV&qQg8v!lbn+BQ z8DID;1bz1%tv18QPC`f_3Bi=}BGI}B8zf0QFaODy%aWL^?;=iZg?l_q+SuqXH+Jf` z%k+BYsKFb2J$qRi#7zm`V=@|mjcrP#7FM4(uP~=ec96MJC&7OnF??7WtN3r!a+%Rs z&so~8{Y4CMrGKKeL$BJE{~0h}H9jua!`DeqM$x8k^&D1Fd6vSeL$Rn+C|!l;z0I3> zQp9v@2`b9s@QF3*4F2BjIQCII_)6WOstQl<;}Z5H41iD_&~nD!bV&c9H;mgEYb+oQ znuj%1HCCHdu;kT9)Dl*EVv#oBE(T^zh7mmQP1HVX?A4)ljl{=zrm!fSNE5l@z?bBv z_Rj#?Hi}%!nBgAdFlLsR;eDfVu#yxDYDRSR-g$bko|r%#I%CMu4DNk;KDY=7t>jXS zNCK6>e$0{r2fo0+9YaU*vBTlY;A7Y?aLr^+I`#q87Db7%L@ATvsuoy6qHlyyLdF{< zj3hnFN3(+WbTtKF$|b_wOBT3c5MvFyhNZtS7iz)-7%kyqMad$W8g8TI`fQo{P)R}* z%W`K?4I1VsUI>-zsOlK+ekx7c`=CB}UezUp8#hSP3+p%aY|daNPR|+we>7&>5#m{T zO69S69N}T}xaDCk0rFLOuGDXzumOz_KZClG`#zwVoWW6mC^!3Esa;{8IiQ#0iC5D$`jIO_vyGC}Dy=Y*H2R_(K4RLF z9A+Ouy{BD8Q_;uXrPkL7mdkj#q~k6LVnmaW&?>2v#gaXEdU;H!C&3|k97Fo5>Qg8o z(q5zyPV$nfNn=A{s?Fru_@YWjof(ZGVBiTCjB+4BH1UGPCFg~eG8rAuRw$hBZss8# ztyHI|02&+YJX^9ovt}z^q9v90qX$BJBev*d>cP8S+_tmg*~T*A*@h7581fnDFFg|v zn9G#g=Xq5DeBx`DbsqAcf`c_n9wE^(9Pb#2ZJRx3j*g}Kuq_h8!dEr!Frs6LhTvCY z@SXB3(AUI9L)|OM<&FzYc6L=b`~rU7!m%cu&52ca zZE4Ez88nju4p~(RB?jV22pl2r$Z=@c>vw8qR2YaU zxcIQJfZ3zT6LP0CA^Q))1a@w5XN`4Y2+)|AvuB8(f|6uh_+Vq9Ya}?N0K+ep0U|#xUPf`OkUyR#v>yOrct)? zyw`}JLG}$yZ->JgU92s%5R4Q36pnp5$4W9g%Lvy!rw%6mDWw?!(6=BzcYr+dJ+fuc zYTm$;r?6+FF_)cP%zuX@d|VpO&|3-6#|=P{2DYD?z$GQnEVevkBAaB&!E(3p;tx`b zgeoYtaK#a7DA@6bD0|;0kX4gP%}MeYR`nJ-_rUW)_XDVg%dUfpc$SzboqRNLVu<^- z9@|xbEF8p6E8$zRcgqP9b$|4HZC=?x;#Ja`uTUeWbn`k$iqMsCscFRYU zR-eZ02?JMqfx_H0$5?*XU)L)SONo` zuO^N>w3iV{46&{hZy@D`rEf9JYJ?OgAFnN4Viz$gXepw5C&&|LXG4 zoqtB9AYDl(j^HyF+@|_AQ#3txL5Cu7{36`vXRch#YKaiWv7Bc_1`Qkl>;$zyNQMv_ zHE`0e#>jZ$1u-N7rt8G&t1b&#bJi&*MKG<_J30G-b>vnQ$WpP;c2?bn z95%>WwN?;ih$WtWacQlq$zsB-$n9)rF@~ zyr|JvpspPnF8G9OH)CBor#@4=Y605OXt9me(&)LD8H3(Nh&NOt#P}7et$UUdDoK*M zn%qVpH&EtnupDveCkXI4su9vy)#>Qk1VEyZ>mK+&>opRt#RTOcIp@tiH*l$9vnc@G z3QJg^O(ov+#%x)xgC_=9;ykbHNcDObE4INQ7=1e0p-nO=A{K+G!%^DGmC7FABoOr{a9wXik-7k94JAncBU&V{~ApF)go3>sL za?^0cNzL#@AGqto%_-b+!Y4+9=yT4sf4EW)H=PdFjW0g9P{bt2s=(|75qen4-qyrw z3(f`QX~7P62_EdIF)X-q#;DO-b5&-5SnA-ZNpU$IZAKc3E7bIbb%xVa1Bwv$eRuf; zS0J^ToCUb>#MrcE+rz?=H8FPrHEO}7*?TvdSTG8_aNwCMh#mLTCxIlYK>&datburx z{YIBN@7)=N0GEX`?RzF4oXDKwjTu%VpmdBEY=@5kOdpi>;&7qW)g@dZxWx3?xf6P0 z)>r)JKBNQp40u3h>~V46Ms28V))^XqI&oEuKk#S=)yDeq@v-jJz|NfqV!cMZu-qMi z=ubXq+;Vo_!pKJk1@&C5X!;sqq3e0eIY|(`ut~Q;j(jAS>)Q_|_P+#}wxk%~|G(pV{{R+zx;J)eN&w@uhh2u2c<{$}rBpBiKlF^rqV2w)? zWE9$PiD;NEiGbOF%PE8&Lpn|n0sC%C9mHBk3T!`MH<`ZYotbvh&KOG9=NK2B#6Ym0 zZ4qJ@d7jlV_dE<`(!<&c>0#>6>HBocK!30MV>EZ7l0u1MUfJH1{tz9m?octpWe|l` z-Y|?>RkrBV+p%P52ya6ZJLX12ih%}8x9w48}PUTre47#Du&}|<#fP}`@ zOqGTm9?V7Oj*$xn_8lbDT-D-I6Es9gYPbZPsAqNL5jTx`(S^oZG$?qoO0aDQ+tL%r zF>KcEpFvCIXBM`qgrIhTL)D_iJag5WsGlP zOA#ULEm32$zM+!>8T&o&H%VDFzYwRzkGKOPm}l;p@vbchnVw&5;IW@GLDt|Gbyt^U zB{EjX; z7u*ha#wq$TQ7?)n98sDCv8e$#)#$J7sf+Ur+l*fwMGt2#{sumPFZ9qRMj$i<7*XRf z)gr-tmo~^w<0==6IHcsqUJybUMp!&n+@BBp$7#0fFE@O7ZgXYf{9(mTyK2TeVM@^c z*s6d{bT#R8YjD+W;exdTk-=NG#zqLr=KxAFx^cA#3%0QK2_P<7MbMXOlL`yV7T4n> z7rAr-P*OOUqML}-@Rt&(DhGv5;(C=z>2?64oF&L+}25w6Oc$RqA{2+8Ps z(EGY(2)G|Rk^~|_i@u=Jp2w}&^JtNQX!48}8H-vmLxi@DwdDYK;N2flcs#qqvjYj0 zw4U)_Q17&p^Q=$g`4ewVd##U0F8ew4n}ClGzZ}uB93B)jV6=Mht$vo|UFgO(acQDFai^3`-T+QXsHE zqCJVv_g%#r+HQ#YDuaG$bl&$no2(_jVT}2VB}{a?=#!e}S&(SrQlGLax}}~F4VEeF z#b%&^6tS~zJ2}u{2f4nCmk`CVI}`rrqcEx56Bq8-xln*M(MRFBbbS}KFWg&cGkD_i zo=9R%hy@BUf-K_ks+kM_ecqWr_w{7N+z}RHgrUmJw+0ty^>O1G#+3v2m1rRO!VDco z23F0TF;>vof$dS%q9M_#FTXCFzSut$h-^Zu4{U~f$Q*R3HS}B54FX_LxvTdsa!OsX z#4B}0zPQQNO0_HY;GR{?0&E9Cf(5JLqewpx*bVRk0>J|r=nx`eQOw1K zE*TSZU%&(_9raf7Jv8g{K?X*3YJsRf!AT^Z`Gxh&Ea3(=3RvapAa{qm0(XPLUAw*& zV?4@^o{$hGyP?k!Vk&|iiB~1@gquR+A?(u7tZ9YO$bh5*`3$TiHSf zpO#mqa1z8S%K2eI&0<2hWZyXwGu6eeiR2I^tbaE%)Zd4U36a-{zhQ@97|=-|#%_a3 z%!5Bk$&@iSXD>9FO{DO_f%1&odid2~UgIV(&(%Ze*;x9>Lv+E%TK$GH)4qknC`Q3Y zA%?Qqk|0@c9IluF8Ll}yq?-C%S+JXG9yLCpm>fjI51Tg{uT9B`!+eR0Tsm;HMsp-n zk7c17_@Dfzri*Eh zFQK6kXs^bbCFd2}Re2)hgg#jW~q_1xU<@OLyHU@;oOnl?b!Q z6Oi32YxP5qNOVE9|2yIPJ_~`=8zoTaP@ueb1LYt(lG&b_RUl8WMuC{2X4O{`(hj5`sH41bQVl`j9d zQys}`9jemgocnO>N(n|7%>ae3?TmE;)ea@`8_NG?$s_QIL9q7q@HI`z`Zx(*1h)t}VECVB+)$!Kx=z*B5cNvz2*@kv-W z&yJf|UVOt`MQ%(yV@6zz7+?)Ezr^Q4v^L&!DQjl&54x#0>~76yI-llB$BAz4H=0E9 z`3{Qf^wIAI^Du7j6#7WgbQ#)7H;i&ySE7h8M)=N;4P_UOUda!ZT#5x=sdddv-FH_ir``Uu>kmDa#6SWel{CsB`rbw% z(ut@hBA&DA^?(PuG7PClt1lF~P}c5MWG}onO23(j!|VtnQ=uIUYaJepi3eUu7{VQq zq5l-8ip*`hK^+C(3nxoe~mFDW#6e47_*Dk zj0`h5#G>(ru8@H7MOa+Yg_l~iG4Q_Lzcz{U%Ah%Lc0~587LaOKFwxLN!3lp=^OH~3 zg40E-mqjeE%yx2^ zS-Cv}`7UDdcN?YH)i0?7oS1^doRulmoz=8P1S^S3q9tc96NBL;8@ek7D^-K_VqtZK zSJwAY-G~S*qD`b!K6>$s-+@-wjB3QOWph2Qew_0n*MFB)_9*WDj8^7!&${WIku&^IvY+0h2T2li9%bQ(S^OOo z;5&B|@Frn~=`EYuiIOOG@hFH`ZQOor3vt%!A|K3;b?hfY@W;0Oz+^_ehAdjsOSDZD z7M-4S+kZskYgM}wVi2u)*Cts2d&k-t?l@1FUyO4ejye-alsCdRoR-B>(0vH0+|>IW zrW0!x>0)x&+8?=Vz{UZSd4`5w+Q$e`%v6pe>1R%6+yM8gal+Ej*gju-6{r7f@Qx`P zUmTQUe@!$SS0rs?8W<1x}!Jgj!TYLAr2Ztb3a)30SR- zRLY(9w5l0sai`3x_CPRhJ5NB5Gq4N9M4fT4wMRw zsh-9Td90>-M;#Ytf(BJmW`% zSR-b3P+NVvq&nOxlMss{ftKW!gau(e-i?pe@{e4g8Scg1v?zzBy(566kTE|rItPs) zc)?2?opo$W0`+6po5x^IeCc@Xnl(1gWE8|g@0QCH-(VzC%v#bs-gG44(`ZvVY>%Ov zAeGV-RCz!FRNHI8Fce&NC?=odvA5U-NLRV)ZXz!z&cEr?9|Z{;6RYjkj(_Fyl;QF% zGwt9|XF!Fwc+89?7>*8Gu2If<%k^{anj}VAg`o}?^k$%e~F3BYR^j6UNoO1Uv2 zyQ%KDpTL^sb|N)n&xRik*4c=SJ#7Zu1i$V(Ldluw+SX&BL)0NeRFnGv)Z&G&IX<~R zgxZm(CXIY3V9x?8It7?Ml(B1L_%3W{t9!J3=Hqn~JKcEOv9_?Wh(jC~#fU!zQo91~ z!dvk*3r<2=r6b-3W6MSt;G+Pkccasz(gfQgc62J*d^*AE`}3&*oqcZ zx4q%%EwiL&D{rpPeK<}_YX;N98s{Jz4~g_d7 zvx2aV^DX1{+BEBV@3wVw$H2z^5v6KkHaIRQUhY_iVa{)#pv7iy8I)0I-A(Cd5=gtY zD0}tEdTw6dlcB0a8j-2D_RuVxM+PP4I5j>l`(4l!!7*boDUI5+oCbZZNSbE$tr<-> zY{~qZ7#{}k$Oq8=P#)@amjZT5jj7XOuX)<|uxF4j?rH8`I5swHTnx1FTbwZJ{)Rh$ z)f_GB?1#Llzkl$OeGTa2Rqg##0*s#3j`kXNxaH7eJJlwmGwP_YE?g^qx$fHtbLN5> zEl)dJhUdTu)Fw&Z#V<>dTLd6I((I5 z5q=+dEXZw-wXkfW6vR(b&ud269@#UZ8HT)R{;$;|PPU7}d!(AVppiRK84^TuZ1lOa zED9ejfABUMeSYDkljT_+B*CIYCkm{3f%Oko01U200fm({e(TY>$vtXAn3ArIm+N`K zxw>-V1s?VJ-G9VJ?qlPq4QxCC{mITp__>mdBV@DSG;wg1IE1k!PRY3^;WZo~L@W4siy>|og_WzE}sHE#%S3+qkJwVkijn>UvI zG}r677^=rP_D+czYhEUGJ#6K?Pn2)q^6;f3;6cQ9+c7e z-9>xr)G2q*U-y^gq+H!Y2!rJfe7Xw{xqSEmtStP+Y`5515@#d4Q5>tLlJ-m>bPmJ- z%nb}i31b9_D3>bx%Vg6|dtVyo(V$^d#3^=$)?HrF$l65lQexBZAlcxJ#r&rgjQWK& z;=E)U|H_g_>*5n?AjZI?>bGWtwgN^hR`}Nxu=wP`uP#~Wqq#PssIX{U@H#5gzsfTI zKYM4^)i{#0;U5I&uy1FsQnD4C2kK6L`jAhdTcapCy1DQfR0hXhydZZ$54+jjHr ze6iWM8&?lTfFcsg;bwr!j60Z!c>s-(4Aba3;t0NG#JmbC5|GeR_!-4PGa$NlIeHqd zHt07s2p60x%%$Lr(V%s?Vn|~K8j546@+(iEv@C>pA8`?=YuHBq#i|R{X~tw|ICV9( z7~ycwQ?y4`KA-}@Ill7Jm3y10F0#Pxn^$PP3M;Y$JE{WQ2)31moyJ{po9VH`kcdHLvuH@%kJihYAlWsub4fXnvA~?s?>yd?&vf1CV>bX^+%W4Dm5}a{}fc zodY7+5o*(Mb)^f2g_xl$Zt{?K!4FI0^)t zKeSxJMF!atJ?)-rrQx;id>SozM-)4*C_+W9)roSeic5KL(ID?^eqoG!6-g_!hLTQ6 zocnjhi6)(5gV4q>b$NFNO=iwVS5BKptgGmsXE`|9^d0B`pCsQPPBXXcY(d(*Ov_7a zC)B5GwQl>XdNhR390DzeK(@)m*=*%3bvU&hPKB2$-D|Fr{|p?i4ZN+DM#qWV!0^xA zJQfv}0&1872&l~)%#-Fugq{$cMG;J$!*z4$R}NR;v`IuZ7yfZ6!S@P?q_@VLmUm2y zQ>|fX{nOn`=l-MPxi&#gMo$gl$<7n$MFf@kWn3NWWr-(V@5QXJl_p=zl1B$wtk{;w zdpKbpjJ*9EzrFCBkOpnvIY=MuGw?G;LEHPu(8(kn<3vPI5UD4x39?K?i`ah`>;xWC z<)dx3l|k%av@qy2MY?x&eGWQO;9!oS01tDW_Jk$ln)?MjTuH2&;&RLV6(4OGS*#G# zLy}>KgnHJ6?UHbyI_cj0i?m**oGW70psEjz&^E^w{syAw37$ODZG8CbwBQ8R(gLP7 zoECi#!0~M8e~NxVkA{fz+EVKP#R?DX91~0+$KVs}v)0_<==9^7!86bFh9|8S#JKUm zHi(s?#Tm{Ij(vkI{avT#wPX%Z?U^q`rKmVib?UteZ;Hc9&QGC597-kbY9PRNot4iw zI13r0v>$Nm8kOxQPD+^8M<2gWxfVEW44Re;wL11CXI-H?%MA?S)**M5-1#3-_w3Vk z1&aP=tWLsk-cd@LCC2&*Y{mS5W!v;kdYPYV7YKUuH+u*rMYM{j8|7yy8yi3lV3nJ61=vTaSo0D>1z4PTTi&9>bp9^qRLoH@ ziTZ)(lJy1Edf$=ONzAqZw0Ji?RDsITS5$?U{F>XiO(_mmY$e?FLJ@$5Y2q@O!HHE`Z^tYM-FMGm(U`y4W-nbPF>c=}nH-L&-*tLdxMXX>P%&p@XyB=8T+2aH zTJc*k$os?rP!A_U2Z}qj@pvOPo*uEG08XEF33a`MHV^n|kRb@3-QBbm zUUj*G)C~F@6Xx(s1K4WMzqL7DQwq^{n{h#9jI|$aok^aYCJV`&v;Xs(S!i>4AqB&V zt%lBHnwchx$HJ=XCo)?uIA=qaoG~rIdp;1p^PIM4MxSk4v*Q1y+MuUq$e}3@AXs=b z6b$oR5}FqCFU^oO=kJj9Z39X&7aZpwwnNU>BTT$Ru2D8#vsG<^OAjKa#fd%(lw!0-3a(&;N7U zPSUT9jy)vFRG5Yhx=rxHE)x-pG6<=wgmNNiKB0*RgsW3=W3kWwj*NtlS1F& z_$=ahDrHT+jnG?xS91_-h~xzY+m&*Idz5D zY6m6d5Xa7vD25cpulCc;z=-Sow4ELe*4$?O!{YW77VN+U3IqShX8s#A!8ErwYz7uI zC;m*EnJZzCQOC!|dPwyX+TvGG$%q&f)_C9f<*sY7U!xX#X(;>x4Mv{Of@0|g>@5SbG)4Iykq@Fl^`$DJ zemdxPJ~e%D$UQo3><+AV7mEXpS1R*aSZXi%Ftcdf;jSAb1E0SU$P(oX!;vC8Rg6g( ziVsP5jER)2Te&oDY+bPtC+)3WCFBzZZkF_lLlNZNaAiwahy^8ki`B8b3u&(ULjDO% zt&}TQ#&MxxugmL$Q+f%J+kP=wmmHCB3cX7{3a*i7H_ylJB^(g!;Yx~9R}dqwka(t< zm+jX4yA z@)&1-RHY|w9@w>Lc`o&l=#y*f+X;xtL( zW_<$Q%R6EFJi*G(*h;h|^Z~D)Gfrvt_;r)Kn^mb>6M6W9d?7){E=+x+3H41PM2$6) zX&B4ZBzrYdD{YQ2PFjr&T@c0kD{-M$HGmcx#UtZS$KKPRW>DZF5#CA4!`P~gSO*oU zI$SJZK+}CE7N6T=-{d==opI(DF}~b1w(CL@mf&ifuI)S|gxUVyC3zdMKhS*$xKlPW z^-x>ctXmG=%Lv}!(5)`$hn**7UX*yM4GtsbZ+iN(P5*(U4tUxw`q6AYOH_>Z-4S4& zAB+2347@#yxO2x-Ah?ge9U@&IA}iB0*@}?5;`^kXUN`nIU|4(l&o&Sw+Scnw;@<9) z-@k#xzAgRFv2Sn9Fg_u`T07A&ge%&XJ8Z?A`z?9d!;MnRj~|9z@Q&-d4Kr|a1UEX* zj!`W?zdCoNio8el>T5)|cvO;kb(Q1Kv<{|i3O(E0F5GvdhDYMz&_(M2rC4(PgsIX@ zN9-B(<7f6=MUkqAFjeul^OJ+)U1UO*$h9Z*NF0bmFA0g z;Mry~a?==ol{#=I(M`lQ>4-x}`mIynh{o4;uVK9~xp5t&Kyigda#I4AYiCCHrk{)c z6O?3=-kO#ayk#5rz9fRbrFN5iG2eY$cQqQH}#eHbpRTt^c|9b&Na$ceGl*O`hwL`}WM?!VD3j>-2l zUvak;u3`B`4km7#fal84*zBWw10-P&tApF2}83T;Wlgy3jgdict=STUV_nF*? zsHfLH5iG|KhbT11XwttjqtJTb^^*LzGNY?VbB`a=oU$12xqFjBv_YiK{6t804WA|H zLc|6UY{EIQjWcv7EabUUGHfW%Xmas51b~I{^qrczEwaKQR(A<>O7NY59iqD5$lmfH zA!oNK(L8{=jo&biL3?*&^=F3&2JCBO@o$xS;E70e#GZ>Jw#94o4LYHjS2n+j0sgia zk${+f;g;0EucOfm2i_FVT4{?IOBeSpw#sKUqSJC$Bl>>Q7Wq`@1I;E|N!m1JQMfv@ znSa5@xU;6dv)c2E?esD|b>HmYHP-cE7~iHko)~F73bX)Um0~e>Fp{8IQr+n;Jh+Ln zdFecw}i+|P2K*h{|5-s%z&ap z&HdF?JzM{Tq$=X@{y`iF2~F{#)Qsne9u9}gY-@hy@t#0@LZGOTwKRb!Bcr&AlTm!R zVE5I!OK~jw{|F0so1)a+pUdX3QVFz5^_D?GsMNhi7s`58zOO6t3*ZnG*H{4sY1WV@ zZ{ZA&xt9!FQSl09!$q7f8iq4k@ox9tTzKFKj{!4fM`MYv8#}jOD}s8V92$4ecy^kW zo(CV#FGDF93a;11>AUrV5ma+@t6!GfTNzD)c!F}5Xpr1fq_-4T{nrs4jR z9>-hGa~oiG4_>h9iry*qAkh?(6kd4J6kxs0YJveRTYH&9(j$Xtx&ZM&+Q==4*I}Le zmp6x5c;@+wuofkhuy(-&KQ^zEVw=>)mr3O$Bw-VG)Ioac>D9H<^VF;`wcAl^8AB_K zdU3WE;kO=j<)p&fJWCh0r%4P-u}(h`i?<(&lX(3nh{emX$z+I^;b7A>4;k)d+8cxv z;$Av-?{HTLV`~7cun->#;k#tTsfBAS*P`*J?HbGR9FPX&`L)Xil>|4#A}k(fLTi5X zxV}gIksEWd8-_!?%-P#_NjxFu-}>qCE?yiU!tXkgbi6*MQ_9jRhll9alJH1|b_UMT zq_$oXvQKF&Uv;fLA9;C!a}V)ivt-SO{Ie&m7+kDBA4e^2--mwGR_?-hkyy`f$$dhv z^j2MS;EU;y$2B|)bdI}MEZ3fx{q3e>d8A#6)6noaw+9fH7*<6)S+V56Gwl~10s>$p zW8GgNV~{8d2m}ahA#JU1#1}36EiJuu(xXXoXAHydg7@MOy8N8h$}k%+o!o7Q@wRh@ zF!Vm_E{V?@!w;p3TcY#@W2~&u=$z><3c1vuqiepR{`9al*H? zj`xApX5rgg(v#$Ffhjj#X%cVBbjEO4^M!`4S%V5R)_ZrRDRcb@Sfn1P!9jhpNxy=6 zjbo7ox1+j}!^ci>8wuo;r`V$z$imK{QFJ5E31pKarS(LgIPf-ogY4>L@bf9678mNO z+pou(pJ-x!*E9Sf@@F4u6e`ACQDYd^W6K1EJ2n0541=PFVvAS9RtP&vBm=(9-*I?kF!)*{qfH@aAhqp+gi?^Z<+ z)Nkz|{md$%SUGPX;%V)0^*>Bc#|uBt2LG>~Z1{SNk4(?VZeXVoW+Rp9hOZ3quq;qp zI#X1N2X|2lwB1xKg8?5_IM-)Z(mAr49cgGeW{j43$m+zuAY6&tvDNn68S-S!o>Plk ztuB4TrJwifMPesY_L#&ye&@T9$P%{kk;M6N%h01QD+`l2d2*7{hU{W9$d0k03egl7 zL6ydn&7-jJD^s{c<0{+6I7X%`h3z2@vWB0+cPY+SoVD><$)}^H|KYFlaUvQ|x z;&{!m?GP8##XGE|DR+3%RNjJ1n4|*^4<;dW z;`YiT1iJG#`1QnAEWU$AI?={!ktz}>ZI_zLqVNo=8c8XqX`aThVlZOx#ZNY0_gj3! zN)opiMk!6xWt431%f=hJ_}PX)=s*XEFWvMxKU(tuXZ6Oq^Z(x_QUT(>%`!8UrtSE} zLNP#Rw&7@lw2k2KLbC2hJHK-Z<^Hp$a5|k@wfn<}?f1#OEx5L+{`{eq5ffB7;oY9>}^jI1&o+V?JehC*H^SLLf~uY7439uFCi)T(sE)>2W%B> zc;^+Cpd_||JVYJSEJ(f9IG)8kMt>uutC8F(x93)N z%8df3Wu*H$jR~~*ZKT_Oc3%GtG~fJ;=173Qh32xoaIq~p>YbkqiyoH|Y52GO0H?K( z=9tt)zWpu|sJHE%h}_bLV=UuBhzSabwRmEz?qhMhO8)1pXHn;cS57#1arQj(Aj7cS zl9D{{K4OEyZTU7K$1j4fMZ->S&B-|DFru+i*&e=EJ5ESsJW+7nvoS^pfE64@$?jDbvTJeY^L^R>eXe8 z6h?=38bS2n#?;lb^fn)GiIRq+|6oZCng08jFAgC*OHwW<*IeV3OeQv^ji0!tu9~Qp zogk5LB9x!gp>$k9(zlBFiu8G6mZAabi~G3UG;L5#8__bAzOlxzeI%;h35VM_$TF7V z!QxLR3Ef?hH7!AhhRY8F_uD#_(1hqwK9) zo???R;P{3%^I>%RSD8`hHOxX%F1Yfif5zyTb{#?bIc8vy$i|9{QQMYLE);$N?p4C2 z)j1bQKPT~yc%?Panz}}musB+bmro;0Xf!zZv2#rhF5c~7|8-1MSKI*_y{L9_xe_yHpB-~*Syj08+0ViwdVfuxMTs@S2T`jMZ5{8q{AJTIR~HH=f6DzwhW}G(Q8H4x ztna2<@(&gjd9?H3At9X^gJ+EVPu5KBsviq=NqoMP;@7}-D^|^~VI(y>26d@XNEgVI z?vi^5E+sr?z#J5N$^l@Pgs>ESu* z;cWMJm!O6$Rk_Sl?8(^*f9P1#3*$xP%dA#7?(hX_k^)?m!W!wv0B-px@v=(?Z$Q@m2ww zU%Kat8%)%+R@DhAytP0P9Fk7Iw$++iIwx~-N|k(oIUL)7Nq`^=c$l9fmpF+ia17c? z4%bX|*cDXVPHxb^60e0B8Dn;8j9KlkBO|uW$=2BYl{ts&GZqWDNuCO`?xF^=`kU1LZ`WV`a`$rKq4z zN2aNC+53N_e=QZ42Z{v0BiLb@r;$x!wdWWdSzGDWoWLdkXhEN636JJ>uAsc#iE7sVa`w zvlkm(8ob+>z<1dln8P?^pt^owSOCw?@rc#-exRJ_{JW7h*w_OY#M%qAzb-#~^AEwtlOy*YVIMU^`!p$wJ$i91`lJ=*_vr>$4I z6yQvxA1LVHsGQjrNMqW=0rDvKW@M+cw#L$(Cu3uFVwdEZ>8cv8MDrBXr!&k<(Sm?*Y4zkY}retQEP(4bUb+qpacaFV|7^*s&t@4`+(C@0BnDq_ak`z+Ro zP&*_mOL!d^NS~aYwHXrl*;7W(CEb0>#zx0;(KwA_WQbBNj|yXIlZ+BnqL zffvORxC)}Kj24m*CC6hs~~tJaOz zoZ8*yoVfVpQTzdSlb!kX?NF9naYpOYgp00q4>|6M_ToyprLOP^x=eIDX#n%2UcqAn zRZ!7=~dafCCXoQ!e3@cBKv(}`KeXnI0NgN8M{$l?ax2#hVlM}V{5U=6J+d(2h@lbc^Y!U zx3}-jWsuhe*`TzoBuKW;&S9YGzPR9NoE^Ine;92YlQA)G*s5_L=v<8Hh~tjSZ&S`` z(eX{X!l61t^T5ycmXE+*vm!@Qb7~|U7w|S{D!taL?!k$hXI7XCc;VTp+i!M0q>CfX zWPn>YlFws;?+icP4;xn;anP<#<;D~as5W4?{DCId&{N((60t5sN0wZ038>$6I$t)G zGL0MhTsS0mpG-XYcz$^sd^qh0IqycZ`Au1R7bK7Ds%-&yS2y35o*-IgTd z=25XoJX-u><#JS}^dT0Am%(2KUK%rxp!c4}PqL7xNX*V$#n^7?0`P6$|5Qo{!CPx# zbq4^nT*+N}&lR04l1Ol9m?H@hG|0&c&vJ!jqNiB(w?s(}$=SD|oaTlHmfjX_>k}T3 z#+76mRl4OFG&hx=HS~!9rKPTc1^++d%X=%yCC%}+h%@ufENT2Sv7v)82CeeLpgDkaVdIs@^t*-td?CS=Vu4tXA)q7^=b+32Nz9A#%Pks`MZ`b__7rf+{3`d;+&_z zS)WH-It}*ElK4Kq;5*CRzx-Nmz@;k#h1fsG3BB-?RNs|#R1lPV)oX;-8&CYfuaZ3(@3f(naK(t0wzG6Bp4zGu zBh9M@p?C_rAO`_+HicB!`h>(}!+e8eei~12ofgO9Qju3~lLgN@dCp7m--ma!N9obM zwVy*L>E%AbyHBgW%J@JI&NU5ZEsk1mNvl#`C-KdAoi_v1MQE>X#B!TF*%K|I#I@H9 z_XelxuFGW?0zaMLb~G94-8U75KJY?cv-UO9p>rkV)Qm5%Yq2W%=-%I-`1{tB_gpt} zFyl$N_&aoj=tPQ~`|Df-WkMZ#&(lk9;f=W z3&zn$JYA&%SN+0)8U62Xcmr8Ij)y}QFFkRj+wza~{Q%u3r8|~Kxkd1VEkJ7k0f+(| z$=KxM)&TMvbIojs`GC7Vy0Me7T<}I~I%XCwM1DUkia3t$x)I#&{SiBc+@>6(!cvw( z3Aoc|kIGsHI=m*K`J#{Hf~QUqzpy2~?bdH0KWu2W5F39X5`dPph=wMml9EktojmiKm@<&+&!heSTZpy~}9+%Qdg_yD9ox8 zH^1;()xh;u9Aq_Fa+UXGdd^>>(7(3g_0p9W6xNF0rkB4}4Up7>%%&6;NEVXWZ&lNg z|FHsBl!mg?-SuzPa|Dky(;JFw$)D5P->RrBbM=8McNB*er{eu@Rs6K(qX!CWg0uAT zx2k_0x z?aw*pIXb^9E>^ZiudqpR+ARw+??}EN0{U@#v7u< z8dOh_OCeSZH8d>qX$a)7QSs+nuTEy0il4?ea!88Tt@#3uEY8fPdvJuQUzL3syZuS4 zeyxr2QO+ANaeZ2!f86*XRs44C$)?>mx5L@ltao2jzxK3AkR4hAfPzoT zgB8DZ`Gzhg5_Ve)uCer4xU{g6u_Z_ldd^h0F@seDuKvy%ii} zK}!kM7E4}#`w+s|{8_Ws5l>(}w9Djf&#WaPiZI5p>rVFcv`#wtp-*0iKD{*43u8S$ zV5@{le8AIhdW^n$DXGb2?AaTuJFeL&kl}8Z6b?BqLE=s$3_1!)5q&d5bKpKlI0U;T zW$1R1Ct{Oe>?f^*6-u&#)v7<8MZFwZYgZ;Txg+D6D;k7R%(y1+t%zY2*V!UUqx7;oICdE7OrR zRw7PHwKag*T~u1w{4~C9MWi6JS1UX2 z6pF9ao$y<1?YoahBdF}ozhi2{%yMBO;fm}Ci5)*vi3?X6F?mVF{Ctr2JkFa z`Zn%qNgT>>#f>s=(I}&>L{JNkZWdauA7D%`W(^FAX9J-S9t6ueTi6S4k(1vDsPP=3 zaS!y@2R11KE6P>YaCq&Ev+P}{3iHM$f6!L-{GlmkhVG^t2LoZR5b8d(mhpW8YGAq5OH4IJ(+G_kJ@gIoL z+P-1K2lJJCH;lj&u+c3R-88&+GJM8_oj!c=~GEw z|FNhOG~?{b)G?KZ2W#5t-aUun;KxX^`}q{B5I%?E{GG*hfF zNs5-1rTZSxkTI=FOjqy~z9t=o2m0nnx=4^!?!EL2PceT^rnmxdnS_`r`6lS1-h4sU zRpy3+MpKHDch@l3ax9YAOVw8nZFV?&isrpL#KIy^?y9&*O1wj9u?ALHr^Nw1sPsb= z;JKsBsA-JpwDOC-Lic{{TYW^_*$pm1Xre~zLOt6YF}M*{1P}?)1@U&MxEurrua6Sax#anX9Fyi($)dJ(p5R#UHJec=Op!Y%B2MO;Hm}C%Ul20 zT?R-4ObBkZLDN1*dpcn9SfUhV*D~H1OEkV@*65a6?}=-xI4cYh=h6ERc93sA+PLya zGOG)=kq!dGOEMtBJ00CJc5Rg#o?vf9`k*d~=vpNb?KXWJ5FT3CJ@;@L(^PA2Ob#O8 ztuZ2ZiRs}GtEDDoCjl*2_T4cY`VmXgUF_rQ&3w2Ihyf@ z2Kd3%!9Apn$m@MO=41&R)=b+6eT5q158=$Bi2@e`oH6pHuYByf*j*1cfsF-)w~Q#Z z&U*sM{zSW-Gu*jhqIv9CU{G9z${Ox2DZIP>Ug^75mbcW}^;$KfDq$r()8H4+NdH#; zMA2Qof#&Q$SHqPH+RZSi8eJLn-Mi9v^A^+r{p@1S6lYWY9ham1!UzB^mxF7iEAGEW zlDbP8@w>@&XcTv&NLQ<|+8#k;m7*R{x1bp~B7a81Is}@}{2|m^#+8Jgik;f0IBqPV%m93WzCAAZrKG-TTGU3^n+@?Ohp)kGM%ViQ`5!+k5;u)0Y z1mod>ervA!jgZ0VqhB`Gk+CS2&kI-gyX1_7=W`V4%Oy!|XqQ-S9>3tsRz?}Ha+k=> z>H*_MQOF$oB_4ZJBZ|mx%axlL-*qbF+n0u4W=kbAkXwYgt_piMJCR2S*p=(SgKebn z;EKy|Z9er~xBUnCEWm#sZAJ953h|JixEj08D1GPr!ID3moBwt?$IBZTo4T~L)^y31 zW4E5nS?lS6)AmQ^r&AcbF`V@Vqop*g5h{>`=k+Z2OWP{~u|#_O-atVAUGXAJH@Fy* z^$t|I*+I3?JhVNX2@YIW3LmUJBXWP|qPuoDFT^EJq5~*^=FM3DagTNTIeVfpzC$i1 z`&`p{w)N;+Z;mJ0fM&ewAmUh+b{%&!4= zVUIg;(B2TzX!hUMsx_VSc5at+(Ff?k;2Mw~bXVFgx5Cp-dCLNU2CX_57}CQKc8dk6 zkR*kQF=_;d8Q9mo8@n1Xa6u)c^dia0c%rq6&5ZA8uI6^o=SoIKDPFgUCVK;@S=vxw!=Ws&j|9})!!FoXmAIGB|@!ek<5w2L1bqa zW}qT#s}rBfT)4T@-KNkdD2thJIU2;cd9!9<7Q(iTHn{P>Vk{H_`=Lb@7r`1y5l^?^ z?nRvyD=^UaZv5_MY}77T>2UKFarE&&(}@8K_CZV>38=A zls;IqOwjOTO4f#PJS>T!$rOtE$H zF*?63+(y^-(Y<*4oh5I7;_V+>``l1$(_+1^eW@puW|HKwqW$iI^-CUgA(}o>nmT-9 zN&~oZUBj6A4J3MvJ--`HJC~47iFtET!f_~4(vO};J`0dy&@>CbKalq5l@6f4K>a*% z-UgorSS;N5tmq+1X+I3pt&vu_?S6S}M$P5)$`O`1pXMu!1pqZhUPSC5fRgK`|q ztYU%hJ;HRh^BDV#Vwvu2bLrCvD^x~M{zq8KFG-zylP%_x?ZW#m;!NWWGo&F(LeHcS z-JlN02hZMic;N|kn|ZW(i1-$Sf2azKw0a(7d1>VEl!DtyCFCSlkN0uUu zS91s9DNU!&)5oR;x02yhgmXCfmgXFoivuK(>rCZ9Zoe8}$HqhW=ObwAb6LxCO86dGZx{RizpV3M6r!XZ$gSUWVGg}6!VNoFV3*PIu%jAePil{4Kg)K z*u`=ugt%9JSWpD|ah=V%-0L^SIhiwzBtbChY(E!mAS08<$lLCXELnGwFo^0@b1QVB zXKhtl9r-TbFq#944<_Gsdtf7D$hjRrLs=)>fP;hdDfUNt$gFTKA+Vb}wJ8wAA*gMW zy>(y{pM&x+t5PI@B3(ijFqa+F#^?(+2fBfBKYnj-Y7*&@>&Z)n88A${&$BjQm#ge< ziJv-SG%Tv%9)BW%u(J~t>~j!uC~SxcnOp137Yejb=PjATaUfmv18zbWYQk{&q>f;?=QK)elFrk3>V z(vQ!WA4PnX%s(C((RpL0c*d8W;@vS#r-p{{z|61;2QG2rXaCif%BGR8C2wP)5;O-L zA4)_Ef05<}+RT+6c3KU#YB2KT)H=o&ml<^wPC$e07oMz$6r>{Z@BX^?#*>9SaUap{ zJGx$#R$5-I=VkI>rkS>*jyy8cA@~FQ!0S97f-LyIVmkvc3J{r%DyEW3b71{N!cV4r}_5lfP9%+j%jNn5*lg>32KVSt|`UVze$=8wvwS@Yr<-_n_GU&^HYkz?q`-_gG~VoaiYa3H|<9lT#8;1 zu`ak3uv$Dw=b#bvP1X34T#GX4T0;$o5+ljN6+sE|JMM&$oya>G<_&7KxbPN(%%T4Z z_6rSWlp}0`1feIn>~E)2`c+p_WauetAy&}4WZN-Dv(hwfWbYgZi(#<_8&R(yo`A3I zh189IB2Ow!42Wm#RD3J3UDKf&FL1+QJHT&2tp@XR_@W(?GC|$mSvn}Yr%n7GIR2cN zF)0M2wiZXEu}dADHn_-Lwaz`Gv@hF4EL8!6t=ZYD0pHQTUnVz3#L5>lME2IUjRiWh zG8JW7q1>Z(Y|*g(RGB`?#w#em@4`)(Qg)@six4=9g5OZq>{hI}_6|PWtd6ZAieuKd z&4B@@S6U9SgR6L} z==TQ84mZDSut8!fLd-hDG6%v3HhJ+4?Co1Ea+dhJ?|P9jnXwsfp{E#c^lTcSlP<5PWx)h3Trm$V zjUmSN4W2L?QFSbniGfH$%!1M6wM5E8K5_$Alxj5I_Ko9UkO|&;#X7!_$l6K2t;oRu z_jFhJN(9GOjUy!jO7kY56CohmE{x`qazw|iA?Vnt@O#~vmM%7H#zgC^hhN{Si53?k|ggY%n4kd=XlpknRd2lAN}O0{}(3xC;|e0h3Vd> zy9eDm`Rh8pJC^4)S@csSUyF2D=^DMBK?H^%Kqf`Fu&}`-&=TJx&vyf zC>uvefPM#l11~z%-)LjFyL^(IiPhqx(b*2?6j)F>9W1sO2n3*VH5+8Wu^&0u$Y2-ZCC{#oSxF?;mH2FjCtN38%k#&IzJrd95gd*G-E|(kJ08A5QU6dd|QFV87 z@iMM)?8_FL4hhH+aJYw1gWNjRQKz8SfdB}3*d>^e4cs_~CTjc>PGp=dT6^dGp%)iC z%|z&qp^gymN3315wdoP{(H`BGMZS=Tu4$WLB3%20#eSOk|1Z2^EZk1WA8e<}GTuMB za^YiMIG$;rE}K^XZtawPfb~E3Vg%Y6V}iG0jQ@=HVYG2S*Qi~Aa_6P;Yc`~V?Llv_ zi;{*J@lnV?dQ@n_X$c1I0f|-J)N4>%dh&nub?fPQWr(I*_8_|=Gz*U_J&Ud~; zeKmj=s&Ig$N6rhxGB6^*ydMh{Zxlj%n7(4eu;uZV%sd2vVN^l3eVf;t1*v38ts@x}3{M$#n>kT-yLt*S$u}nXjY}}+_4zy*k2pbTB zcguIE&v?}HcJ$EKZa{HlquZLxkZSv<#ppX z3PDbHpNyAiX_c!}GuXMDYA3a@pTiZ3rlvU0%&WFbS|`op6`0^gj(01 z9N6p%Pl=i9T8%j|@7p&_lonVy7%AOWN#g@Xmz`moRY$h9FygXCC88GBJ`~%ti0cLi zyZa1bP-v8$p3^dCA&NbQx?M~DG1lE(2ZDHRnr=0eVr+a6mAQTMcGmkxPG8`IYOWau zv&8-Wvgcew(LtFWUbys=#*(JND7G(6PjBf87y{#B2)l6zS#$(zZOEG>JwT-BPi)>6a6Vy$BYdAREKP=3n&L8cP4i0n}zS-pW@NwKEoh=oR4`cN0D zH}I+NgIGrHxZlcX|4KVLRD6;KCYKvL!x zy@%i;WVvE+D0Y_iv5+&6)%_h#ht&qMsl60-I5X4ZXT=5OlR#A*76hv2wHHJUn2(vtXFE7|8P<-Q+bZFt_*?vqG&jh#X zxe{~KesX>l6c=nFifdoOjIVh=ABhKu!B}1+-+agDRk1bHnA#9lpx60iJgU{X-y4tE zH@69~!dggkTQoMjSl==vZ7XD-wz_kygaIkipLo5AF$$`FZl+^dC)(WM z#w_}bo|Jt{08}v3es8EW#oU)LUSDGZ+jAs=0OM0B7NQkPi4t?xJE1f@iGQ+wb+hb4 zV3~i^5H`h9XfUEl1&cEKxvt{t8EbH^=`L^YM4=#Du<8SLzU8A~I4kAI75Cx_ts5*1 zSZYY6t9LO^fL$Pi&(y&KhmgUMO+MiJyEOLMj&F)zF`;^O(*L*j;8?Xri(hu|UXecD__zJ8T@Q+*&ecb{dz;YS8#cgi;P8JMFkfB5z!= z;RU{kdwiSrQI|A5_^OID4CNxDSWFbv3$%(w2+SVQbo4GHG_Iw0%W^_2PbBZ<>6~wH zvb-6NiATwfV+aV9(uQ2=frEhv%+?~rStvYK_{Q>STgiW)1VN}?gg(Lm`fSUMnmQvf z?mz;kCKeq0X6x>(Q%3DwIyH;5gq)|SVlsK9fB|Vks?2|V0O838Filo`1i6hsy0@$u z2hjd*00jHpCqh|Q~Av0^#u^^A~sAYj8Nu0R1~P|v|pJ-QWK zmmw4CZtIvIYX8%A2H0V)r%CqCw$lR3K&yRacb%FiB3gj>4Gt1Ay)Po#%$7G>wlh3@K~@qcQ5t zO`a6DILu)L!L@ZB(J}g(o*P~J)`pN#<<#)c#+)DuyJ(=)C<6M17iLq2FmtW|S5?r? z0+!UyrN6Zji#eMFtpxWZ!jyC0Ja@HlpM}!D(%8sa{1Md`DE87*qY*~52w}4AZ5|6Q z9co7h{6hq%`75%Q!4*j7cc3!{Fl95CD}n2ZCpz~`OR3*7RAEFzk11`$aDH8k)0q&k zwa&^?)X08V10S>?55{f8`x2x5pY03Y>>KOiu`TX?u4pI1OfDXy=Q16p+nz@3t6z{d zpfunNsArf-vb)F^mrw9D11%n@>Wa(cnV%{hoqEjVATcD}tE04I1)*`?h{eko&Ro_( zH}a4MM~b7EqokNl?bt8U8Gq10dBszS{0^?;iyNNs;Q6*rc}AK}0HJK`5mhCU38EJ~ zb<~lkmkt(^N3Sn!1Xp9{&v;N0X7e`SDxt%0->nF#Q8fkous_N-p6o5g2eC<)SZY$i z;r9pd3tIyGNxjAPB2Nf0>8F}t1?xZ-k{Dg3;U(Xj9of0y3Ib!@ z3u%kEgwHHio;MUqsXlcXHqW%al{ub%4|vCcF~wuUrMXqQ(tsOl-e*|nNoKjLBwO&A z1&>{E8e<1t&!bjOh+46#F3U|pF=5*L(-9H8j&=6`OR`q0&@2UXyawCiAf6%RtXk_M zoQC5z-@UTwv}&$RLWvTdb81vz`OcInJ46dpzEY2ru<^#vm3f_G_wm||-gmjHbU zNij5Z;_8ZoAYV^s92SR~L+jdmux;s#wn^v*Zbb?tozlLo!=`G9*mp6kPS!95xkUr8 zkLg|dZPGj#fV`37^Xw313Xd$g^h{3@q!D`$rf|Dpnc1!_kxtmuzP!3Mtxfk@NGa2q@_&viTthXlu3S-+yYau zy7k~s3zt|Rd$tj1cNwMBLW_G-g*0qr_e`iL3T{1oG?3zW~Fp%ohNHfb|l(@0-0-V z@cf10!LMJoZ%uz!ianvV?iO1Ju{b{y;xWjQm>Yo6HDS0sTQ%!g8PTu%0*EBzGdb)y z_hQB9{p0f+pQYkiM$Bt5-G~H+3hfoMw{=#xwfnhB+ek{s-?n%Qdo)c>Fsuof>z=a^ zu1OGk2C+y0$oyw1K+hA0)cG>ZIzVZ}*EN(G9 znZy!Q-C%AW+W0yysTKyIg0(8aAB`*E; zROv$O+IgxtQJ`FH`X_HkOfD4B&(P&KKlCx5;L#N%GH_UYJsckr791A$uK3lEwc-JBAqg3j;(1Ejn7hUIH79K}3&Vs__Ntu;uRAN%l6F1ul{?-wjQ(%qISCO@4D|i zSsJ4Dv_L(ejWmFO2Qr3b;B1VffW72GMdUSkt%QE`Vq$%~Rz8M5xLE9(65sAFOXyg1 zwcW%CVbHBj-tS_Wu4Fd}3KA`Z%}+##e>RmL#lR>IU6{bg<4*o{7JV`fPp#`@(=ox5 zff`RcmxtR{DJ5&z+wfy6z&XH&x8#t)1>}arTtoP5=Yx5ua@&U`9&L{N&vV1`n377=YL=iMg`N|+c?)fXqL8ppe}ezK041Juuyg*_KL-9ooY4HV%i-Wd++qw1v=K)R6ZUfzQB9avd4P6AQ_*Qq|2%p9U80Bi(R?e+6-F zD|f5Q_d)53R852xT+S`&f-&W;R9I$Yf<6#Yu{GNOp|{HGez*}*6ydrK))H^2Xg5v4 z81U`}6A;F)`tvFpQ^f3)=NJOjrW6pdg^@eASY72K(nl3>I6I4E6RvBHv>BalR^l~s zE{qYV>V7X+DG&j|VC__PPVD&)t`KD7G`;qxj@h27@wsQK2W)k^)RpNiL(tb;EmN%f zvbQ?0X6bILZ+stE|wz&wK^Py?n zvBfce`I>*AIu1Wz{k6B?ox0tmr5}ocEgB)V* zmRxf|KwUV+xhWN=npos%JdKzoCl_@MOW+`srC_#$b%n9$s1>oW|6*}o;e9?U5rV9U zjeU~T>%C47R^@4ciCZzZ4oRSF-We zj9FpL(eUcbJQF;0`Nqe5Yh&({4nfCv`s#WcV}jn}-e2~(x)tvrQ;cgi!i!#L$hzN@ z>1$TpoBycstfCnjnD2leg>{8vcuYJ88uo3C-_Xa8|1VSdPH^O+xwN^yY|GGkjHo4H zhbx3$q73QlPV4{*oTlaE_*n_E;}T?78|^xg(>;q=lA?`=tF^!B&*Vl1qPaABQ#sNZ ze{+{SZ<&xu^t@Fqqm&uYY0^^9Kf9ROljEwgX{x71SUZ!|l*o1r5Na_}Y@j7gZXx%A ztmy-k0iw}<1V7o4C6_ojmWl2I%+Z3KV}0q(5X{?4$s#3z>nL{Kg)|9;HZ8ONC~DL^ z5agcW!=FBe;K8S?O0msRbf7bi6ba}ga+QTDX}Nb$fHDSd^}|npcVbdg z6@d~aFr6BK&3siZUxnp=k-nq3bMI9A9qNsetZ*fn>pPqW`&CgH2dNx!BVt5VbGs(+ z@98bD>fhOTT-Uq=E^4}QWs6V{AVCeqdxhlxc!Je_5g+nWC+`CoGYnLhaVo-WV2-~R8A|4&T(XXUjb zzb^jk&aCs43?=}h@?*~Fq(R4d_9%a8Ih_hyyS5^J<0rhY7CEL+bs77;W83lzg>fZU zY=j$3#EL>r20Tbt3L=CX4`(4T&v+xXIv4l1{*E_=YFg{AgxxUG73L0&R4#n^Ie53eiOFTu1uOG_$D#W-m-RG+F(~{ofbxnC_Q6;YG4-_RH1H-E&tkeZ-CO3 zv){Y{#J$!xp-aC3Y8K6B{-BLkv`Dp=IVI&rLs~srRqOG~L-GW-hrM!iW0x}Lx7nj} z-lbtc7Ok>*?J*^h5{W|w(nVK1`1MqS@0B#SILFgfc}16;PP^CMb*WL3KX!M;7`tpThf5YHv+LN5*~Z$A?%>;}B(RS(GCX0~X0mFS9Ktx8;|~KulFMcu8Bv z`y`gkzLboYz19U$v}Zf9V9N{U-g(#be!Ly7Qlw#N`&ZA1}&KD7y4ZMK#RW zs3Cj0(fEb#l?yqRgb;k5`%k-;A85=FE(T|Mo-e||c=`3z?@hivR%z_#f_q3G8MjfX< za)o?ZM3_9{j=`MY(I^Zh{^IvcU&N$#Q25du@sPi_H4U+zwhQXN)TD6YcMb6F7$5kC zQrg~bXLFfW3C(h({SW?Rx3NiZRAUa6RBJXDw;R}0$k^v3hP!lWAeYC0$dNBXYknC# zC;q@p;T=B_z7{d}{q%U%^*=aXQF}A_X_+~uzm-I{NRuBIzbgaY;xe)5R(CsyzHdjy zvaQ5pVh1?P(OLVaeW{)MWNLAMUsO!wY%YH*0vlw%wnElSFRP1|_# zIMhL@wCA+cV8z7#du8(?rB#v`z9qV2TO*4LeV45IN{|Nv^eQg$jLX@kBMR5s} zuJbXyj3BQ!yKSUch%h#Me6xm`biWNW(pQdGcF0^33oj9rLIlEPb`2!Os%!!e1LgcG z*D$8K?Ti_ei$-5*O%P(~oub@FUK?cxc|@0;^QiaG9W4!5C>9b=B0s>Y+RsC$DliD~nPX$ng}{8k%Oj$&b1e$XQ>}dy zZ^DvQ8eC8q<_o7!_Iz7+w&h%%O0iP~sM2hS!Hwg5Ga-Oypcj^Cqpjm5+M2QrR{|)T zno#VM@5)oW&id4xS4QH<@ikE)T9OG$j0(Chn(er2iKUJ}sgHD4Du*{RLasO@Zsp`v ze&t4a8M^t>Hk&-tqZ#S?bPlUU$UQ$sw+k8&)K0g$&_!6a_iaB7+Wt9=-7a5Tr)zdf zgax?-kd&0oVDqOkdc6~p8VQ$i23J$=RJ!21+AR*!31*pGYADc-E;hNwDcnqt@u%TK z&pm0B`%oX$meD3lGlv8*;Dvm4=u4TV_$T3_IGgiK2b;RQISpGL;5WC!?#n!iXTcnZ zOmmcT|2*}hD&31xk#)XIe2z91(-t~efBk3=tpcn#wZ-bEhkigj`rhn2i;+D+;ceiY zo-5ph=un4~%}58p0>sE{$lmS?EIW z1%(56QNhxaucdX$xp2A}BbOL}M;2@h!H=w=_$Kfqy@fc5i@}bd;3gLuziSCde&5pd z*jjpl`TzYbVJ`T-B{?f=P)d^W`FTP9kCT9n{Oi%0`b<19;w?ROiWC-uQ>u)=sIh4`Dy(+ zT0b@n*=nFalK(`#i|u<$!5`P46UW%mDgT`KAX5b{mHC#)%r?$KO7 zc9|%M3QZ{LBBAFs4e;zn9}id0;^7I~b8vtgCcJ z#EV{{+yn-8CuI9z%c#E$f|^xSN!JQUr+QLJv$|DwLs=RqP&626SW?|C(ECy2%KCC^jYg0hY{`_hupz7X6*XrDP@MJB6>~e&fHNTtbf?rguape7M=lV2K-`Icu^ja&uny_o;zkumzzLwyy#g5 z)qK9~d&lOw;5!A|9xix|ce`df+=$7}b3%8RB5F8$tcrODhb_dX;kt?PdRu@?btwWh z2oY8VapD#orXNu+_*LIvT}P>7WObAl3H0wo*W`V*arG_nJ1vbzfQ+zzT;$YlEj-9N zTp2^4n9OkCG#t^Zbop)01?eW2|rG0qld% z&T-jr)fqERHQrr_ z8?Z$zRdwqG-vDE&o0wCdi(GH^bcEqRhaj09toXRfRh}Rc`T<%n^HkWduCzlj$+Kqy zye|H)fg7p-vciCQ^vTF0f@vB2;DJQJg-oQN^u6PyeWojlmE`R4okYEK=<8jSM6!uEhGih0>oerOk&K@(gGC3f-vo_?zqv@u$E@|o6utr z_%=C@XKB0^jA$}=7V5XQwE0j2OyJ~H-h~7Awm9bp6R5S{1 z%RAvd1g@(};aPm_Lh~^*A%>T#q%qejn9=nj*~EsTS_XGXy+Ukh;x+Y4w*Au)`qS&A z&J+ZM*iG6;4$WWkJtyVc1?o8MqGGbAz?^c&c4^@liSCq@9=Y*<@G7sHVk=#<3|@Ji zp=r(py77iG)YG5NGG!tJBe7VUYeTg)w2|u8nhd`JTf%z~i{YorQD+r__KVTJgDWQt zFvv7!>D$sR0&Xd7_fGX{2&_5;?4_TK@l>Z<4!Vt)j4~x8alkRE6q0I#uiQrQLXv;$ z7+(coJAMWkH0ES$WU$_J`uDqy(=ATI~oM&-W2MGYrM$rDtyVT z(Q*zA9c9`v%tn1tbj=4Kib=G%{%;!!Jtm}a-rm^V`3Im!Zci5>V&%Jw70#$NFAyZqmtT`uXVRSJ0*Q6Ky6hJ`=fvi0E!5c~!!b5Prl(qZw{NjH(b* z!ZVP1MKOlWCvT^9Z^vS><)|P54|6$W*Srv(yl3Si6q4I^a9-~c%(G$Yy>7x%+q@}u zBA4JqRY29ih;t+3IF9tHqui^!Yr*t0ITu2%7!L2MTTZ$vRHEiPg&*1BhHo-)Df@u+ zgHPE23;$cBGxa&Ba*)uxRD!=OoU>rszf?&Bxl?Qg1c=)iQ!Sg3GsLBEp3ZNnOHX17 zraQYJz_7kgs&ol|vsBmnGS}8Dj>SlYMn9k{-P|ics1PJ*_nIN_yPEj3j6x#c~0Am3zYm&d@ zo79Hr1N~Ch+N1#+j#{3J?%9TX>W~!UA0K_9t~-cF3ejkqCyOHa(r?$>Ft3*INTAhvs>z-WZ>1kL+c7N8VF7EQqPjoT-#< zx8D6)xn{oZ(OZC5WoMwc;Tgl&_Pn?eFJ>H~2xXWh3}$Qpo|8?}f!k4&51EdIg0BWQbapgh0&)7t1UPY5(mUS52(%P= z#uh$!iu3h*Qnna#SIndOR#A=cr-0X@c055GT^pIs?lyhA9`#!KYVb`nd$1d2W7w4% zmTg*3`|AJS(3i^A5tk>5;#Fp4Kr1~vACD2PvtwHcqU$jyXTJ|1h z@wE=p8gMBaPpdg(|H(9Vw7>!Zn@3hf&+eu13!WgBT&LZDj4S%4kKxgB zdvv9$!KT}C!R1h>&DXa?@3pepdcX}n*rhb8sdoKY<+)mPkUfm8xCYDWl0wl(UFikd zk5Te+pT(Uh-3n3>lODvg>H?@i0P5;vucqns>z71^C9bS_^zzjcPuUfbK%tyF&#@U%IGMG_rso1%(OqDy zE^kvGjgdeKq!oy)52g}zalee&4P4^s!f{OzydTp?BQk|^4@8+bVJzP05|ZR9phy*v z(X^3tiKSLKp1=IE?IrStj`Q0WBwKwDNA>OH2VXVa!9uQ7)nP4}apnNIDxOfCctVBi z61F5gyct*n@oV3|l6HO5PtMjWYzQlR3AqdZZ_B1CXGDJrALM{DKrU= z_GHB?@{8|w>UZAF7Xq5_t?oeCffV-2)+(ZOc$MJCFT~LBgq@<6#-Jl&ye6N<&QzKr z+X9A0a#Mwcqp?wbhO}Cwd!{Drv6jL|2k$en1@=SWeFBuWMJ0l+#6#lao)e^tE7Ejx zsgPix)$8C-$={uK8)0V=LHMam_gI)kE{ZnBu9$zrTnCrDSYqJ-K-42z0MxpNQxCLa*|LLpk81ZCagAOFLOA2#I8<+V2hgf>78R*v zcgc*Dt;NPXaRvQ@3tqEKm9*t*eQM8qukgjg+&+u0l=mhJhOu9O*VEzBdQGlyfU%jQ z;TS~Qhpu=7Zl0Cf?|uO^LWT`Q+P59FZH?*BVD-<&LO^9n7^wkASPLr##zaHc!Tu1{ z4Ly>h3%rZA4uLySMV`pB4paA*E~Kx18r;BC@aDeJTzHEU0e0L4kDCu(DKE+Jk+qm> zlFoG32*IKSqC6!3?7-poo|7%JR>Wv0X$=dzryy|SAj|$upDH18XW4~X2o)$ixK$A% z7F4hx%{-6Xc^DTRU3DWUD_1$GcEilBFu+w*+YvPrlHM^D7mIY*5k`FEBUby}*SL-! z+sJ}Ta`FRf-PkG|E+N!-h842J%=1zc<{jgVu&(H6``U>>cRbI0Q=gFnb zQ=7&1o27;SR$eWAl;;>KFKm{q!fg_n_3YNju6c>Kqn68EXu7&(!#30tDbz0!9QmQ+ zG8;OHacWx;uH0K`%**@1i`#R{@q%k+&)cAtrFno+kq&EsO zjY>Bj0xM^fmG_(lb670Jrj~g!O{h1sx=dF5b-BuuRXy|mmRL==rmC^%%UZ60Cj;qD zfhehPU@>2lp@!s#aSt5_-4`#qZVm2j&g_Pes+Y6@eZ#%e1U(LIccchDtymzdCybJC$9MEQa!sCa+5OXc>8b_WXgJC6t z-AIJ?OxZ*zM0OP_@Be0HYXNUf7$HOYE7$qo035>{Kj%p5)G0k{OsJF%ax9XrRcLR( zCfSN;E8ca@CLt}kHUj_if(>)zYv6d|afsWZ_?_~6(TY{eG%9AF{zN!Coc+`;-aM_b zRUa!)_rqSgkoUNd%lg!RPI?{uKahXh*}oQkHwT{Xz6`X)-ETS_Ie(D%pFMiwxz;KN zxX}|l9pS?ebnwFR&3G_bvdx!W`ZG*XSHOi)>(mGYI7WGWy9f`;cLF; zS^|ZH$)j$2&CmK)q-3O_rn$^mro(5`)a0K=R4Io+9$c}A7YskPmrpgPi{y?b;j|#e zmW!=&M~P;5_Mu|P;|~bXV{+~3HsR7r_P+Z)aoT_rW{TrN9{$vQPP7}`&)5>pae5l| za6dJCyd|XaeDwz_=E-&^dZXZ!JnWhjJ2d1f$OmJjf|(uTouyVC>z+EkS7bB0w~pF( zp!I-*@)>~SsNS`k4)PgBHh5VWN_kGGZKRUo=L*5=^gY2iS7zw! z^kF=71WD|F5QOs44{?pyv;vtYinQ}cVe1Z+nCPDYk#T9fmg3#Rw5mBL0-jfn`$s_S%Jq?;{=fPk zO`L>(@V~C1{5RV9ck0sn>%TdTf2aGu>;C^O{ok9M@kCSpd{h<8MIy zYsUt_+xnA$M_0Fh`T;|ykAHfnwngaq`9IY&ZD0O~ZU5zH$3H(HK>zwDZJ2+4a6fDf zpn9GC@id%f&;L{V@NYiKWsX$Km2r96RsfoFWjcTV~v^n`w#3K==}M% zDLVasvatSvko)JGV%q0_pIiSt-2Sfdhn|8$!~YadN!$N1FM}Tf4FJIG58LB3cKSyx z{U6j8%?$sjA^i{w`u8CJUhaR*PwuaTIc(dF|GZ}?y7VCA4TYqDA39g_BM<)NL{i=yhd~1eiI(U zJ&+ZFA_~*6gwvM3EBgl_Le2kU?_Ha;D7LNb9|REsqG<4`f$o;2EJQplzd_R?0sy|v6+hX13@9)_b`FxnmBefNi+HGSZ1BRaH6zuBi#Fg_nJ_VykO5HGF? zhKjchYCbdx7(aOj%1sFHUYXl!6e(FGJW#MbpIP5eu}_?J%czj(b474uIC zTjJG0}RHg0kL&r`9WH`-ixOX@NRZ_6@%o@>LQHF))^cYNJ$G#a+g2NI`M z&=1<*O?|1O!4jVw94M#);bR449>yZ(wHb{&11}MSrkO{PB4vETp0ZQS!;nQ|)P=l& zIwY)(T6sTSc~=p8)Yuo+l#MN*IBH8r+6T2&8LI#mRza2B$~t=CZ?7D&1+#Xw`WtzZ z&peTFjXxcH%SmEB)%-<$CaCrnvIG6i^{XPXwrU^xTmga6gFAl8PRuXcLo~!g@Ks43 z+V4K$NCdW$@zI~X+kSfA7Q#02SR1KHTQ&iL2f4yqozFbCQ?p>=U~7)SA|VmcPX@zqp;#m{Dr}YSB*lVLXGAM-RmkFqkc#N_R8jiJVQ!-2N*!HigL`@7`=W&~?Xb*= zlqFI#r?aOb6!0QGJZwbc4F+Pi1=mCDAK)R27Vi$jf;xezME&?=gxm(5S6W^LT^QV9$5q(*dfpIY8 z*R_>?C+-KVG26@jyk{X>08lKaol;^9bSzY`b8Tbk%vpX!AR3`Tz2@>mPl=X?jWnDv`LqnMgQY@Nqxu zbiw)KosllcRB_;ta`mdet5ONT1+q7%9HP09UA_8LufHWfsMn!> zAuhq4!P(NZ zCz`eiQwBUXK|St9y%yB{#ufSUVzbayJ&aTP%wJnFvamS{qI3Z3YgEdQVT;Q^G{rd} z0Yj}5L2XG>6`jDXfJA8U7jPfVG*O=mj8L?b#K&M;j@_Se?#cWtH54OT-vFv#&uBs$ zxD3sO^bKw_0Ce6&Y1{=m5LVAZ6fw706jXh>BZ}=Dwl0qjzfe>RJuxfM-+B-VF25+g z>-Wq9X15X*aB?XMtoJ(NV@FyrE;+Rf2=+RGoa4L}tu0RxF=C0DFeiwLLkP4EiQ8qK zk5x2_P3(bOA^1ebx?&a&gffIoNdbR8x7fX*YZ+EA!+9$`b2)a0X$1%K&`AR#WEK$3 z`7S?_WcZ;>C=%`N>aA!82BOU!#Nm=YUVMewHlaTDE^g&_!QDzNuuF2wHt2Wd7m|xl zbY7E`*XrlP2;Fi zT=3yvvYkktGL(i)?zUk0g=O$@jahJvRqL`OJ3g_ZDy#WlF|srcoAfTwqKk{+T z*#sXRXqfC^%C1yw|Ko!-$K8g%Ie%}_cW}At^;yI^3EkD_7J>K3s~YqOnm0H|bc(J- zXC0tA3n+LbAmhoOj&Ik-w;r~@aq}eK)F($pz3o0Uk-4WzPw*7 z4*hWyW9vT-Gj#}z!RlBX&!}ileyARi2Nz!6`(^ z$bOz}436NJiU={hQNfxLhTH#{5lK&mD;#o;!EcDd2PYzT3yOy_1~H!5_y0v4}iiV}DK z(}|DzJdTRE>Hh52{c4QF9UnR=Pouj&dm5gxQt}Xpz3=%v+-L98XTutfOaK1wo%u?@ zy}5nA^aIHrTP8Sg6#Pu`(45KpZ53-S-X7$=_<9ZwJ`odm-)4bO-`C{CvN{f}aepsL7x%NaK-|KmbhY|5E|3FA<)1)%Fs?c;cn1U7As=^ z=-mwjm_i7PpSfGmBV1C=Z5zoqvo#}XR27rA)@v`$kLi=q}UburMXsQ)CA^{{yU#A z8rkpqfiisOo1E-BHL_E80rBcoW2fRE@VAJ2q5wcHU77M8XD_#}s*1wIc8yLm!zgM7 zCKBMO<7EC*$QnvNF1|M87KV-0cyFnbk;OFbG(6@dV|SIkWyKcwXyD$b75gODJ3WHBY{+;__$EKi&e$_<*O+{{k8!@ z4SAzl`~4N1frtx;AjE}QhT4pV0!D4D_X(@*&0zEDJrD7iIm=PYm~0~J>ajTkk{vlf zuL~KH5?TSd!6a|XMc@&1F?L9j6{=$+Me;qpmZe#YEta=|VI;SbW|XVw#Buq|ufyh_ z3+%(3N2ROhd^fhk$TG<94(ZV;el-{D#w0g<@c6aeqIAVS2!Pgso{ z^9(>j^*ck)^MpB7qD0JmNx;CAkDU?%!}6m z<@EsS*Xk?r8nQwlIH{tj&6lp{&J!Bb01h>e$Jn%r%F_M&s!j2(yBKY~5AZ+?qHxGh zzg3LwUX506$}GJWV(u4j(MMg?SKq=pep|5xzBIqk$TN!Dj#N}jTaGL_*-2Y@ry4)= zbDMz;fD5t}R@EQ#utKfhE5|vJYQ$Jc*3IhwK;kk!wb-#^R;LQHEJacgbVr_3YKJGp zun^J@`gRN-Mz~d+B#=@J-C=CW10BsYbmnoI9i$stAB4&dH|v~8-n|;sV)DgETYm){ zrq2D9`&RVUpN4CmBy8xL^7pIplB)L3-&5^U2Mk8gu&jt~`6 zBzpx`MG66#=lm!U)lzk;CB%JA1XASHj$0gU2r9~gBLHteui3sGF{k#4w0Znv7VZ`i zC!&@*dN_uqDEKsdA77h0Uka1cFzU%xE)#zi6MymiLromj4J-dI&3e%^hU?SKI(kdF zh<4cNl!M6f)&KGv+g&Y>InDHOH9)RRUzKI~yoQP`%a_V_8%9~KteuL8jEXAxeGRwi zr!W|Mq zgLw;|0;3-7`{>k%BYqE!Z(fQx8d2FcCj-wBQ7A@EAV>3*>&QQ1 z%)iiUne~MIrM`Ywom$nebs{7tSyQ0MB0k%?mD3UDEr`X4axO?8WUks~1-v&A#bbXe ztQ$&A?Y7|{^JUd*FHVS2Y;TiG1N@W<=4~hDar*#`G-Oe zn@nL~?c!Z%@@|X?u|V7CKhV%9ii+!bxDoH}F5V{Mhfrm`rS*W?nj zkX&S+3V1tx*O0S908^&M2sFTCV3zN^RDTdL4f?FWgxDbh1N_8|o1*iq3~F|HDA^3T zX|ogII%({g1(NE|9ZI$A44a7Qd8TiW5t}qygu2$V0JN%)JR&vVY)g*75$rzw z2OALx^}<@9Qcpy=2L@^i1p^fklnY5xa30ZYsb$ou&Pjd_Jy-f9w$Y8X^JU9l135GX z2XFbgwR~hXIax>)djIf{b^bI7e+!X~A%t3I+=(>1qi+Fk@YzYqXlAM+GAg;U~ z^cs^4q1G$kVubD)pFW(I+GCL=bA1rHT2L4p%(}!_`~eynDIueJjBQLLfoM@&b1CZzf2Hi%YBm7~?0Elt`>A z8MOUcOKN06>lMO$tGI=p0m_Y3+nu^07L84vE|#GaIG0}f5OI^rkOJ{*-tZx~EmJl( z?mJ0Aw?>C}THQ7I%2IYyVW9Cg813_I{F8^!I$r+`P`hu;6W+tt2XW1)f?apBp`kQe zv^IGXYy;LAh8zToGdDF5z9U+7w4YD=2Bv(|U{U)lST*k74C;=oGxfckrSAZi5ou_t z2(*&sCFZf9I97y99YIz%l3;*pQUw$k~d5&3@wzW%pGMA z4)5Z<*vIyI;?(px3Y9?Pf~ay>93&rVpb+H+Mhjgi&w3Dr#~uem6h~g|H{{WDpojD7 zMGEf9=kDH3Z8ngX*DjGs+Y0EKGu{64%%(O;%iG;^{`40$wQYV^-0bmnRITO^nNoOU zKjc`MDFo+P?g){CogTIQ0M>5MHaaGG*#l{UaLhxgsT-iV3-}cUd4aH+$hr3ghTgXI zb(pCxQ$wMFvG5uaD9KOV{a_B1&gynreqbR>Ti;GuEH({l>Mx1V+_s5p^Mc`w=u6SC zf_bI7q^4y@`7ONNr$u~QaU-*1YYyvV{!`v<4o)CmZ_Y%zaLa6s8&Piie_9ZD2&Jla zg8#>pVPR3_1m{o4SXGhLuTG!%_}5tai^sBb&|&A*XG6DKhErQm%1gunv;9*-GL5RD zw^R<<7`4I()|3#S9mYzAN2HjtgJn*Da6cl=yfwOShrVm;nnXK+TEp;y)`CRL42+@1 z7SqGF_&GQ)+06@6Ed&iqP)q($gTTj8-lwQco7w6kT0h3FTjtLcDPh8CK&OBIk4| zh=|uuBZf!6Nep-nVyHE)F)eJ|KP?aqCHz&p6ohV;-3i($CWRcCuFx*!T)Qw&ma_?5 zm?e%1j2J#zlUYg&+*%_$W@#B{yDGJoX4#ir0u^exJ5?dwEC&%b%Xwpn4k7w2`grq9 z`haxw;eox?Xs)zSW_com=1PJ7zcb4-O5p>|@) z!3q*Y0^hi^-WTT$B{Yl%!DX}|`gnw&ZtzohbyhI8GD);8P*D;sr?G_R@v{-2g7bKT zlsqrfP>=RSxYK9i|Gg7?792^*1i%$DlvzDn5jUK*lAS3=Y_a0X=G+^pWHoJQM8{+) z39nXz76QD}?-Ot;`Lt=a89wRyPHF73FZT8>eNiqagundD7Jhq1umaf0(pDr1a^ZNT$un!DdLN}N7~FGarR9Hgo#is z>;Bni+Pr-wo3>=(`_d~-cSj{H4gwWXZK+K0+9SUWMp;L{Ub=SukGC3!DM0m9_I{`% zsH&^tM-OlK=)-ry@=n1(2iEAE8RcOw^xy>#^vWl4c`x=O9z0eJ1*%JWaH*<@2E~Bt z&~=zUpMRqQI&DpVKH5fezn;#1!&>#rdZ1SOnMynxC8R~qFTJZ0b^1-{d?c(7&Rw2YDM^ZtJR>0K{W?cM$rjOelv#H=7WDHQ|F-8J`GHS$`f=es6qC8gREszp zjL2?3Y%}>~v&pZ*z*Ux`=VnNJ%XqqErLjKFElMApZzra?;F(TL`~EOMA6*kvq6Sbm zXNnWF(;tl7EIgZvl4c2OXJlw-s(0XQRdZ30TjX8C+@k|B51J|?U`^)^d@Df~GC@~N z4k3XK#S7S4xmD@IT^#{>IFut?pI(zGHnXBid2864a> zBx^-`w~0ydb*p1b|I|@lX3!60CJOr{P7Wbe%8KufiZ}P}vO)X@TicIl71I8tTOI4w zL{Y~fo^%AQ3%Sza{r~oiQE5yrOqz-ahmNL^3R*f|aA_jqK1N5R00d%_%0AEJ_uiiN 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

    JdwwlJD_gJs3k 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 z

    KHOAEfJE^JZR>f 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≧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 z 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

    T9g6DZ?PeQ+Ig?T z+vE*jmb}3-B1Oy{BK2bg9lFE~IcR4mIdr~fSKzg^`6=|X@wK0zawxJl9f0^L!WllS{DmQlq}pd(jzr&y`HHw|QUoql6z{7`4cA}*fx0gmUIf=rPgNBym#+$if>y<^P7i{>5;sY=3LF9lG44)(MgR`o^3;zD&Y@6=yV+bX5lPLHF z3dzO%U@u2B%b0HVmzAOC7_^Tu`I-dl8H@!9igZ4>0>q`lC^OWtl$A`Nfsd%$4l@B7`F}8k9)`iphyq zq7*rA@WA_?0oR|T2vm!U@QFjfB{qlaAYgWEnfYH$vm#^X^#~EJW7n1s=6A_>#yJT? z93T)){=pRqk+QT^piJ5o*a3MR6E$|?9fRqLU~|jVs&8a@bCkez%vaawIc`1IHQV6* ztOe{W8QUn9SU3(0>anS?lfUD zqun@X6)C8C!g7lJBe9{(?u^7*CNfx%(ME-1HcKi^MX}Fz^0-o@_%fTBh-oAIMK#^aXb};u6^gv! zfRJpMQ36@y1sV>_?TS%o#1oH|8*j`} zjv}H*Vj+u~y(;CoSmtQ*Yq>1ASLHj;W4z~J-*1@q{F?aAA*QX(En=pdU0rZ1Dc?%U zzvZ`S9PA@c2Z!3ODOOsUBxI7{9Kc-F9=9!V zsirk;-TJZTWyZz=dHdD<~=>|gBHm#5cuI=|VB+c5| z*-AQ?(Z5zr#I1{=$1Qivfsny2iF`Fy`07D^>iJu|dp7M7Zt_4%07R@K9~!jm2>-(H z@O9Yg;x?FVTy|I+`k{ud8A0-KrWqM(W&y|xxcUc)b;0zxXLdw`bw0lEV**{yCjG@= zyZ6}LYt^%C6lXQVd ztqIZ-<04Zg0AC>OHEcERRu22J%rS)6G80s_eHEQk9FGgNkQk*SDKs>>kdHV*jFGr@ zSlbk^25E!@p6#lzFBt+G)$tStCCzdWrns+-H7`MiY-P&VzhuFeu=CfERROBA-;$!r zAZ?6drBSX6?a;g+W{0S2FVp)3L-d3))U&{|YYAC43EEWg$y_)} zu}mf#Kdx9Q%1eCL!^ld+Yvo2(ScG7ZE|mY6!TxWil6v6M#X#6v^HYh|=_*nuQ1&hi z4EuU&qynvr)kNXt2N80J4?l<`0(q`F^vOetYqwV;+!9iF2mHejQcEYDw00Gpbmq*< zDBtzS9rMl8%oE!k8R(|SHWK%2VbVvTjkV(-&yHY8t>p^-mgI~gl@k!>3cePt%F@{02+jKhV5xeUYX;Yko) zXKIbttuw2jLS_Ok8jtxkBJ?d*Fyhiz((iAS?@jVhu09R-GXs{4Ym5PsS)`7Vgj$=qS`~C0}3@CR^ zhH}jT95J%KCFT>UHX`-fr_-16OCu{05L4ecXBRxRJ{HD1;XgGrRoxVdR+6=~&D;F5V+L5^*ti2N#5FMo|Edh+bq;qoKkRw`}TGw%a*4NpNb{#7;LrPYHsCb7%sa+FqN;T3^j3Pd*j6mDaFqQ*(n z?(Oy3U6*!q-fH!2K(ovJSjyUwdRU%KBso=WN4iAG`xF*BXaF(sY7fm~6~4M?gk9SJ@Ohao6DguX zi?yYy$wSEn#F;x~g?|TEx|lp_M#zUZ%hX}b?6>i6xF-ze?f}c?a-qt7pza9#{l~vC zcLFlzDI*w3t^$rZM(`?sxnCxkUdQoX^Tb(M(NUM=NHssvMR6JQztpP0|YaI0vDX=*lQOGVa>Q?DN3y!9d>sE zlQix`PEIz*I@5 z^Al%df!5Zgjh%xC!XI|g$`!DFd8c@f3pPIF-xn_VsW(1iFt{A!6N|=|{nQ(u@ecP_ z{OoBCXzjmP*&J6`z|z^skic7TDzIWc3KcKafO8eGHS3ilwk0uI*CMud^%Yfp5wTS% zy_8I)ybL(!OYZo2lO|)uUSwKHUFcE=p-UZqV|>SkE_IRgp>u%PUJ?y!cM<|ZCfU)j z$oVZGkDy@!Wl0yb%d#msgI;+q5F5V~CA2sMhhStA%tbC`wwE$mH+doZTm&SuK(LpK zc*-7kx0%pFtZuk&lc_9#?t8_F$)%n>I0$C*`WfyCG#M{?O^Rx*s!5g5_#BY!@cP5k zz=zX9Bd$}CMe$RmrW8@r$i{d-JsvfVO7EFu=rq`yev8RUBExLB!u3X90w^Rz z7(7%MJ~nq6+!`(-Dc-9hXJ2l!2|YSL1~XHJL^d3!C2c?FrLoC6vdVxLfsN2^(*Oxq zxMGND)4`kdAK2hCxBkP{fNRfLAIZ$3kb-b#7Its};Axf&p<2dGqU4&8-L%g{jViAm z)i0!$d(d}~CeH;TEF*}!vE`x4vyHy6N}<1hef#GUR>>UNY9oA^W0hQ)tE_Firle(+ ze$KHLG zTSV#tsl9ls8`-$qkn-CYh5r&U3ho33T7jGKafM@f)11wMT6w{@oK0lv=n^v{?zj^= zy~DTNChX`7RSmOt^fg?WZV8WC1KeZ!sLz;X{?2nzhKG{ATA4Cb=nknoGRdX;0d(mF zBGxk40&BQb%cb-%v3tbET1%A!o=qrWu+*n#cQlM0I6|2?DB@*eGsvYr9vGINu_>&> zQTi9Z2h9jbM7id}uq~*V=f*+@6BA$HQihl?ab0&B(-BN=*1arl;JSq79hJE+o#yrH zMGq9A9YlxNzW~Ja@*pC=S=9EeLiQikz`B$L`09C!Zf2$71sPvtpmArI8P=EUV--Eg zft-U6ob&^iK+jD_LXYT0z0?DIva$(jXH!CdO=^ekVMkbOCWu28RBkU+g?dDXfQoPFY^Sal2XQefde7=t3#w83SvCPdvT5qw; zKLeKWLde%aF<-@y^VVJ_n^P`*p(Q7O|Ks(wOP3`eGxh@4IHHUK{wJ1#-Gr{T7`UQV z4*u$>!Ed>-2HY%g@zxq}YYq7AtpTwjC%DM9EQfdG)X2NXqpN?whHE+rt9p-8$6UgK zMMi)P@I>p&2yPII{{a=T0#)x=lA7F8R4v{E9mLaXQt$Uv+Vi6ANZ?VL<`Q-zy6to!hFldEQ8(YM%H zX|b?B#3ET%vP2lZ)C!Q!`nYC&vcQ#alKksYYxDfvsg>PZWPRS*KS;vgG}v3y^irjB znQ2<|4!^zW;Y#&!-t>@*+StBIigrw_rBh!o*^8H-15y>_3=U7PiIceWG$!9lgzmD# zs!mbg-bU-*DpPNjsbx0hknS0Kb9dSiMEXlIqzPuE9#$xcXksH0=M}Ny;B|i9M=Iq> z{}gGx&d+f<+A%H(nBZD8pH{ganCMU>5a#r>JS9PUjf)qkx(Ud^B`eOF^OfQ`%zJ$VBXIQ`Jq>Ij=28-tf?!K#~t&lWY zD=P_ptt!m|Tv7zU3>WgtwbOv=1_~m~wn^53ZEAs(x$0mPHoAxsa<7`BobDUr;pTPJ zd@SH43LfZ&B3>l|H_A1E02eguHRkk}=(_7PGI$4Mk6a>AUZ^MiA|3dCcChV?=pC4= zjh(z_odsl2I}StxUuSSPktSUS5<;E#?Jx#(r;&2)Mct?(tHh>zZ5rM&0Nje6|;lH8@1>t<1mx6Q*1)-GX_c;9vF=qQdQVY z34-hS7(?B|rBOlJ=&L(%DNApV)NS{4HbY+(S}H3h%lBroxp~K@*npQdGHm>U3&+jU zhcrMLm58$WXua9 zlB#qxQrBgsY`Oud3X3vlM%Eo?iO4Pm-j z)c7r7x+P4vgy~BO(!gl3^54uJ}!r9KQtXndL#s*8HU@ zUN>&jPs>VHWF-rUr_~x-o;f&TtH!6eXgRuCo_Tfk>59#aVx87>bSA2)=_ z&SrVaMzOOQ-=<>v%QbtQ1i#@(bEB`XA;U2kzJMrQnb-HS=GF_%l>uGR5aIJ~=LZ<( z-d=Wxj8DA{_YU!)kOf_mjX<(}(~OUjypgmd9<07S4OXNy|FEvY3m#oKOSrVc;p2-& z*osa}d=y$$EoM*WRW|iM3v^4C<7titPro?Axq#lTNGrUdWA@l8`Hr^p?`{@QZ1KTu zVz7U-#9(5&TE=CQ4YvSDsNxWI7D`2tuN^w z-b&_Bl!U5S2_eLo_6P+S$`-p)kT7SMT5GIL&IT@me<%?^v2YahatR(JZo0-LJJHS{ zt|f=ej=lt$<-jWWZj)H)HahlJ_W#F_{X?=F=9an2|G`NAcYt50(2LIXcKEBz^Fa@) zayN~yl2!P-+ep&e6R9WCM`$p9wAQU5U`XG@>;vWPZf#I+9GL`XF33aqhn#bpdmBZ1 z#erIs<<=L|ejgVpBTG*1q9{vB40*Ia9mDb-!#SxpW}X`7oa7LmW$pv7K#n}S0f+KS z7zo<0k%y}gr?gcXr?hpjb9NELDQz8WdnU{IjrZVbH5yJbaYNRx2$n~#x#_T5*#uM7 zYktUPiy@M(N)h`5&$aZ<%2vV(C}*V?*0JBu&(AKxcdoV8%8G9~$Mp3gUQOGwGL%Ss z`sl|KxM9hz#y$0ps8+3qr16xn z%%I!29bu|<2Q-_np7V7J8oVX!Xue)jVlbTze+EmMj<9^?Wv&^2jqKnwVMPiJWsd2N z?$50?!Z9CQD1AppJGpg59YNpWW(NA(e}HlcmbpvQ$eE2iq07ts(1X15F-?8OHOMvb zcDLG%TvERvs307F6k_2M*#@OUpuRFnL79Zm;)vk}ynlGIT1)y?RZkzE$t#KJ*K4b=}LMUjkyRtRHTa4iMS?^44#kCfJLj&ZRz;vSI(?&c01 zd)x@;S~$w-X-1dnX#y}ZcS98%-Kn7YuN*qvX&xSC^Ow`^=_mtNEJ3MA6-6DV&J|Vx zCJYb>1Cf0-Fr)o&!!Ne`0c{2EIsKS*#WXNKY=JQj-%f*zIa4NzC5W3aMX;1o%cccX z14;gA>w6=V_&&jU8&0#qHuc06>LF$#97*AQ_;Nal$|73DPgsVH9(yK(G=IlUE9)A~ zr4_Z_>&4Aaf^1*5`H7KZip?)(!+t-D!AN=L2mYVn=VA#X{1*s`H>O;)w0{Ra-Ytm2ylV2>!!%N*Y$2)wH z!Fu%B0Ge$Sopym^wrxZ=ZotKQ(i*iBY=M6Ysxw?r#t+$cTquj2ExVqhsbF`9oyvz{ zT4DKGy)v9vx*7Hb;oezyyK*wh(s@=n#s2{##B$(@;DFEsY#{NqZxLy**;4K)K;d=! zDC;adE(0v`4dVwr_jYfTL3Dy?9Sd%2>`nAWuJD;v+XTgg?}1ul zzxpw29}gEll=Q4`_VWGfV?RbeiozQ=7JcJK=|+@)aml#e+7;0{yXmBpjW~?_3k~x0 zZ}J0NTJuKZ8&7`@7R`+Tk4xIe)3WizkKJnFami4kr+%Hr^I#YbYR2=zzK!P`f|l@0 z5&(g9FGe17u@@)>xI52!h_+K7Qo#=N}{I0?5r^|M*~k z>i}mx#BBAmBh)@VFxfj%?#ShC&~}b&9)7md-yfpzLFcCLK}H&+PIndF_u1g ztbUa!fU?~aiW*;%Uc&BHhGg`rlhbhSjCDp%8Pb+DA zIs>y>Sq!quIO~F!rBbGil<(EX-K6>i(#PWCbaq^k8C5zdxY@9D7s;h~1S*SZrI!vz zm6LR~SpS%QZdM!jlIpucvz3qO-1XW$%~&x7e>|I=ius@dgn`RU$CW7}RKZD;d-j8q z-mTM9<@59ug&-r%ArW<9r6cx+q;Y~dq5u0~|DEaSNDH(xaPEw3Zd9@%nvVNHQ?TB! zcRO=V3v zhHfSWD?<$a!tv$~f%+){DNBt9LXAUU+aG{14??)yFTTD$(T-1ca-T`~VJ%4Z zEr}(XZ**|Bxl2?gbQaZZ`x5qG9DC45Xcb5atoo>K>9{D7+7!%CNQK_iaULCtBx&7H z7oj2~I5`PLHJmBN06~S9O-c50C!Vwe0j`CyUbwM=H?Y@OR&wLpNs}{w%Wit%D|wRt zYcLf3TZZB*FcbshIN>c~In934(@X195#+rM?y7V7fz(kWQt9TrD6A6Hrpk3*6JgcD zeMt4j94Uz8wmS=#gi8CJx6rA6r29)e9gG4J8qb0|sgOR^%?Cz_D)14}x-m+qdG$}( z=Qr>(of{qC5=7uig7a&(syLVxOUx=`}5^~!Y@Vh0R_8f`eAP@$z0rV21LR4Y$o;s$({W9OhCx3UrI zLMx;;ncUrOQ=4^gbd$T?<^ej@A;djmful>_g0<6S(>Xrp6}cARWUU<5Z-dyi9~BmE zyA4t&J_M|*T}wr1pB=K#IS~YXg$o)RrnFF;e#?@l!rttSE;Fdfpd*(OUegzM7rhQg zrCLz2$q_t_dEPsqtm*o>j~aP;2XsjllUIGe1S)0c0E9wOo=5?TqP!T6cwhOEc` zdph`p1CHmVg`UDk=c+Qf6qLq|X9_z;bvy+ZF+GJM?foUUAaZ${r{Fnp!@S-?Vj+o` zhHgS!c5~F@)2s*ebRwGbr>Bbr>_K%CaYWo^AC=9`;y*t>VCs8!fe+H=$HA~OI6vRI z=YQ=ejDA`FK-3r_?P<@lUV1u$YPp`=edt>UuVbK%bFj$DpuXJv${LF&7%YdMo!OXp z0=zp$I+jgXvIS5NJXwGhL{)66#3@M+SvQ~xa(K;v<$L~$MLpe{2hD5*)Fu99*jH$m zJtr7V^vaPNM1DE=Tsn4%8q22%2tBFFJbPXOTotZBPIETp#bwI!=7z4lIOAOA(-ZL} zE~lD4&0Wo?4-0&Vy_Zqe#`yjSr+*vgB#_HIPUF-0!i$R)N-LBI(~9NR8Y0tG*C?d? zyby<9UMr+4I zUMrjk5-a<;CYk5Wx1*5nIqNW<>Qy?1cO)G*d1~ao#xPPruw?A4;%K*|=>{(AFiCQZ z(v*&t(?~aOu-0)c`zBh})Q})@xIO^P7KNHshFIjz1!22ll5aXuYE$&J%|@_F0b1#`Mpa=>IXJMAo{ zvjlz$BitjMHgMX<*^JiR1j6CR*$^TRzvEWD>7+O8Bk`a9zM$JQI5nfe`l?nFtK@KI z6V+ry9*kBeQFLJpl@eBC5ygzys=|XBpROrzH?lOGL`cRGKd35V@5gd4jOCI(uoO>t z)VLt1P(V-RmH$1&EoU^0kQlol0U=I`nyK*d2Mxwg^V+0u?VNP}pxgNpsrVONRLDc(Zz{SZ0}8=IXL_{ez34;l|?T84|5 zysI}pK|}tr-uN8WE(oyo#?L7Bx!!mZ6=Mdm8NFr<340p8ZJ+jfnaRqq8@`w?K992b zAj=jyyk{8yZoRRmWxPkwdU`U{65pfqy?WyhT0*epx|mD#^&j#25B0`#zMiMOZ2f3H zovg!7I?py1r*IMk|NL(#^Ss{p6U)RLX}$3R@BUP8ywv6uk%0y2XX}PgX*aJ>>}9?2 zT8qiWDf94_z7g(G=S={NO|uh!gF3J4jej?FkXvFyOrvI9eqd^*e>XdWtLjj1eK>}L zz4Tabyyg2J%===GbnJyO*%W@q!f#Ds_7Zqam?A&2$U9S{J?yWudJw7vwcejuA%|2T&lrh zJbGZ-`rr8WZ*YDve&=~ZPNVCu86=ZIlc%@Lbeh9%iyvSzAX6SP``q-fx^~)x=Kl{r zK7R%sXSektkdtcdCekatOZ#ulC}AsNrthwJkcv$McP!9;fk;oWlt9TXzh)WD#PJ`DR6qz;*py~aHjT#ci7(}25mpRGX6azwRE2V!#{J0*SsV6Eu8 zI?U$M%EuHJO~AI!)@EpDr)rEvi?rYBs1S^=PGdQ5;Tod%T-&{of5^p^m9RH!sYL7; zMf;fRZ@|PTcMPLbfbbNR=|E1W?&Mbb%H8|%N9Bq|J#qrH<_$4i?g$Yh9FIIwsR`ZxVfXMr076#-=AfCNsI2D9$%?&xv~PgC>^hOYWs~oxv+yN`plw0! z3H+`FW55V4Gcpz~=asulbdntg72(^}&y3s|RC&wCqO3b~8pskWHpw8adG)fbv8~vk z7{plXJ+QV%#0=%12~)B+Lgpvw-~McZi-4Kv6~F3%21L+%A5JIWU z!=3IRmcwch5NweiByC*X7}(U(2A_%q4vt~1RXr3&mJ`aA=VRR^B7Zq? z!7+;u=ZSduS(UDZq1H3QMZ6_!L%E|1B<5_Xr)>Wps4zhEPVl|4JP# zfm9Ztyuk6nZ|CFD-f5nSHZ#x za$4QK+EanJp}4*-$#ohqXQ$AD>mz7{zV$p}P?xP$53A&tT_TpYbs^*k;q-TYzRCAh zo*zcd$wLzgv7L?PnY7exiOlsqWRC^z;$)2>>^QG#-MVeBgs|UvK30~pA{yXIm6vSY zsfwHF2n=flz$gFTSu;LFq9UX#V%NGh$wI0#lQ}<@F2yS;uoJ9-+X*-GbZ13ba4C9d zEHnB899SyJYHG%_IzHG^sA|~3f-T3q&1*^nIE}^??nY`?Po^2vIOGzqZ2ZSh-L;<* zeEe<$0t4VNtrw+%+$z(F*R8HLS&&n(Q$#+d4jl$rp3z*E@GZ^`8igze}>z71fHMQY4ZTqETq0oLoFkfLLtE=Gc7E{E4 z7T>AQO1P-X&x=g-7m_J3cG6<_WDUMRdL@xO{iDzB4akxS~rm==^4o+)2{5Q)0?7PM-i$&O)B!QSzYVF8S2dbt{CWHzMZw|$)|1q zLg$jG`&97e;-`r%q^$`#6G#f%J;4bC@j>>j6Se`@>ECBazw0_cGaM0oAR~lK<;XiS zNglo=)JV2Da^<{1 zuApUa3NS%{R8w|=0y!v=EXh{4MON8ml{N>O1rQPlumDg^k-SVsF7gU_i#$snAP
  • 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

    LLYRn!YgU48EjZGU3t}ap$T+E|^?@)1 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­vy$xx zO21*2J=Pp6!*(nPOf>43l(!^rL#b!E(dK?E8#EnEFwmXKOs}O4Ccpm^q^srJe$k&f z83FW~dZ_8wZ*g#H`oGq>fh}|0?x@3mv2tYP>ou`5226Xw+Nmk{DPpok?hqS-`vUn> z{G1uSIXRD-ql3t*`y@@Y>eR@DQ5lpYBTsX z09v*p-ioI(YT{HhM!2>oA?MtY%vi|_hSshm-ZcUfIFoo^MKO(C4l_cZtWz~KA^p}l z5#kD8k=LdWe&RZq)thtq{2e=vbHc$DRwA+jhJr3G&PP17aO(S&1n~U%i(Iq+6K7y` zT(p6Yi*N7ZOPhI_%4QjDs$ApdP6!$#gftrAkR>|8BbDt7nw$Jt>CDoLiv)>>exzct z*~x~{rX*}n7>Kw#e1-2{&z<;BeDi_kmlT>RHzxxp@kxo@t^Qy*xA^Qi{{81)7rr?4 z{oG0X@#5Ey|9Y{AlRGC^@Ylbc&_Z6;Zvy&Pi4smOeDVF<_ZQjd`SZDx804WJ(1`Nx z#YsW^>uFTf_asjI^~7`C1(mxxI%lH&$VzXz`}+5rcTS;r>`A8y(Bjuh0eKj<;l`(2 zzBgMFhZ2v`D2@L_uKGhk` z2(MamTXdK%FZ}fPmA4s%j{jqdqhTqNx_YW^ll-(sPu{O}@j) zxrJA_67FDqVKiR+%lmInR%52^-|Wo|7hWycID~tzLVfXwk%k+7`Nay2Z#YQA?_1tJ z*j^v*%`Kh8St5>gdTE|$4qMpPG&|Fz@ZTljQWChwR(Kn)=KOs6%!tOT9dp9swe5Qx z0ds~ic-`6<5Lztj%gz1X!*6@OpBp$X}LpPL2mCY7U4X}Hb=ys451~nb33dS zJaZq#So)(KPu9FX$wT{^rTRv^sXjaBqWx8#_h^JD3yUS;QYus-M_CYUG*ZrX`i`Eo z;70ALi`vSoUJTXa2R44z;+RVku?w?`ZY}=}lbp`}7{6OHI79HyoWGTT;7<)ZKOwML18t@raJxJ+Ouar z#!B~#7ntv0GdlNe&ptTfhXasG$C@(cKj!z#H{Eb^tR_&VN{z0C6Sn)}q&;rR-odwg zu+?s(V{w{`=&Y;;|2E@7uPFlEK2qQLGo6Bu;jwphJoe9G@dNQZl(^7`@6d5Rd~&SN z%1nEG2MR|}v~7et95X|K>hx&LFBjxGs_NM_Zhj^LeHS#~54Yr!Z^8 zW3WK0P!E8@&KizTpWm+ZdbkF!9kaILTySw!=OJQSD$*Ur_CU5;@g{9R_*Gm z&C%Xu--Y5kWc5Wx+uFi|E3xo>0!|?}#K;}&&?jJvEw|a$w(sz!x2L!V&?bm#5tmYq zb!+r-6UWI4@nu*y31x7K7V8horIrz?mUgka414SnqbZ2(Y)}wGiBC-^Fr~0LKq>Q~ zm)kTu2>Sj*p1LfC6#FV@5GLx(GY*bkZY}B0f*VB zVN;vuzwIjet4Yh6ORVtXgwNn&)eerOz0~eCcoL%p<`P~F`#S{)zDzc3Rk@5;rF^)z zH{NSixWad(2IJ9Ig{z)`EOoZ~yR9m>`n#pn4pOu#SdORE$&jj|)*NT4qa;zgBTM*} zI{ajLb9chM;eM7%2iq0&vebEp&&mM%R;5Sw*1au5PKoEz0gkM<`KR@BD=APnx5oYb zvu9dRui9HRXjc9DtFEeFf7Pst^u)KVdaHOfRq6EC)3r{2JymTAKL9&>rdjQvqfZ`C zY;~$?D_i|-tU$H;R&6huhCPKUtG96_^eJRnv0w`)(A9<1$@^5+@3$nv!#X+|f>CTTxdlk>AmbtZ|4_ z%~X~`nbBGj=)$#dT@A6>Ynl_-7eU9?0lDvc5V`=Xte8?qV|R32ZQa3jGz!<&)ykb( zM=Nt>U2TdR>u6QnS69R0w>lb{zv^mLM!b$z>7!T}Q-w<5|8MuzCq#jj<^TI-kbYOt zcb`5@-fNCoA$myj(}(A3s%C!o?-6SWRfCRDu%0DV36gRSLQU$eOrL!wkrcPfh4rpn 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̶G`Ag$AFw9-~`o?U5ht0Y76$gi1 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ⅈR={b@sH3E?!Wdh9zO~{}ta3AwV3o7r-sA{s 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�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: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%0D!2K;Af{hp~P~(v{Wxcooo`q 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�q@L91Ewr@diT9e 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�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

    vtH_*; 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 z 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�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

    A4K)4Kq%Rsmcgv&s<90->KQRF~a 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℘0u?!cK{t7{(Gq2w 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

    motd?%}mi^ZL^=V0DxkZVt|++~)mf1!0Hu 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

    jcxaYH;P6iMHSYaVmNnz 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

    ktDr32!0pNZtLlii5 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

    yC)ZJ4wN~xQZPKdD7$wf5#A%Tm|fieqhszrqo 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%0AizqK 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�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⁡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 z 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

    7!G(c{-i#?N8g&7+9&z&1(r4Q;e8D_>?e|3 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¬r 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:5px;min-height:20px}.vjs-caption-settings .vjs-tracksetting>div:last-child{margin-bottom:0;padding-bottom:0;min-height:0}.vjs-caption-settings label>input{margin-right:10px}.vjs-caption-settings input[type=button]{width:40px;height:40px}.vjs5-hola-skin .vjs-control-bar *{color:#fff}.vjs5-hola-skin .vjs-big-play-button,.vjs5-hola-skin:hover .vjs-big-play-button{font-size:4em;border-radius:50%;border:0 solid transparent;height:3em;width:3em;line-height:3em;left:50%;top:50%;margin-left:-1.5em;margin-top:-1.5em;background-color:#2D2D2D;background-color:rgba(45,45,45,.6)}.vjs5-hola-skin .vjs-big-play-button:before,.vjs5-hola-skin:hover .vjs-big-play-button:before{content:''}.vjs5-hola-skin .vjs-big-play-button>svg,.vjs5-hola-skin:hover .vjs-big-play-button>svg{fill:#fff;stroke:#fff;opacity:.8}.vjs5-hola-skin .vjs-play-control{width:5em;margin:0 .5em;cursor:pointer;order:0}.vjs5-hola-skin .vjs-play-control>svg{fill:#fff;stroke:#fff;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-play-control:hover>svg{opacity:1}.vjs5-hola-skin .vjs-play-control.vjs-playing:before,.vjs5-hola-skin .vjs-play-control.vjs-paused:before,.vjs5-hola-skin .vjs-play-control:before{content:''}.vjs5-hola-skin.vjs-playing .vjs-big-play-button.vjs-hidden,.vjs5-hola-skin.vjs-paused .vjs-big-play-button.vjs-hidden{display:block!important;pointer-events:none}.vjs5-hola-skin.vjs-playing .vjs-big-play-button{opacity:0;transition:opacity 400ms ease,background-color 0;transition-delay:100ms,0}.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button{opacity:1;transition:opacity 0 linear,background-color 400ms ease;transition-delay:0ms,100ms;background-color:#2D2D2D;background-color:rgba(45,45,45,0)}.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button>svg,.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button:before{transition:opacity 400ms ease;transition-delay:100ms;opacity:0}.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button{background-color:#2D2D2D;background-color:rgba(45,45,45,.6)}.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button>svg,.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button:before{opacity:.8}.vjs5-hola-skin .vjs-progress-control{position:absolute;left:0;right:0;width:auto;top:-20px;height:30px;background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.2) 67%,rgba(0,0,0,0) 67%)}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder{margin:0 10px}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar{background:#00b7f1}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:before{content:none}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:after{display:none}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-mouse-display:after{pointer-events:none}.vjs5-hola-skin .vjs-progress-control:hover>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:before{content:'';display:block;width:1em;height:1em;box-sizing:border-box;border-radius:50%;border-style:solid;border-width:3px;border-color:#fff;background:#00b7f1}.vjs5-hola-skin .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{background-color:#00b7f1}.vjs5-hola-skin .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level:before{content:'';display:block;width:.6em;height:2em;background-color:#fff;right:-.3em;top:-.7em}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal{order:1}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:before{content:'';background-size:55%;background-repeat:no-repeat;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:hover:before{opacity:1}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-3:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4Ig0KCSBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTEuOCwxNC4zSDQuM2MtMC4zLDAtMC41LDAuMi0wLjUsMC41djE0LjljMCwwLjMsMC4yLDAuNSwwLjUsMC41aDcuNWMwLjEsMCwwLjMsMC4xLDAuNCwwLjJsMTAuNiwxMS4xDQoJCQljMC4zLDAuMywwLjksMC4xLDAuOS0wLjRWMy45YzAtMC41LTAuNi0wLjctMC45LTAuNEwxMi4yLDE0LjFDMTIuMSwxNC4yLDExLjksMTQuMywxMS44LDE0LjN6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMzQuOCwzNS4yYy0wLjUsMC0xLTAuMi0xLjQtMC42Yy0wLjgtMC44LTAuOC0yLDAtMi44YzUuMS01LjEsNS4xLTEzLjUsMC0xOC43Yy0wLjgtMC44LTAuOC0yLDAtMi44DQoJCQljMC44LTAuOCwyLTAuOCwyLjgsMGM2LjcsNi43LDYuNywxNy42LDAsMjQuM0MzNS44LDM1LDM1LjMsMzUuMiwzNC44LDM1LjJ6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjkuNiwyOGMtMC41LDAtMS0wLjItMS40LTAuNmMtMC44LTAuOC0wLjgtMiwwLTIuOGMwLjYtMC42LDAuOS0xLjQsMC45LTIuMmMwLTAuOC0wLjMtMS42LTAuOS0yLjINCgkJCWMtMC44LTAuOC0wLjgtMiwwLTIuOGMwLjgtMC44LDItMC44LDIuOCwwYzEuMywxLjMsMi4xLDMuMSwyLjEsNWMwLDEuOS0wLjcsMy43LTIuMSw1QzMwLjYsMjcuOCwzMC4xLDI4LDI5LjYsMjh6Ii8+DQoJPC9nPg0KPC9zdmc+)}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-2:before,.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-1:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4IiBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTYsMTQuM0g4LjFjLTAuMSwwLTAuMiwwLjEtMC4yLDAuMlYzMGMwLDAuMSwwLjEsMC4yLDAuMiwwLjJIMTZjMC4xLDAsMC4xLDAsMC4yLDAuMUwyNy4zLDQyDQoJCQljMC4xLDAuMSwwLjQsMCwwLjQtMC4yVjMuMmMwLTAuMi0wLjItMC4zLTAuNC0wLjJMMTYuMiwxNC4yQzE2LjEsMTQuMiwxNi4xLDE0LjMsMTYsMTQuM3oiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zMy43LDI4Yy0wLjUsMC0xLTAuMi0xLjQtMC42Yy0wLjgtMC44LTAuOC0yLDAtMi44YzAuNi0wLjYsMC45LTEuNCwwLjktMi4yYzAtMC44LTAuMy0xLjYtMC45LTIuMg0KCQkJYy0wLjgtMC44LTAuOC0yLDAtMi44YzAuOC0wLjgsMi0wLjgsMi44LDBjMS4zLDEuMywyLjEsMy4xLDIuMSw1YzAsMS45LTAuNywzLjctMi4xLDVDMzQuNywyNy44LDM0LjIsMjgsMzMuNywyOHoiLz4NCgk8L2c+DQo8L3N2Zz4=);background-position:40% center}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-0:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDVweCIgaGVpZ2h0PSI0NXB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ1IDQ1IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCg0KCTxnPg0KDQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xMS43LDE0LjNIMy44Yy0wLjEsMC0wLjIsMC4xLTAuMiwwLjJWMzBjMCwwLjEsMC4xLDAuMiwwLjIsMC4yaDcuOWMwLjEsMCwwLjEsMCwwLjIsMC4xTDIzLjEsNDIgYzAuMSwwLjEsMC40LDAsMC40LTAuMlYzLjJjMC0wLjItMC4yLTAuMy0wLjQtMC4yTDExLjksMTQuMkMxMS44LDE0LjIsMTEuOCwxNC4zLDExLjcsMTQuM3oiLz4NCg0KCTwvZz4NCg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik00MSwyNi4zbC0zLjktMy44bDMuOC0zLjhjMC41LTAuNSwwLjUtMS4zLDAtMS44Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBsLTMuOCwzLjhsLTMuOC0zLjggYy0wLjUtMC41LTEuMy0wLjUtMS44LDBjLTAuNSwwLjUtMC41LDEuMywwLDEuOGwzLjgsMy44bC0zLjgsMy44Yy0wLjUsMC41LTAuNSwxLjMsMCwxLjhjMC4yLDAuMiwwLjYsMC40LDAuOSwwLjQNCg0KCQljMC40LDAsMC43LTAuMSwwLjktMC40bDMuOC0zLjhsMy44LDMuOGMwLjIsMC4yLDAuNiwwLjQsMC45LDAuNGMwLjQsMCwwLjctMC4xLDAuOS0wLjRjMC4zLTAuMiwwLjQtMC42LDAuNC0wLjkNCg0KCQlDNDEuNCwyNi45LDQxLjMsMjYuNiw0MSwyNi4zeiIvPg0KDQo8L3N2Zz4=)}.vjs5-hola-skin .vjs-settings-button{order:6}.vjs5-hola-skin .vjs-settings-button:before{content:'';background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4Ig0KCSBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik00Mi44LDI0Ljd2LTQuNWgtNS4yYy0wLjQtMi41LTEuNC00LjgtMi44LTYuOGwzLjctMy43bC0zLjItMy4ybC0zLjcsMy43Yy0yLTEuNS00LjMtMi40LTYuOC0yLjhWMi4yaC00LjUNCgkJdjUuMmMtMi41LDAuNC00LjgsMS40LTYuOCwyLjhMOS44LDYuNkw2LjYsOS44bDMuNywzLjdjLTEuNSwyLTIuNCw0LjMtMi44LDYuOEgyLjJ2NC41aDUuMmMwLjQsMi41LDEuNCw0LjgsMi44LDYuOGwtMy43LDMuNw0KCQlsMy4yLDMuMmwzLjctMy43YzIsMS41LDQuMywyLjQsNi44LDIuOHY1LjJoNC41di01LjJjMi41LTAuNCw0LjgtMS40LDYuOC0yLjhsMy43LDMuN2wzLjItMy4ybC0zLjctMy43YzEuNS0yLDIuNC00LjMsMi44LTYuOA0KCQlINDIuOHogTTMyLDIyLjVjMCw1LjItNC4yLDkuNS05LjUsOS41UzEzLDI3LjcsMTMsMjIuNXM0LjItOS41LDkuNS05LjVTMzIsMTcuMywzMiwyMi41eiIvPg0KPC9zdmc+) no-repeat;background-size:50%;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-settings-button:hover:before{opacity:1}.vjs5-hola-skin .vjs-fullscreen-control{order:7}.vjs5-hola-skin .vjs-fullscreen-control:before{content:'';background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1NnB4Ig0KCSBoZWlnaHQ9IjQ0LjhweCIgdmlld0JveD0iMCAwIDU2IDQ0LjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDU2IDQ0LjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KDQoJPGc+DQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zOCwzM0gxOGMtMC4zLDAtMC42LTAuMy0wLjYtMC42di0yMGMwLTAuMywwLjMtMC42LDAuNi0wLjZoMjBjMC4zLDAsMC42LDAuMywwLjYsMC42djIwDQoJCQlDMzguNiwzMi43LDM4LjMsMzMsMzgsMzN6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjYuOCwxMy41IDIuNiwxMy41IDIuNiwzLjQgMTIuOCwzLjQgMTIuOCw3LjYgNi44LDcuNiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1My40LDEzLjUgNDkuMiwxMy41IDQ5LjIsNy42IDQzLjIsNy42IDQzLjIsMy40IDUzLjQsMy40Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjUzLjQsNDEuNCA0My4yLDQxLjQgNDMuMiwzNy4yIDQ5LjIsMzcuMiA0OS4yLDMxLjMgNTMuNCwzMS4zIi8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjEyLjgsNDEuNCAyLjYsNDEuNCAyLjYsMzEuMyA2LjgsMzEuMyA2LjgsMzcuMiAxMi44LDM3LjIiLz4NCgk8L2c+DQo8L3N2Zz4=);background-repeat:no-repeat;background-size:65%;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-fullscreen-control:hover:before{opacity:1;background-size:70%}.vjs5-hola-skin.vjs-fullscreen .vjs-fullscreen-control:before{content:'';background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1NnB4Ig0KCSBoZWlnaHQ9IjQ0LjhweCIgdmlld0JveD0iMCAwIDU2IDQ0LjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDU2IDQ0LjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMzgsMzNIMThjLTAuMywwLTAuNi0wLjMtMC42LTAuNlYxMi40YzAtMC4zLDAuMy0wLjYsMC42LTAuNkgzOGMwLjMsMCwwLjYsMC4zLDAuNiwwLjZ2MjAuMQ0KCQkJQzM4LjYsMzIuOCwzOC40LDMzLDM4LDMzeiIvPg0KCTwvZz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjguNSwzLjMgMTIuNywzLjMgMTIuNywxMy41IDIuNSwxMy41IDIuNSw5LjIgOC41LDkuMiAJIi8+DQoJPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI0My4zLDMuMyA0Ny41LDMuMyA0Ny41LDkuMiA1My41LDkuMiA1My41LDEzLjUgNDMuMywxMy41IAkiLz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjQzLjMsMzEuMyA1My41LDMxLjMgNTMuNSwzNS42IDQ3LjUsMzUuNiA0Ny41LDQxLjUgNDMuMyw0MS41IAkiLz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjIuNSwzMS4zIDEyLjcsMzEuMyAxMi43LDQxLjUgOC41LDQxLjUgOC41LDM1LjYgMi41LDM1LjYgCSIvPg0KPC9zdmc+)}.vjs5-hola-skin.vjs-fullscreen .vjs-fullscreen-control:hover:before{background-size:60%}.vjs5-hola-skin .vjs-time-control.vjs-duration,.vjs5-hola-skin .vjs-time-control.vjs-current-time,.vjs5-hola-skin .vjs-time-control.vjs-time-divider{display:block}.vjs5-hola-skin .vjs-time-control.vjs-current-time{order:2}.vjs5-hola-skin .vjs-time-control.vjs-time-divider{order:3}.vjs5-hola-skin .vjs-time-control.vjs-duration{order:4}.vjs5-hola-skin .vjs-time-control.vjs-remaining-time{display:none}.vjs5-hola-skin .vjs-control-bar{background:linear-gradient(to bottom,rgba(0,0,0,.2) 0,rgba(0,0,0,.65) 100%)}.vjs5-hola-skin .vjs-control-bar>.vjs-spacer{display:block;flex-grow:1;order:5}.vjs5-hola-skin.vjs-fullscreen{overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu{display:block;width:13em;left:-6em;z-index:2;visibility:hidden;transition:visibility 300ms step-end}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul{bottom:3em}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li{text-align:left;padding-left:.5em}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li.vjs-menu-label{pointer-events:none}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li.vjs-menu-indent{padding-left:1.5em}.vjs5-hola-skin .vjs-menu-button-popup:hover .vjs-menu{visibility:visible;transition:visibility 1ms}.vjs5-hola-skin .vjs-info-overlay{position:absolute;top:1em;left:1em;z-index:3;display:inline-block;margin-bottom:3em;padding-bottom:10px;border-left:2em solid transparent;border-right:2em solid transparent;border-top:1.55em solid #000;border-top-color:rgba(7,40,50,.5);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background-color:#2D2D2D;background-color:rgba(45,45,45,.7);-webkit-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);-moz-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);box-shadow:-.2em -.2em .3em rgba(255,255,255,.2)}.vjs5-hola-skin .vjs-info-overlay.vjs-notify-overlay{bottom:50%;top:auto;margin-bottom:-3em;left:50%;margin-left:-8.5em;opacity:1}.vjs5-hola-skin .vjs-info-overlay.vjs-notify-overlay.vjs-notify-flash{transition:opacity 500ms ease;transition-delay:2500ms;opacity:0}.vjs5-hola-skin .vjs-info-overlay-title{margin-bottom:10px;font-size:1.5em}.vjs5-hola-skin .vjs-info-overlay-x{position:absolute;top:-1em;right:0;transition:color 200ms ease;cursor:pointer}.vjs5-hola-skin .vjs-info-overlay-x:hover{color:#fff}.vjs5-hola-skin .vjs-notify-overlay-title{margin-bottom:10px;font-size:1.5em}.vjs5-hola-skin .vjs-notify-overlay-content{text-align:center}.vjs5-hola-skin .vjs-info-overlay ul{list-style:none;position:relative;margin:0;padding:0}.vjs5-hola-skin .vjs-info-overlay ul li{padding:0;margin:0;height:16px;line-height:16px} \ No newline at end of file +.video-js .vjs-big-play-button:before,.video-js .vjs-control:before{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}@font-face{font-family:VideoJS;src:url(font/VideoJS.eot?) format('eot')}@font-face{font-family:VideoJS;src:url(data:application/font-woff;charset=utf-8;base64,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) format('woff'),url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype');font-weight:400;font-style:normal}.vjs-icon-play,.video-js .vjs-big-play-button,.video-js .vjs-play-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play:before,.video-js .vjs-big-play-button:before,.video-js .vjs-play-control:before{content:'\f101'}.vjs-icon-play-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-play-circle:before{content:'\f102'}.vjs-icon-pause,.video-js .vjs-play-control.vjs-playing{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-pause:before,.video-js .vjs-play-control.vjs-playing:before{content:'\f103'}.vjs-icon-volume-mute,.video-js .vjs-mute-control.vjs-vol-0,.video-js .vjs-volume-menu-button.vjs-vol-0{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mute:before,.video-js .vjs-mute-control.vjs-vol-0:before,.video-js .vjs-volume-menu-button.vjs-vol-0:before{content:'\f104'}.vjs-icon-volume-low,.video-js .vjs-mute-control.vjs-vol-1,.video-js .vjs-volume-menu-button.vjs-vol-1{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-low:before,.video-js .vjs-mute-control.vjs-vol-1:before,.video-js .vjs-volume-menu-button.vjs-vol-1:before{content:'\f105'}.vjs-icon-volume-mid,.video-js .vjs-mute-control.vjs-vol-2,.video-js .vjs-volume-menu-button.vjs-vol-2{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-mid:before,.video-js .vjs-mute-control.vjs-vol-2:before,.video-js .vjs-volume-menu-button.vjs-vol-2:before{content:'\f106'}.vjs-icon-volume-high,.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-volume-high:before,.video-js .vjs-mute-control:before,.video-js .vjs-volume-menu-button:before{content:'\f107'}.vjs-icon-fullscreen-enter,.video-js .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-enter:before,.video-js .vjs-fullscreen-control:before{content:'\f108'}.vjs-icon-fullscreen-exit,.video-js.vjs-fullscreen .vjs-fullscreen-control{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-fullscreen-exit:before,.video-js.vjs-fullscreen .vjs-fullscreen-control:before{content:'\f109'}.vjs-icon-square{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-square:before{content:'\f10a'}.vjs-icon-spinner{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-spinner:before{content:'\f10b'}.vjs-icon-subtitles,.video-js .vjs-subtitles-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-subtitles:before,.video-js .vjs-subtitles-button:before{content:'\f10c'}.vjs-icon-captions,.video-js .vjs-captions-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-captions:before,.video-js .vjs-captions-button:before{content:'\f10d'}.vjs-icon-chapters,.video-js .vjs-chapters-button{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-chapters:before,.video-js .vjs-chapters-button:before{content:'\f10e'}.vjs-icon-share{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-share:before{content:'\f10f'}.vjs-icon-cog{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-cog:before{content:'\f110'}.vjs-icon-circle,.video-js .vjs-mouse-display,.video-js .vjs-play-progress,.video-js .vjs-volume-level{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle:before,.video-js .vjs-mouse-display:before,.video-js .vjs-play-progress:before,.video-js .vjs-volume-level:before{content:'\f111'}.vjs-icon-circle-outline{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-outline:before{content:'\f112'}.vjs-icon-circle-inner-circle{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-circle-inner-circle:before{content:'\f113'}.vjs-icon-audio-description{font-family:VideoJS;font-weight:400;font-style:normal}.vjs-icon-audio-description:before{content:'\f114'}.video-js{display:block;vertical-align:top;box-sizing:border-box;color:#fff;background-color:#000;position:relative;padding:0;font-size:10px;line-height:1;font-weight:400;font-style:normal;font-family:Arial,Helvetica,sans-serif;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.video-js:-moz-full-screen{position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.video-js *,.video-js :before,.video-js :after{box-sizing:inherit}.video-js ul{font-family:inherit;font-size:inherit;line-height:inherit;list-style-position:outside;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3{width:100%;max-width:100%;height:0}.video-js.vjs-16-9{padding-top:56.25%}.video-js.vjs-4-3{padding-top:75%}.video-js.vjs-fill{width:100%;height:100%}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.vjs-full-window .video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.video-js.vjs-fullscreen{width:100%!important;height:100%!important;padding-top:0!important}.video-js.vjs-fullscreen.vjs-user-inactive{cursor:none}.vjs-hidden{display:none!important}.vjs-lock-showing{display:block!important;opacity:1;visibility:visible}.vjs-no-js{padding:20px;color:#fff;background-color:#000;font-size:18px;font-family:Arial,Helvetica,sans-serif;text-align:center;width:300px;height:150px;margin:0 auto}.vjs-no-js a,.vjs-no-js a:visited{color:#66A8CC}.video-js .vjs-big-play-button{font-size:3em;line-height:1.5em;height:1.5em;width:3em;display:block;z-index:2;position:absolute;top:10px;left:10px;padding:0;cursor:pointer;opacity:1;border:.06666em solid #fff;background-color:#2B333F;background-color:rgba(43,51,63,.7);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-big-play-centered .vjs-big-play-button{top:50%;left:50%;margin-top:-.75em;margin-left:-1.5em}.video-js:hover .vjs-big-play-button,.video-js .vjs-big-play-button:focus{outline:0;border-color:#fff;background-color:#73859f;background-color:rgba(115,133,159,.5);-webkit-transition:all 0s;-moz-transition:all 0s;-o-transition:all 0s;transition:all 0s}.vjs-controls-disabled .vjs-big-play-button,.vjs-has-started .vjs-big-play-button,.vjs-using-native-controls .vjs-big-play-button,.vjs-error .vjs-big-play-button{display:none}.video-js button{background:0 0;border:0;color:inherit;display:inline-block;overflow:visible;font-size:inherit;line-height:inherit;text-transform:none;text-decoration:none;transition:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.vjs-menu-button{cursor:pointer}.vjs-menu .vjs-menu-content{display:block;padding:0;margin:0;overflow:auto}.vjs-scrubbing .vjs-menu-button:hover .vjs-menu{display:none}.vjs-menu li{list-style:none;margin:0;padding:.2em 0;line-height:1.4em;font-size:1.2em;text-align:center;text-transform:lowercase}.vjs-menu li:focus,.vjs-menu li:hover{outline:0;background-color:#73859f;background-color:rgba(115,133,159,.5)}.vjs-menu li.vjs-selected,.vjs-menu li.vjs-selected:focus,.vjs-menu li.vjs-selected:hover{background-color:#fff;color:#2B333F}.vjs-menu li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em;font-weight:700;cursor:default}.vjs-menu-button-popup .vjs-menu{display:none;position:absolute;bottom:0;width:10em;left:-3em;height:0;margin-bottom:1.5em;border-top-color:rgba(43,51,63,.7)}.vjs-menu-button-popup .vjs-menu ul{background-color:#2B333F;background-color:rgba(43,51,63,.7);position:absolute;width:100%;bottom:1.5em;max-height:15em}.vjs-menu-button-popup:hover .vjs-menu,.vjs-menu-button-popup .vjs-menu.vjs-lock-showing{display:block}.video-js .vjs-menu-button-inline{-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s;overflow:hidden}.video-js .vjs-menu-button-inline:before{width:2.222222222em}.video-js .vjs-menu-button-inline:hover,.video-js .vjs-menu-button-inline:focus,.video-js .vjs-menu-button-inline.vjs-slider-active,.video-js.vjs-no-flex .vjs-menu-button-inline{width:12em}.video-js .vjs-menu-button-inline.vjs-slider-active{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.vjs-menu-button-inline .vjs-menu{opacity:0;height:100%;width:auto;position:absolute;left:2.2222222em;top:0;padding:0;margin:0;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;transition:all .4s}.vjs-menu-button-inline:hover .vjs-menu,.vjs-menu-button-inline:focus .vjs-menu,.vjs-menu-button-inline.vjs-slider-active .vjs-menu{display:block;opacity:1}.vjs-no-flex .vjs-menu-button-inline .vjs-menu{display:block;opacity:1;position:relative;width:auto}.vjs-no-flex .vjs-menu-button-inline:hover .vjs-menu,.vjs-no-flex .vjs-menu-button-inline:focus .vjs-menu,.vjs-no-flex .vjs-menu-button-inline.vjs-slider-active .vjs-menu{width:auto}.vjs-menu-button-inline .vjs-menu-content{width:auto;height:100%;margin:0;overflow:hidden}.video-js .vjs-control-bar{display:none;width:100%;position:absolute;bottom:0;left:0;right:0;height:3em;background-color:#2B333F;background-color:rgba(43,51,63,.7)}.vjs-has-started .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1;-webkit-transition:visibility .1s,opacity .1s;-moz-transition:visibility .1s,opacity .1s;-o-transition:visibility .1s,opacity .1s;transition:visibility .1s,opacity .1s}.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.vjs-controls-disabled .vjs-control-bar,.vjs-using-native-controls .vjs-control-bar,.vjs-error .vjs-control-bar{display:none!important}.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar{opacity:1;visibility:visible}@media \0screen{.vjs-user-inactive.vjs-playing .vjs-control-bar :before{content:""}}.vjs-has-started.vjs-no-flex .vjs-control-bar{display:table}.video-js .vjs-control{outline:0;position:relative;text-align:center;margin:0;padding:0;height:100%;width:4em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-control:before{font-size:1.8em;line-height:1.67}.video-js .vjs-control:focus:before,.video-js .vjs-control:hover:before,.video-js .vjs-control:focus{text-shadow:0 0 1em #fff}.video-js .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-no-flex .vjs-control{display:table-cell;vertical-align:middle}.video-js .vjs-custom-control-spacer{display:none}.video-js .vjs-progress-control{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.vjs-live .vjs-progress-control{display:none}.video-js .vjs-progress-holder{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s;height:.3em}.video-js .vjs-progress-control:hover .vjs-progress-holder{font-size:1.6666666667em}.video-js .vjs-progress-control:hover .vjs-mouse-display:after,.video-js .vjs-progress-control:hover .vjs-play-progress:after{display:block;font-size:.6em}.video-js .vjs-progress-holder .vjs-play-progress,.video-js .vjs-progress-holder .vjs-load-progress,.video-js .vjs-progress-holder .vjs-load-progress div{position:absolute;display:block;height:.3em;margin:0;padding:0;width:0;left:0;top:0}.video-js .vjs-mouse-display:before{display:none}.video-js .vjs-play-progress{background-color:#fff}.video-js .vjs-play-progress:before{position:absolute;top:-.3333333333em;right:-.5em;font-size:.9em}.video-js .vjs-mouse-display:after,.video-js .vjs-play-progress:after{display:none;position:absolute;top:-2.4em;right:-1.5em;font-size:.9em;color:#000;content:attr(data-current-time);padding:.2em .5em;background-color:#fff;background-color:rgba(255,255,255,.8);-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em}.video-js .vjs-play-progress:before,.video-js .vjs-play-progress:after{z-index:1}.video-js .vjs-load-progress{background:ligthen(#73859f,25%);background:rgba(115,133,159,.5)}.video-js .vjs-load-progress div{background:ligthen(#73859f,50%);background:rgba(115,133,159,.75)}.video-js.vjs-no-flex .vjs-progress-control{width:auto}.video-js .vjs-progress-control .vjs-mouse-display{display:none;position:absolute;width:1px;height:100%;background-color:#000;z-index:1}.vjs-no-flex .vjs-progress-control .vjs-mouse-display{z-index:0}.video-js .vjs-progress-control:hover .vjs-mouse-display{display:block}.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display,.video-js.vjs-user-inactive .vjs-progress-control .vjs-mouse-display:after{visibility:hidden;opacity:0;-webkit-transition:visibility 1s,opacity 1s;-moz-transition:visibility 1s,opacity 1s;-o-transition:visibility 1s,opacity 1s;transition:visibility 1s,opacity 1s}.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display,.video-js.vjs-user-inactive.vjs-no-flex .vjs-progress-control .vjs-mouse-display:after{display:none}.video-js .vjs-progress-control .vjs-mouse-display:after{color:#fff;background-color:#000;background-color:rgba(0,0,0,.8)}.video-js .vjs-slider{outline:0;position:relative;cursor:pointer;padding:0;margin:0 .45em;background-color:#73859f;background-color:rgba(115,133,159,.5)}.video-js .vjs-slider:focus{text-shadow:0 0 1em #fff;-webkit-box-shadow:0 0 1em #fff;-moz-box-shadow:0 0 1em #fff;box-shadow:0 0 1em #fff}.video-js .vjs-mute-control,.video-js .vjs-volume-menu-button{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.video-js .vjs-volume-control{width:5em;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.video-js .vjs-volume-bar{margin:1.35em}.vjs-volume-bar.vjs-slider-horizontal{width:5em;height:.3em}.vjs-volume-bar.vjs-slider-vertical{width:.3em;height:5em}.video-js .vjs-volume-level{position:absolute;bottom:0;left:0;background-color:#fff}.video-js .vjs-volume-level:before{position:absolute;font-size:.9em}.vjs-slider-vertical .vjs-volume-level{width:.3em}.vjs-slider-vertical .vjs-volume-level:before{top:-.5em;left:-.3em}.vjs-slider-horizontal .vjs-volume-level{height:.3em}.vjs-slider-horizontal .vjs-volume-level:before{top:-.3em;right:-.5em}.vjs-volume-bar.vjs-slider-vertical .vjs-volume-level{height:100%}.vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{width:100%}.vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu{display:block;width:0;height:0;border-top-color:transparent}.vjs-menu-button-popup.vjs-volume-menu-button-vertical .vjs-menu{left:.5em}.vjs-menu-button-popup.vjs-volume-menu-button-horizontal .vjs-menu{left:-2em}.vjs-menu-button-popup.vjs-volume-menu-button .vjs-menu-content{height:0;width:0;overflow-x:hidden;overflow-y:hidden}.vjs-volume-menu-button-vertical:hover .vjs-menu-content,.vjs-volume-menu-button-vertical .vjs-lock-showing .vjs-menu-content{height:8em;width:2.9em}.vjs-volume-menu-button-horizontal:hover .vjs-menu-content,.vjs-volume-menu-button-horizontal .vjs-lock-showing .vjs-menu-content{height:2.9em;width:8em}.vjs-volume-menu-button.vjs-menu-button-inline .vjs-menu-content{background-color:transparent!important}.vjs-poster{display:inline-block;vertical-align:middle;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;cursor:pointer;margin:0;padding:0;position:absolute;top:0;right:0;bottom:0;left:0;height:100%}.vjs-poster img{display:block;vertical-align:middle;margin:0 auto;max-height:100%;padding:0;width:100%}.vjs-has-started .vjs-poster{display:none}.vjs-audio.vjs-has-started .vjs-poster{display:block}.vjs-controls-disabled .vjs-poster{display:none}.vjs-using-native-controls .vjs-poster{display:none}.video-js .vjs-live-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto;font-size:1em;line-height:3em}.vjs-no-flex .vjs-live-control{display:table-cell;width:auto;text-align:left}.video-js .vjs-time-control{-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none;font-size:1em;line-height:3em}.vjs-live .vjs-time-control{display:none}.video-js .vjs-current-time,.vjs-no-flex .vjs-current-time{display:none}.video-js .vjs-duration,.vjs-no-flex .vjs-duration{display:none}.vjs-time-divider{display:none;line-height:3em}.vjs-live .vjs-time-divider{display:none}.video-js .vjs-play-control{cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-text-track-display{position:absolute;bottom:3em;left:0;right:0;top:0;pointer-events:none}.video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display{bottom:1em}.video-js .vjs-text-track{font-size:1.4em;text-align:center;margin-bottom:.1em;background-color:#000;background-color:rgba(0,0,0,.5)}.vjs-subtitles{color:#fff}.vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.video-js .vjs-fullscreen-control{width:3.8em;cursor:pointer;-webkit-box-flex:none;-moz-box-flex:none;-webkit-flex:none;-ms-flex:none;flex:none}.vjs-playback-rate .vjs-playback-rate-value{font-size:1.5em;line-height:2;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.vjs-playback-rate .vjs-menu{width:4em;left:0}.vjs-error-display{display:none}.vjs-error .vjs-error-display{display:block;position:absolute;left:0;top:0;width:100%;height:100%}.vjs-error .vjs-error-display:before{content:'X';font-family:Arial,Helvetica,sans-serif;font-size:4em;color:#fff;line-height:1;text-shadow:.05em .05em .1em #000;text-align:center;vertical-align:middle;position:absolute;left:0;top:50%;margin-top:-.5em;width:100%}.vjs-error-display div{position:absolute;bottom:1em;right:0;left:0;font-size:1.4em;text-align:center;padding:3px;background-color:#000;background-color:rgba(0,0,0,.5)}.vjs-error-display a,.vjs-error-display a:visited{color:#66A8CC}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;opacity:.85;text-align:left;border:6px solid rgba(43,51,63,.7);box-sizing:border-box;background-clip:padding-box;width:50px;height:50px;border-radius:25px}.vjs-seeking .vjs-loading-spinner,.vjs-waiting .vjs-loading-spinner{display:block}.vjs-loading-spinner:before,.vjs-loading-spinner:after{content:"";position:absolute;margin:-6px;box-sizing:inherit;width:inherit;height:inherit;border-radius:inherit;opacity:1;border:inherit;border-color:transparent;border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:before,.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:after{-webkit-animation:vjs-spinner-spin 1.1s cubic-bezier(0.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite;animation:vjs-spinner-spin 1.1s cubic-bezier(0.6,.2,0,.8) infinite,vjs-spinner-fade 1.1s linear infinite}.vjs-seeking .vjs-loading-spinner:before,.vjs-waiting .vjs-loading-spinner:before{border-top-color:#fff}.vjs-seeking .vjs-loading-spinner:after,.vjs-waiting .vjs-loading-spinner:after{border-top-color:#fff;-webkit-animation-delay:.44s;animation-delay:.44s}@keyframes vjs-spinner-spin{100%{transform:rotate(360deg)}}@-webkit-keyframes vjs-spinner-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}@-webkit-keyframes vjs-spinner-fade{0%{border-top-color:#73859f}20%{border-top-color:#73859f}35%{border-top-color:#fff}60%{border-top-color:#73859f}100%{border-top-color:#73859f}}.vjs-chapters-button .vjs-menu{left:-10em;width:0}.vjs-chapters-button .vjs-menu ul{width:24em}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-custom-control-spacer{-webkit-box-flex:auto;-moz-box-flex:auto;-webkit-flex:auto;-ms-flex:auto;flex:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen).vjs-no-flex .vjs-custom-control-spacer{width:auto}.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-progress-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-tiny:not(.vjs-fullscreen) .vjs-volume-menu-button{display:none}.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-subtitles-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-volume-button,.video-js.vjs-layout-x-small:not(.vjs-fullscreen) .vjs-fullscreen-control{display:none}.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-current-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-captions-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-time-divider,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-duration,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-remaining-time,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-playback-rate,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-mute-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-volume-control,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-chapters-button,.video-js.vjs-layout-small:not(.vjs-fullscreen) .vjs-subtitles-button{display:none}.vjs-caption-settings{position:relative;top:1em;background-color:#2B333F;background-color:rgba(43,51,63,.75);color:#fff;margin:0 auto;padding:.5em;height:15em;font-size:12px;width:40em}.vjs-caption-settings .vjs-tracksettings{top:0;bottom:2em;left:0;right:0;position:absolute;overflow:auto}.vjs-caption-settings .vjs-tracksettings-colors,.vjs-caption-settings .vjs-tracksettings-font{float:left}.vjs-caption-settings .vjs-tracksettings-colors:after,.vjs-caption-settings .vjs-tracksettings-font:after,.vjs-caption-settings .vjs-tracksettings-controls:after{clear:both}.vjs-caption-settings .vjs-tracksettings-controls{position:absolute;bottom:1em;right:1em}.vjs-caption-settings .vjs-tracksetting{margin:5px;padding:3px;min-height:40px}.vjs-caption-settings .vjs-tracksetting label{display:block;width:100px;margin-bottom:5px}.vjs-caption-settings .vjs-tracksetting span{display:inline;margin-left:5px}.vjs-caption-settings .vjs-tracksetting>div{margin-bottom:5px;min-height:20px}.vjs-caption-settings .vjs-tracksetting>div:last-child{margin-bottom:0;padding-bottom:0;min-height:0}.vjs-caption-settings label>input{margin-right:10px}.vjs-caption-settings input[type=button]{width:40px;height:40px}.vjs5-hola-skin .vjs-control-bar *{color:#fff}.vjs5-hola-skin .vjs-big-play-button,.vjs5-hola-skin:hover .vjs-big-play-button{font-size:4em;border-radius:50%;border:0 solid transparent;height:3em;width:3em;line-height:3em;left:50%;top:50%;margin-left:-1.5em;margin-top:-1.5em;background-color:#2D2D2D;background-color:rgba(45,45,45,.6)}.vjs5-hola-skin .vjs-big-play-button:before,.vjs5-hola-skin:hover .vjs-big-play-button:before{content:''}.vjs5-hola-skin .vjs-big-play-button>svg,.vjs5-hola-skin:hover .vjs-big-play-button>svg{fill:#fff;stroke:#fff;opacity:.8}.vjs5-hola-skin .vjs-play-control{width:5em;margin:0 .5em;cursor:pointer;order:0}.vjs5-hola-skin .vjs-play-control>svg{fill:#fff;stroke:#fff;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-play-control:hover>svg{opacity:1}.vjs5-hola-skin .vjs-play-control.vjs-playing:before,.vjs5-hola-skin .vjs-play-control.vjs-paused:before,.vjs5-hola-skin .vjs-play-control:before{content:''}.vjs5-hola-skin.vjs-playing .vjs-big-play-button.vjs-hidden,.vjs5-hola-skin.vjs-paused .vjs-big-play-button.vjs-hidden{display:block!important;pointer-events:none}.vjs5-hola-skin.vjs-playing .vjs-big-play-button{opacity:0;transition:opacity 400ms ease,background-color 0;transition-delay:100ms,0}.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button{opacity:1;transition:opacity 0 linear,background-color 400ms ease;transition-delay:0ms,100ms;background-color:#2D2D2D;background-color:rgba(45,45,45,0)}.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button>svg,.vjs5-hola-skin.vjs-paused.vjs-has-started .vjs-big-play-button:before{transition:opacity 400ms ease;transition-delay:100ms;opacity:0}.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button{background-color:#2D2D2D;background-color:rgba(45,45,45,.6)}.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button>svg,.vjs5-hola-skin.vjs-paused.vjs-ended .vjs-big-play-button:before{opacity:.8}.vjs5-hola-skin .vjs-progress-control{position:absolute;left:0;right:0;width:auto;top:-20px;height:30px;background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.2) 67%,rgba(0,0,0,0) 67%)}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder{margin:0 10px}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar{background:#00b7f1}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:before{content:none}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:after{display:none}.vjs5-hola-skin .vjs-progress-control>.vjs-progress-holder>.vjs-mouse-display:after{pointer-events:none}.vjs5-hola-skin .vjs-progress-control:hover>.vjs-progress-holder>.vjs-play-progress.vjs-slider-bar:before{content:'';display:block;width:1em;height:1em;box-sizing:border-box;border-radius:50%;border-style:solid;border-width:3px;border-color:#fff;background:#00b7f1}.vjs5-hola-skin .vjs-live-control{order:4}.vjs5-hola-skin .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level{background-color:#00b7f1}.vjs5-hola-skin .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level:before{content:'';display:block;width:.6em;height:2em;background-color:#fff;right:-.3em;top:-.7em}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal{order:1}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:before{content:'';background-size:55%;background-repeat:no-repeat;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal:hover:before{opacity:1}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-3:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4Ig0KCSBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTEuOCwxNC4zSDQuM2MtMC4zLDAtMC41LDAuMi0wLjUsMC41djE0LjljMCwwLjMsMC4yLDAuNSwwLjUsMC41aDcuNWMwLjEsMCwwLjMsMC4xLDAuNCwwLjJsMTAuNiwxMS4xDQoJCQljMC4zLDAuMywwLjksMC4xLDAuOS0wLjRWMy45YzAtMC41LTAuNi0wLjctMC45LTAuNEwxMi4yLDE0LjFDMTIuMSwxNC4yLDExLjksMTQuMywxMS44LDE0LjN6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMzQuOCwzNS4yYy0wLjUsMC0xLTAuMi0xLjQtMC42Yy0wLjgtMC44LTAuOC0yLDAtMi44YzUuMS01LjEsNS4xLTEzLjUsMC0xOC43Yy0wLjgtMC44LTAuOC0yLDAtMi44DQoJCQljMC44LTAuOCwyLTAuOCwyLjgsMGM2LjcsNi43LDYuNywxNy42LDAsMjQuM0MzNS44LDM1LDM1LjMsMzUuMiwzNC44LDM1LjJ6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjkuNiwyOGMtMC41LDAtMS0wLjItMS40LTAuNmMtMC44LTAuOC0wLjgtMiwwLTIuOGMwLjYtMC42LDAuOS0xLjQsMC45LTIuMmMwLTAuOC0wLjMtMS42LTAuOS0yLjINCgkJCWMtMC44LTAuOC0wLjgtMiwwLTIuOGMwLjgtMC44LDItMC44LDIuOCwwYzEuMywxLjMsMi4xLDMuMSwyLjEsNWMwLDEuOS0wLjcsMy43LTIuMSw1QzMwLjYsMjcuOCwzMC4xLDI4LDI5LjYsMjh6Ii8+DQoJPC9nPg0KPC9zdmc+)}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-2:before,.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-1:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4IiBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTYsMTQuM0g4LjFjLTAuMSwwLTAuMiwwLjEtMC4yLDAuMlYzMGMwLDAuMSwwLjEsMC4yLDAuMiwwLjJIMTZjMC4xLDAsMC4xLDAsMC4yLDAuMUwyNy4zLDQyDQoJCQljMC4xLDAuMSwwLjQsMCwwLjQtMC4yVjMuMmMwLTAuMi0wLjItMC4zLTAuNC0wLjJMMTYuMiwxNC4yQzE2LjEsMTQuMiwxNi4xLDE0LjMsMTYsMTQuM3oiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zMy43LDI4Yy0wLjUsMC0xLTAuMi0xLjQtMC42Yy0wLjgtMC44LTAuOC0yLDAtMi44YzAuNi0wLjYsMC45LTEuNCwwLjktMi4yYzAtMC44LTAuMy0xLjYtMC45LTIuMg0KCQkJYy0wLjgtMC44LTAuOC0yLDAtMi44YzAuOC0wLjgsMi0wLjgsMi44LDBjMS4zLDEuMywyLjEsMy4xLDIuMSw1YzAsMS45LTAuNywzLjctMi4xLDVDMzQuNywyNy44LDM0LjIsMjgsMzMuNywyOHoiLz4NCgk8L2c+DQo8L3N2Zz4=);background-position:40% center}.vjs5-hola-skin .vjs-volume-menu-button.vjs-volume-menu-button-horizontal.vjs-vol-0:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDVweCIgaGVpZ2h0PSI0NXB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQ1IDQ1IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCg0KCTxnPg0KDQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xMS43LDE0LjNIMy44Yy0wLjEsMC0wLjIsMC4xLTAuMiwwLjJWMzBjMCwwLjEsMC4xLDAuMiwwLjIsMC4yaDcuOWMwLjEsMCwwLjEsMCwwLjIsMC4xTDIzLjEsNDIgYzAuMSwwLjEsMC40LDAsMC40LTAuMlYzLjJjMC0wLjItMC4yLTAuMy0wLjQtMC4yTDExLjksMTQuMkMxMS44LDE0LjIsMTEuOCwxNC4zLDExLjcsMTQuM3oiLz4NCg0KCTwvZz4NCg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik00MSwyNi4zbC0zLjktMy44bDMuOC0zLjhjMC41LTAuNSwwLjUtMS4zLDAtMS44Yy0wLjUtMC41LTEuMy0wLjUtMS44LDBsLTMuOCwzLjhsLTMuOC0zLjggYy0wLjUtMC41LTEuMy0wLjUtMS44LDBjLTAuNSwwLjUtMC41LDEuMywwLDEuOGwzLjgsMy44bC0zLjgsMy44Yy0wLjUsMC41LTAuNSwxLjMsMCwxLjhjMC4yLDAuMiwwLjYsMC40LDAuOSwwLjQNCg0KCQljMC40LDAsMC43LTAuMSwwLjktMC40bDMuOC0zLjhsMy44LDMuOGMwLjIsMC4yLDAuNiwwLjQsMC45LDAuNGMwLjQsMCwwLjctMC4xLDAuOS0wLjRjMC4zLTAuMiwwLjQtMC42LDAuNC0wLjkNCg0KCQlDNDEuNCwyNi45LDQxLjMsMjYuNiw0MSwyNi4zeiIvPg0KDQo8L3N2Zz4=)}.vjs5-hola-skin .vjs-settings-button{order:6}.vjs5-hola-skin .vjs-settings-button:before{content:'';background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0NXB4Ig0KCSBoZWlnaHQ9IjQ1cHgiIHZpZXdCb3g9IjAgMCA0NSA0NSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDUgNDUiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik00Mi44LDI0Ljd2LTQuNWgtNS4yYy0wLjQtMi41LTEuNC00LjgtMi44LTYuOGwzLjctMy43bC0zLjItMy4ybC0zLjcsMy43Yy0yLTEuNS00LjMtMi40LTYuOC0yLjhWMi4yaC00LjUNCgkJdjUuMmMtMi41LDAuNC00LjgsMS40LTYuOCwyLjhMOS44LDYuNkw2LjYsOS44bDMuNywzLjdjLTEuNSwyLTIuNCw0LjMtMi44LDYuOEgyLjJ2NC41aDUuMmMwLjQsMi41LDEuNCw0LjgsMi44LDYuOGwtMy43LDMuNw0KCQlsMy4yLDMuMmwzLjctMy43YzIsMS41LDQuMywyLjQsNi44LDIuOHY1LjJoNC41di01LjJjMi41LTAuNCw0LjgtMS40LDYuOC0yLjhsMy43LDMuN2wzLjItMy4ybC0zLjctMy43YzEuNS0yLDIuNC00LjMsMi44LTYuOA0KCQlINDIuOHogTTMyLDIyLjVjMCw1LjItNC4yLDkuNS05LjUsOS41UzEzLDI3LjcsMTMsMjIuNXM0LjItOS41LDkuNS05LjVTMzIsMTcuMywzMiwyMi41eiIvPg0KPC9zdmc+) no-repeat;background-size:50%;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-settings-button:hover:before{opacity:1}.vjs5-hola-skin .vjs-fullscreen-control{order:7}.vjs5-hola-skin .vjs-fullscreen-control:before{content:'';background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1NnB4Ig0KCSBoZWlnaHQ9IjQ0LjhweCIgdmlld0JveD0iMCAwIDU2IDQ0LjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDU2IDQ0LjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KDQoJPGc+DQoJCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zOCwzM0gxOGMtMC4zLDAtMC42LTAuMy0wLjYtMC42di0yMGMwLTAuMywwLjMtMC42LDAuNi0wLjZoMjBjMC4zLDAsMC42LDAuMywwLjYsMC42djIwDQoJCQlDMzguNiwzMi43LDM4LjMsMzMsMzgsMzN6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjYuOCwxMy41IDIuNiwxMy41IDIuNiwzLjQgMTIuOCwzLjQgMTIuOCw3LjYgNi44LDcuNiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI1My40LDEzLjUgNDkuMiwxMy41IDQ5LjIsNy42IDQzLjIsNy42IDQzLjIsMy40IDUzLjQsMy40Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjUzLjQsNDEuNCA0My4yLDQxLjQgNDMuMiwzNy4yIDQ5LjIsMzcuMiA0OS4yLDMxLjMgNTMuNCwzMS4zIi8+DQoJPC9nPg0KCTxnPg0KCQk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjEyLjgsNDEuNCAyLjYsNDEuNCAyLjYsMzEuMyA2LjgsMzEuMyA2LjgsMzcuMiAxMi44LDM3LjIiLz4NCgk8L2c+DQo8L3N2Zz4=);background-repeat:no-repeat;background-size:65%;background-position:center;opacity:.7;transition:opacity 200ms ease}.vjs5-hola-skin .vjs-fullscreen-control:hover:before{opacity:1;background-size:70%}.vjs5-hola-skin.vjs-fullscreen .vjs-fullscreen-control:before{content:'';background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI1NnB4Ig0KCSBoZWlnaHQ9IjQ0LjhweCIgdmlld0JveD0iMCAwIDU2IDQ0LjgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDU2IDQ0LjgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMzgsMzNIMThjLTAuMywwLTAuNi0wLjMtMC42LTAuNlYxMi40YzAtMC4zLDAuMy0wLjYsMC42LTAuNkgzOGMwLjMsMCwwLjYsMC4zLDAuNiwwLjZ2MjAuMQ0KCQkJQzM4LjYsMzIuOCwzOC40LDMzLDM4LDMzeiIvPg0KCTwvZz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjguNSwzLjMgMTIuNywzLjMgMTIuNywxMy41IDIuNSwxMy41IDIuNSw5LjIgOC41LDkuMiAJIi8+DQoJPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSI0My4zLDMuMyA0Ny41LDMuMyA0Ny41LDkuMiA1My41LDkuMiA1My41LDEzLjUgNDMuMywxMy41IAkiLz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjQzLjMsMzEuMyA1My41LDMxLjMgNTMuNSwzNS42IDQ3LjUsMzUuNiA0Ny41LDQxLjUgNDMuMyw0MS41IAkiLz4NCgk8cG9seWdvbiBmaWxsPSIjRkZGRkZGIiBwb2ludHM9IjIuNSwzMS4zIDEyLjcsMzEuMyAxMi43LDQxLjUgOC41LDQxLjUgOC41LDM1LjYgMi41LDM1LjYgCSIvPg0KPC9zdmc+)}.vjs5-hola-skin.vjs-fullscreen .vjs-fullscreen-control:hover:before{background-size:60%}.vjs5-hola-skin .vjs-time-control.vjs-duration,.vjs5-hola-skin .vjs-time-control.vjs-current-time,.vjs5-hola-skin .vjs-time-control.vjs-time-divider{display:block}.vjs5-hola-skin .vjs-time-control.vjs-current-time{order:2}.vjs5-hola-skin .vjs-time-control.vjs-time-divider{order:3}.vjs5-hola-skin .vjs-time-control.vjs-duration{order:4}.vjs5-hola-skin .vjs-time-control.vjs-remaining-time{display:none}.vjs5-hola-skin .vjs-control-bar{background:linear-gradient(to bottom,rgba(0,0,0,.2) 0,rgba(0,0,0,.65) 100%)}.vjs5-hola-skin .vjs-control-bar>.vjs-spacer{display:block;flex-grow:1;order:5}.vjs5-hola-skin.vjs-fullscreen{overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu{display:block;width:13em;left:-6em;z-index:2;visibility:hidden;transition:visibility 300ms step-end}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul{bottom:3em}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li{text-align:left;padding-left:.5em}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li.vjs-menu-label{pointer-events:none}.vjs5-hola-skin .vjs-menu-button-popup .vjs-menu ul li.vjs-menu-indent{padding-left:1.5em}.vjs5-hola-skin .vjs-menu-button-popup:hover .vjs-menu{visibility:visible;transition:visibility 1ms}.vjs5-hola-skin .vjs-info-overlay{position:absolute;top:1em;left:1em;z-index:3;display:inline-block;margin-bottom:3em;padding-bottom:10px;border-left:2em solid transparent;border-right:2em solid transparent;border-top:1.55em solid #000;border-top-color:rgba(7,40,50,.5);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background-color:#2D2D2D;background-color:rgba(45,45,45,.7);-webkit-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);-moz-box-shadow:-.2em -.2em .3em rgba(255,255,255,.2);box-shadow:-.2em -.2em .3em rgba(255,255,255,.2)}.vjs5-hola-skin .vjs-info-overlay.vjs-notify-overlay{bottom:50%;top:auto;margin-bottom:-3em;left:50%;margin-left:-8.5em;opacity:1}.vjs5-hola-skin .vjs-info-overlay.vjs-notify-overlay.vjs-notify-flash{transition:opacity 500ms ease;transition-delay:2500ms;opacity:0}.vjs5-hola-skin .vjs-info-overlay-title{margin-bottom:10px;font-size:1.5em}.vjs5-hola-skin .vjs-info-overlay-x{position:absolute;top:-1em;right:0;transition:color 200ms ease;cursor:pointer}.vjs5-hola-skin .vjs-info-overlay-x:hover{color:#fff}.vjs5-hola-skin .vjs-notify-overlay-title{margin-bottom:10px;font-size:1.5em}.vjs5-hola-skin .vjs-notify-overlay-content{text-align:center}.vjs5-hola-skin .vjs-info-overlay ul{list-style:none;position:relative;margin:0;padding:0}.vjs5-hola-skin .vjs-info-overlay ul li{padding:0;margin:0;height:16px;line-height:16px} \ No newline at end of file diff --git a/dist/video.hls.min.js.map b/dist/video.hls.min.js.map deleted file mode 100644 index 5e9d82e1e9..0000000000 --- a/dist/video.hls.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"video.hls.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/date/now.js","node_modules/lodash-compat/function/debounce.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/function/throttle.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/hasSymbols.js","node_modules/object.assign/implementation.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/function-bind/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/object.assign/polyfill.js","node_modules/object.assign/shim.js","node_modules/safe-json-parse/tuple.js","node_modules/tsml/tsml.js","node_modules/xhr/index.js","node_modules/xhr/node_modules/once/once.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js","node_modules/xhr/node_modules/parse-headers/parse-headers.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/mouse-time-display.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extend.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"getNative","nativeNow","Date","now","getTime","../internal/getNative",5,"debounce","func","wait","options","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","undefined","complete","isCalled","id","result","apply","thisArg","args","delayed","remaining","stamp","setTimeout","maxDelayed","trailing","debounced","arguments","leading","maxWait","leadingCall","TypeError","FUNC_ERROR_TEXT","isObject","nativeMax","Math","max","../date/now","../lang/isObject",6,"restParam","start","index","rest","Array","otherArgs",7,"throttle","./debounce",8,"arrayCopy","source","array",9,"arrayEach","iteratee",10,"baseCopy","props","object","key",11,"createBaseFor","baseFor","./createBaseFor",12,"baseForIn","keysIn","../object/keysIn","./baseFor",13,"baseMerge","customizer","stackA","stackB","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","isCommon","../lang/isArray","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",14,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",15,"baseProperty","toObject","./toObject",16,"bindCallback","argCount","identity","collection","accumulator","other","../utility/identity",17,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",18,"fromRight","keysFunc","iterable",19,"getLength","./baseProperty",20,"isNative","../lang/isNative",21,"isLength","./getLength","./isLength",22,"isHostObject","Object","toString",23,"isIndex","reIsUint","test","MAX_SAFE_INTEGER",24,"type","./isIndex",25,26,27,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",28,"support","unindexedChars","charAt","../support",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","objToString","nativeIsArray","../internal/isLength",31,"isFunction","funcTag","./isObject",32,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",33,34,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",35,"stringTag",36,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","enumPrototypes","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"arrayProto","splice","x","0","y","spliceObjects",42,43,"Symbol","getOwnPropertySymbols","iterator","obj","sym","symVal","getOwnPropertyNames","syms","getOwnPropertyDescriptor","descriptor","enumerable","object-keys",44,"bind","canBeObject","hasSymbols","propIsEnumerable","target","objTarget","./hasSymbols","function-bind",45,"defineProperties","getPolyfill","shim","implementation","./implementation","./polyfill","./shim","define-properties",46,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",47,"hasOwn","ctx","k",48,"ERROR_MESSAGE","slice","funcType","that","binder","bound","boundLength","boundArgs","join","Empty",49,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$console","$frame","$frameElement","$frames","$parent","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",50,"str","callee",51,"lacksProperEnumerationOrder","assign","letters","split","actual","assignHasPendingExceptions","preventExtensions","thrower",52,"polyfill",53,"SafeParseTuple","reviver","error","json","JSON","parse","err",54,"clean","sa",55,"isEmpty","createXHR","callback","readystatechange","xhr","readyState","loadFunc","getBody","body","response","responseType","responseText","responseXML","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","headers","url","uri","rawRequest","getAllResponseHeaders","parseHeaders","once","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","onload","onerror","onprogress","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","beforeSend","send","noop","global/window","parse-headers",56,"called",57,"forEach","list","context","forEachArray","forEachString","forEachObject","len","string","is-function",58,"alert","confirm","prompt",59,"trim","left","right",60,"arg","row","indexOf","toLowerCase","_componentJs2","_interopRequireDefault","_componentJs","_classCallCheck","BigPlayButton","_Button","player","buildCSSClass","__esModule","newObj","default","Constructor","instance","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_component","_objectAssign","Button","_Component","on","handleBlur","createEl","attributes","_objectAssign2","tabIndex","el","controlTextEl_","innerHTML","localize","controlText_","handleFocus","Events","_globalDocument2","Fn","handleKeyPress","event","which","preventDefault","handleClick","_interopRequireWildcard","_globalWindow2","_globalWindow","Dom","_utilsDomJs","Component","player_","id_","Guid","newGUID","el_","childIndex_","childNameIndex_","reportTouchActivity","trigger","bubbles","children_","dispose","removeElData","tagName","properties","languages","language","children","getChildById","addChild","child","componentName","componentClassName","componentClass","_utilsToTitleCaseJs2","ComponentClass","getComponent","component","removeChild","getChild","childFound","options_","parentOptions","_this","handleAdd","opts","playerOptions","_name","first","second","removeOnDispose","_this2","off","cleanRemover","guid","third","nodeName","one","_this3","_arguments","newFunc","ready","isReady_","triggerReady","readyQueue","readyQueue_","hasClass","classToCheck","hasElClass","addElClass","classToAdd","removeClass","classToRemove","removeElClass","show","dimension","num","skipListeners","widthOrHeight","val","style","emitTapEvents","touchStart","touchTimeThreshold","couldBeTap","touches","firstTouch","xdiff","pageX","touchDistance","tapMovementThreshold","noTap","touchTime","enableTouchActivity","report","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","intervalId","comp","init","subObj","extend","_name2","_spacerControlsCustomControlSpacerJs","ControlBar","className","FullscreenToggle","isFullscreen","controlText","updateShowing","LiveDisplay","contentEl_","aria-live","MuteToggle","update","tech_","addClass","vol","muted","level","toMute","handlePlay","handlePause","PlayToggle","play","pause","_menuMenuJs2","_menuMenuJs","PlaybackRateMenuButton","_MenuButton","updateVisibility","appendChild","labelEl_","menu","setAttribute","playbackRate","currentRate","newRate","playbackRates","playbackRateSupported","updateLabel","PlaybackRateMenuItem","_MenuItem","label","rate","buffered","percentify","time","end","percent","part","width","bufferedEnd","_lodashCompatFunctionThrottle2","_lodashCompatFunctionThrottle","MouseTimeDisplay","controlBar","progressControl","handleMouseMove","duration","position","findElPosition","parentNode","newTime","_utilsFormatTimeJs","updateDataAttr","_mouseTimeDisplayJs","ProgressControl","_Slider","updateARIAAttributes","aria-label","scrubbing","getCache","currentTime","getPercent","toFixed","_utilsFormatTimeJs2","SeekBar","videoWasPlaying","stepForward","stepBack","CustomControlSpacer","_Spacer","Spacer","_TextTrackMenuItem","CaptionSettingsMenuItem","_captionSettingsMenuItemJs2","_captionSettingsMenuItemJs","_TextTrackButton","CaptionsButton","threshold","hide","items","kind","kind_","_textTrackMenuItemJs2","_textTrackMenuItemJs","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","ChaptersButton","createItems","tracks","textTracks","createMenu","track","cues","chaptersTrack","contentEl","cue","mi","_utilsFnJs","ChaptersTrackMenuItem","addEventListener","startTime","OffTextTrackMenuItem","selected","handleTracksChange","_offTextTrackMenuItemJs","TextTrackButton","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","_globalDocument","TextTrackMenuItem","onchange","Event","dispatchEvent","updateContent","DurationDisplay","formattedTime","remainingTime","localizedText","TimeDivider","_sliderSliderJs","_volumeLevelJs","volume","calculateDistance","VolumeBar","VolumeControl","_volumeBarJs","VolumeLevel","_volumeControlVolumeBarJs","VolumeMenuButton","inline","vertical","volumeBar","volumeUpdate","orientationClass","vb","./utils/dom.js",95,"_utilsEventsJs","EventTarget","allowedEvents_","ael","_utilsLog","_utilsLog2","subClassMethods","methods","FullscreenApi","apiMap","browserApi","LoadingSpinner","MediaError","message","errorTypes","_buttonJs2","_buttonJs","_utilsToTitleCaseJs","MenuButton","title","buttonPressed_","unpressButton","focus","MenuItem","_selected","Menu","unlockShowing","contentElType","append","_utilsBrowserJs","_utilsLogJs2","_utilsLogJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_controlBarControlBarJs","tagAttributes","getElAttributes","languagesToLower","_utilsMergeOptionsJs2","plugins","playerOptionsCopy","isAudio","controls","Player","styleEl_","players","removeAttribute","defaultsStyleEl","querySelector","height","aspectRatio","privDimension","_dimension","parsedVal","parseFloat","updateStyleEl_","fluid","bool","ratio","aspectRatio_","videoWidth","videoHeight","ratioParts","width_","height_","ratioMultiplier","loadTech_","techName","disposeMediaElement","techName_","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","poster","src","cache_","techComponent","handleTechReady_","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechLoadStart_","handleTechWaiting_","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechEnded_","handleTechSeeking_","handleTechSeeked_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechProgress_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechAbort_","handleTechStalled_","handleTechLoadedMetaData_","handleTechLoadedData_","handleTechTextTrackChange_","handleTechPosterChange_","usingNativeControls","addTechControlsListeners_","removeTechControlsListeners_","handleTechClick_","handleTechTouchMove_","handleTechTouchEnd_","hasStarted","_hasStarted","hasStarted_","handleTechTap_","userActive","handleTechTouchStart_","userWasActive","handleStageClick_","handleTechSuspend_","handleTechEmptied_","handleTechTimeUpdate_","handleTechRateChange_","handleTechVolumeChange_","techCall_","techGet_","isScrubbing","scrubbing_","seconds","bufferedPercent","_utilsBufferJs","percentAsDecimal","fsApi","fullscreenchange","documentFullscreenChange","requestFullscreen","supportsFullScreen","exitFullscreen","isFullWindow","docOrigOverflow","documentElement","overflow","exitFullWindow","tech","b","currentTech","sourceList_","currentType_","load","sourceTech","selectSource","controls_","usingNativeControls_","error_","_mediaErrorJs2","ended","seeking","seekable","userActivity_","userActive_","stopPropagation","listenForUserActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseDown","handleMouseUp","inactivityTimeout","addTextTrack","addRemoteTextTrack","removeRemoteTextTrack","languages_","toJSON","tagOptions","dataSetup","_safeParseTuple","baseOptions","hasChildNodes","childNodes","childName","_playerJs","PosterImage","fallbackImg_","setSrc","_windowLoaded","autoSetup","vids","getElementsByTagName","mediaEls","audios","mediaEl","getAttribute","autoSetupTimeout","vjs","Slider","bar","barName","playerEvent","progress","percentage","stopImmediatePropagation","vertical_","registerComponent","FlashRtmpDecorator","Flash","streamingFormats","streamToParts","parts","connection","stream","connEnd","streamBegin","lastIndexOf","substring","rtmpSourceHandler","attrUpper","attr","toUpperCase","_api","vjs_setProperty","vjs_getProperty","_tech","_utilsUrlJs","_Tech","setSource","swf","objId","eventProxyFunction","errorEventProxyFunction","flashVars","params","wmode","embed","setCurrentTime","vjs_pause","lastSeekTarget_","currentSource_","setPoster","_utilsTimeRangesJs","createTimeRange","ranges","enterFullScreen","_tech2","_readWrite","_readOnly","_createGetter","nativeSourceHandler","canHandleSource","guessMimeType","ext","Url","getFileExtension","video/flv","video/mp4","checkReady","onEvent","swfID","eventName","getEl","version","navigator","description","match","getEmbedCode","flashVarsString","paramsString","attrsString","flashvars","_techJs2","_techJs","Html5","currentSrc","initNetworkState_","handleLateInit_","nodesLength","nodes","node","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackChange_","handleTextTrackChange","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","emulatedTt","tt","handleTextTrackAdd_","clone","cloneNode","createElement","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","overwriteAttrs","_ret","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","paused","setVolume","setMuted","offsetWidth","offsetHeight","video","networkState","HAVE_METADATA","webkitEnterFullScreen","exitFullScreen","webkitExitFullScreen","_src","setPreload","autoplay","setAutoplay","setControls","setLoop","defaultMuted","played","removeTrack_","TEST_VID","srclang","isSupported","canPlayType","registerSourceHandler","canControlVolume","canControlPlaybackRate","supportsNativeTextTracks","supportsTextTracks","mpegurlRE","patchCanPlayType","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","firstChild","MediaLoader","_tracksTextTrackList","Tech","manualProgressOn","featuresTimeupdateEvents","nativeCaptions","nativeTextTracks","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","onDurationChange","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","currentTimeInterval","manuallyTriggered","initTextTrackListeners","textTrackListChanges","script","textTracksChanges","updateDisplay","_tracksTextTrackList2","createTrackHelper","withSourceHandlers","handler","handlers","sourceHandlers","selectSourceHandler","sh","srcObj","sourceHandler_","disposeSourceHandler","handleSource","../tracks/text-track","../tracks/text-track-list","../utils/buffer.js","../utils/fn.js","../utils/log.js","../utils/time-ranges.js","global/document",113,"IS_IE8","prop","TextTrackCueList","get","length_","setCues_","cues_","oldLength","defineProp","parseInt","color","opacity","darkGray","lightGray","TextTrackDisplay","clearDisplay","updateForTrack","overrides","getValues","_i","cueDiv","displayState","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","fontMap","../component","../menu/menu-button.js","../menu/menu-item.js","../menu/menu.js",115,"TextTrackMode","disabled","hidden","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","querySelectorAll","trackObjs","TextTrackList","tracks_","_eventTarget2","change","addtrack","removetrack","_event","rtrack","getTrackById","getSelectedOptionValue","selectedOption","selectedOptions","selectedIndex","option","TextTrackSettings","persistTextTrackSettings","saveSettings","restoreSettings","textEdge","fgColor","bgColor","bgOpacity","setValues","values","setSelectedOption","_safeJsonParseTuple2","localStorage","getItem","removeItem","ttDisplay","safe-json-parse/tuple",119,"_textTrackCueList2","_textTrackCueList","_eventTarget","TextTrack","TextTrackEnum","TextTrackKind","mode","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","addCue","removeCue","removed","parseCues","srcContent","parser","loadTrack","crossOrigin","isCrossOrigin","_xhr2","responseBody","O","fromIndex","abs","webkitVersionMap","exec","USER_AGENT","IS_IPHONE","IS_IPAD","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","appleWebkitVersion","bufferedDuration","_timeRangesJs","_logJs","_logJs2","messages","Proxy","warn","defaultBehaviors","_taggedTemplateLiteralLoose","strings","raw","getElementById","propName","_tsml2","_templateObject","parent","getElData","elData","elIdAttr","element","classNames","knownBooleans","attrs","attrName","attrVal","onselectstart","getBoundingClientRect","box","top","docEl","clientLeft","scrollLeft","pageXOffset","getPointerPosition","boxH","boxX","pageY","unblockTextSelection","_tsml","elem","_handleMultipleEvents","dispatcher","hash","fixEvent","m","handlersCopy","isImmediatePropagationStopped","removeType","ownerDocument","isPropagationStopped","defaultPrevented","targetData","returnTrue","returnFalse","old","srcElement","relatedTarget","returnValue","cancelBubble","doc","clientX","_cleanUpEvents","detachEvent","ret","guide","h","floor",127,"_logType","console","log","history","argsArray","isPlain","mergeOptions","destination","lodash-compat/object/merge",130,"createStyleElement","createTimeRanges","createTimeRangesObj","getRange","fnName","valueIndex","rangeIndex","parseUrl","href","addToBody","div","details","protocol",134,"stylesheet","_utilsStylesheetJs","_player2","_player","_tracksTextTrackJs","_lodashCompatObjectMerge","_utilsCreateDeprecationProxyJs","_techHtml5Js","getPlayers","setTextContent","addLanguage"],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CACA,SAAAA,GAAA,GAAA,gBAAAC,UAAA,mBAAAC,QAAAA,OAAAD,QAAAD,QAAA,IAAA,kBAAAG,SAAAA,OAAAC,IAAAD,UAAAH,OAAA,CAAA,GAAAK,EAAAA,GAAA,mBAAAC,QAAAA,OAAA,mBAAAC,QAAAA,OAAA,mBAAAC,MAAAA,KAAAC,KAAAJ,EAAAK,QAAAV,MAAA,WAAA,GAAAG,EAAA,OAAA,SAAAQ,GAAAC,EAAAC,EAAAC,GAAA,QAAAC,GAAAC,EAAAC,GAAA,IAAAJ,EAAAG,GAAA,CAAA,IAAAJ,EAAAI,GAAA,CAAA,GAAAE,GAAA,kBAAAC,UAAAA,OAAA,KAAAF,GAAAC,EAAA,MAAAA,GAAAF,GAAA,EAAA,IAAAI,EAAA,MAAAA,GAAAJ,GAAA,EAAA,IAAAhB,GAAA,GAAAqB,OAAA,uBAAAL,EAAA,IAAA,MAAAhB,GAAAsB,KAAA,mBAAAtB,EAAA,GAAAuB,GAAAV,EAAAG,IAAAf,WAAAW,GAAAI,GAAA,GAAAQ,KAAAD,EAAAtB,QAAA,SAAAU,GAAA,GAAAE,GAAAD,EAAAI,GAAA,GAAAL,EAAA,OAAAI,GAAAF,EAAAA,EAAAF,IAAAY,EAAAA,EAAAtB,QAAAU,EAAAC,EAAAC,EAAAC,GAAA,MAAAD,GAAAG,GAAAf,QAAA,IAAA,GAAAmB,GAAA,kBAAAD,UAAAA,QAAAH,EAAA,EAAAA,EAAAF,EAAAW,OAAAT,IAAAD,EAAAD,EAAAE,GAAA,OAAAD,KAAAW,GAAA,SAAAC,EAAAzB,IACA,SAAAK,GACA,GAAAqB,GAAA,mBAAArB,GAAAA,EACA,mBAAAD,QAAAA,UACAuB,EAAAF,EAAA,eAEA,IAAA,mBAAAG,UACA5B,EAAAD,QAAA6B,cClBA,GAAAC,GAAAH,EAAA,4BAEAG,KACAA,EAAAH,EAAA,6BAAAC,GAGA3B,EAAAD,QAAA8B,KAGAP,KAAAf,KAAA,mBAAAF,QAAAA,OAAA,mBAAAC,MAAAA,KAAA,mBAAAF,QAAAA,aAEA0B,eAAA,IAAAC,GAAA,SAAAN,EAAAzB,IACA,SAAAK,GCZAL,EAAAD,mCAAAK,6BCAAC,EACA,mBAAAC,MACAA,UAKAgB,KAAAf,KAAA,mBAAAF,QAAAA,OAAA,mBAAAC,MAAAA,KAAA,mBAAAF,QAAAA,gBAEA4B,GAAA,iBAEAC,GAAA,SAAAR,EAAAzB,GACA,GAAAkC,GAAAT,EAAA,yBAGAU,EAAAD,EAAAE,KAAA,OCVAC,EAAAF,GAAA,WACA,OAAA,GAAAC,OAAAE,UAGAtC,GAAAD,QAAAsC,IAEAE,wBAAA,KAAAC,GAAA,SAAAf,EAAAzB,GAyEA,QAAAyC,GAAAC,EAAAC,EAAAC,GAyBA,QAAAC,KACAC,GACAC,aAAAD,GAEAE,GACAD,aAAAC,GAEAC,EAAA,EACAD,EAAAF,EAAAI,EAAAC,OAGA,QAAAC,GAAAC,EAAAC,GACAA,GACAP,aAAAO,GAEAN,EAAAF,EAAAI,EAAAC,OACAE,IACAJ,EAAAZ,IACAkB,EAAAb,EAAAc,MAAAC,EAAAC,GACAZ,GAAAE,IACAU,EAAAD,EAAAN,SAKA,QAAAQ,KACA,GAAAC,GAAAjB,GAAAN,IAAAwB,EACA,IAAAD,GAAAA,EAAAjB,EACAS,EAAAF,EAAAF,GAEAF,EAAAgB,WAAAH,EAAAC,GAIA,QAAAG,KACAX,EAAAY,EAAAlB,GAGA,QAAAmB,KAMA,GALAP,EAAAQ,UACAL,EAAAxB,IACAoB,EAAAlD,KACA2C,EAAAc,IAAAlB,IAAAqB,GAEAC,KAAA,EACA,GAAAC,GAAAF,IAAArB,MACA,CACAE,GAAAmB,IACAlB,EAAAY,EAEA,IAAAD,GAAAQ,GAAAP,EAAAZ,GACAI,EAAA,GAAAO,GAAAA,EAAAQ,CAEAf,IACAL,IACAA,EAAAD,aAAAC,IAEAC,EAAAY,EACAN,EAAAb,EAAAc,MAAAC,EAAAC,IAEAV,IACAA,EAAAc,WAAAC,EAAAH,ICvKA,MD0KAP,IAAAP,EACAA,EAAAC,aAAAD,GAEAA,GAAAH,IAAAyB,IACAtB,EAAAgB,WAAAH,EAAAhB,IAEA0B,IACAhB,GAAA,EACAE,EAAAb,EAAAc,MAAAC,EAAAC,KCrLAL,GAAAP,GAAAE,IACAU,EAAAD,EAAAN,QAEAI,EDkFA,GAAAG,GACAV,EACAO,EACAM,EACAJ,EACAX,EACAI,EACAD,EAAA,EACAmB,GAAA,EACAJ,GAAA,CAEA,IAAA,kBAAAtB,GACA,KAAA,IAAA4B,WAAAC,EAGA,IADA5B,EAAA,EAAAA,EAAA,GAAAA,GAAA,EACAC,KAAA,EAAA,CACA,GAAAuB,IAAA,CACAH,IAAA,MACAQ,GAAA5B,KACAuB,IAAAvB,EAAAuB,QACAC,EAAA,WAAAxB,IAAA6B,GAAA7B,EAAAwB,SAAA,EAAAzB,GACAqB,EAAA,YAAApB,KAAAA,EAAAoB,SAAAA,ECpGA,OADAC,GAAApB,OAAAA,EACAoB,EDMA,GAAAO,GAAA/C,EAAA,oBACAY,EAAAZ,EAAA,eAGA8C,EAAA,sBAGAE,EAAAC,KAAAC,GCVA3E,GAAAD,QAAA0C,IAEAmC,cAAA,EAAAC,mBAAA,KAAAC,GAAA,SAAArD,EAAAzB,GA6BA,QAAA+E,GAAArC,EAAAsC,GACA,GAAA,kBAAAtC,GACA,KAAA,IAAA4B,WAAAC,EAGA,OADAS,GAAAP,EAAAtB,SAAA6B,EAAAtC,EAAAnB,OAAA,GAAAyD,GAAA,EAAA,GACA,WAMA,IALA,GAAAtB,GAAAQ,UACAe,EAAA,GACA1D,EAAAkD,EAAAf,EAAAnC,OAAAyD,EAAA,GACAE,EAAAC,MAAA5D,KAEA0D,EAAA1D,GACA2D,EAAAD,GAAAvB,EAAAsB,EAAAC,EAEA,QAAAD,GACA,IAAA,GAAA,MAAAtC,GAAApB,KAAAf,KAAA2E,EACA,KAAA,GAAA,MAAAxC,GAAApB,KAAAf,KAAAmD,EAAA,GAAAwB,EACA,KAAA,GAAA,MAAAxC,GAAApB,KAAAf,KAAAmD,EAAA,GAAAA,EAAA,GAAAwB,mBCxDA,KADAD,EAAA,KACAA,EAAAD,GACAI,EAAAH,GAAAvB,EAAAuB,EAGA,OADAG,GAAAJ,GAAAE,EACAxC,EAAAc,MAAAjD,KAAA6E,IDQA,GAAAb,GAAA,sBAGAE,EAAAC,KAAAC,GCPA3E,GAAAD,QAAAgF,OAEAM,GAAA,SAAA5D,EAAAzB,GA8CA,QAAAsF,GAAA5C,EAAAC,EAAAC,GACA,GAAAuB,IAAA,EACAH,GAAA,CAEA,IAAA,kBAAAtB,GACA,KAAA,IAAA4B,WAAAC,ECxDA,OANA3B,MAAA,EACAuB,GAAA,EACAK,EAAA5B,KACAuB,EAAA,WAAAvB,KAAAA,EAAAuB,QAAAA,EACAH,EAAA,YAAApB,KAAAA,EAAAoB,SAAAA,GAEAvB,EAAAC,EAAAC,GAAAwB,QAAAA,EAAAC,SAAAzB,EAAAqB,SAAAA,IDMA,GAAAvB,GAAAhB,EAAA,cACA+C,EAAA/C,EAAA,oBAGA8C,EAAA,qBCPAvE,GAAAD,QAAAuF,IAEAT,mBAAA,GAAAU,aAAA,IAAAC,GAAA,SAAA/D,EAAAzB,GASA,QAAAyF,GAAAC,EAAAC,YCpBApE,EAAAmE,EAAAnE,MAGA,KADAoE,IAAAA,EAAAR,MAAA5D,MACA0D,EAAA1D,GACAoE,EAAAV,GAAAS,EAAAT,EAEA,OAAAU,GAGA3F,EAAAD,QAAA0F,OAEAG,GAAA,SAAAnE,EAAAzB,GAUA,QAAA6F,GAAAF,EAAAG,GCpBA,IDqBA,GAAAb,GAAA,gBCrBAA,EAAA1D,GACAuE,EAAAH,EAAAV,GAAAA,EAAAU,MAAA,IAIA,MAAAA,GAGA3F,EAAAD,QAAA8F,OAEAE,IAAA,SAAAtE,EAAAzB,GAUA,QAAAgG,GAAAN,EAAAO,EAAAC,GACAA,IAAAA,KCpBA,cAFA3E,EAAA0E,EAAA1E,SAEA0D,EAAA1D,GAAA,CACA,GAAA4E,GAAAF,EAAAhB,EACAiB,GAAAC,GAAAT,EAAAS,GAEA,MAAAD,GAGAlG,EAAAD,QAAAiG,OAEAI,IAAA,SAAA3E,EAAAzB,GACA,GAAAqG,GAAA5E,EAAA,mBCLA6E,EAAAD,GAEArG,GAAAD,QAAAuG,IAEAC,kBAAA,KAAAC,IAAA,SAAA/E,EAAAzB,GCNA,QAAAyG,GAAAP,EAAAJ,GACA,MAAAQ,GAAAJ,EAAAJ,EAAAY,GDMA,GAAAJ,GAAA7E,EAAA,aACAiF,EAAAjF,EAAA,mBCJAzB,GAAAD,QAAA0G,IAEAE,mBAAA,GAAAC,YAAA,KAAAC,IAAA,SAAApF,EAAAzB,GAsBA,QAAA8G,GAAAZ,EAAAR,EAAAqB,EAAAC,EAAAC,GACA,IAAAzC,EAAA0B,GACA,MAAAA,EAEA,IAAAgB,GAAAC,EAAAzB,KAAA0B,EAAA1B,IAAA2B,EAAA3B,IACAO,EAAAiB,EAAA/D,OAAAmE,EAAA5B,EChCA,ODkCAG,GAAAI,GAAAP,EAAA,SAAA6B,EAAApB,GAKA,GAJAF,IACAE,EAAAoB,EACAA,EAAA7B,EAAAS,IAEAqB,EAAAD,GACAP,IAAAA,MACAC,IAAAA,MACAQ,EAAAvB,EAAAR,EAAAS,EAAAW,EAAAC,EAAAC,EAAAC,OAEA,CACA,GAAAS,GAAAxB,EAAAC,GACA5C,EAAAwD,EAAAA,EAAAW,EAAAH,EAAApB,EAAAD,EAAAR,GAAAvC,OACAwE,EAAAxE,SAAAI,CAEAoE,KACApE,EAAAgE,GCxDApE,SAAAI,KAAA2D,GAAAf,IAAAD,MACAyB,IAAApE,IAAAA,EAAAA,IAAAmE,EAAAA,IAAAA,KACAxB,EAAAC,GAAA5C,MAIA2C,EDMA,GAAAL,GAAApE,EAAA,eACAgG,EAAAhG,EAAA,mBACA2F,EAAA3F,EAAA,mBACA0F,EAAA1F,EAAA,iBACA+C,EAAA/C,EAAA,oBACA+F,EAAA/F,EAAA,kBACA4F,EAAA5F,EAAA,wBACA6F,EAAA7F,EAAA,iBCVAzB,GAAAD,QAAA+G,IAEAc,kBAAA,GAAA/C,mBAAA,GAAAgD,uBAAA,GAAAC,iBAAA,GAAAC,cAAA,EAAAC,kBAAA,GAAAC,gBAAA,GAAAC,iBAAA,KAAAC,IAAA,SAAA1G,EAAAzB,GAwBA,QAAAyH,GAAAvB,EAAAR,EAAAS,EAAAiC,EAAArB,EAAAC,EAAAC,GAIA,IAHA,GAAA1F,GAAAyF,EAAAzF,OACAgG,EAAA7B,EAAAS,GAEA5E,KACA,GAAAyF,EAAAzF,IAAAgG,EAEA,YADArB,EAAAC,GAAAc,EAAA1F,GAIA,IAAAmG,GAAAxB,EAAAC,GACA5C,EAAAwD,EAAAA,EAAAW,EAAAH,EAAApB,EAAAD,EAAAR,GAAAvC,OACAwE,EAAAxE,SAAAI,CAEAoE,KACApE,EAAAgE,EACAJ,EAAAI,KAAAH,EAAAG,IAAAF,EAAAE,IACAhE,EAAA6D,EAAAM,GACAA,EACAP,EAAAO,GAAAjC,EAAAiC,MAEAW,EAAAd,IAAAe,EAAAf,GACAhE,EAAA+E,EAAAZ,GACAa,EAAAb,GACAW,EAAAX,GAAAA,KAGAC,GAAA,GAKAX,EAAAwB,KAAAjB,aClEAI,EAEAzB,EAAAC,GAAAiC,EAAA7E,EAAAgE,EAAAR,EAAAC,EAAAC,IACA1D,IAAAA,EAAAA,IAAAmE,EAAAA,IAAAA,KACAxB,EAAAC,GAAA5C,GDOA,GAAAkC,GAAAhE,EAAA,eACA6G,EAAA7G,EAAA,uBACA2F,EAAA3F,EAAA,mBACA0F,EAAA1F,EAAA,iBACA4G,EAAA5G,EAAA,yBACA4F,EAAA5F,EAAA,wBACA8G,EAAA9G,EAAA,wBCTAzB,GAAAD,QAAA0H,IAEAgB,sBAAA,GAAAb,kBAAA,GAAAc,wBAAA,GAAAb,uBAAA,GAAAc,wBAAA,GAAAC,cAAA,EAAAX,gBAAA,KAAAY,IAAA,SAAApH,EAAAzB,GCRA,QAAA8I,GAAA3C,GACA,MAAA,UAAAD,GACA,MAAA,OAAAA,EAAA/C,OAAA4F,EAAA7C,GAAAC,IDOA,GAAA4C,GAAAtH,EAAA,aCHAzB,GAAAD,QAAA+I,IAEAE,aAAA,KAAAC,IAAA,SAAAxH,EAAAzB,GAaA,QAAAkJ,GAAAxG,EAAAe,EAAA0F,GACA,GAAA,kBAAAzG,GACA,MAAA0G,EAEA,IAAAjG,SAAAM,EACA,MAAAf,EAEA,QAAAyG,GACA,IAAA,GAAA,MAAA,UAAAzB,GACA,MAAAhF,GAAApB,KAAAmC,EAAAiE,GAEA,KAAA,GAAA,MAAA,UAAAA,EAAAzC,EAAAoE,GACA,MAAA3G,GAAApB,KAAAmC,EAAAiE,EAAAzC,EAAAoE,GAEA,KAAA,GAAA,MAAA,UAAAC,EAAA5B,EAAAzC,EAAAoE,GACA,MAAA3G,GAAApB,KAAAmC,EAAA6F,EAAA5B,EAAAzC,EAAAoE,GCvCA,KAAA,GAAA,MAAA,UAAA3B,EAAA6B,EAAApD,EAAAD,EAAAR,GACA,MAAAhD,GAAApB,KAAAmC,EAAAiE,EAAA6B,EAAApD,EAAAD,EAAAR,IAGA,MAAA,YACA,MAAAhD,GAAAc,MAAAC,EAAAS,YDOA,GAAAkF,GAAA3H,EAAA,sBCHAzB,GAAAD,QAAAmJ,IAEAM,sBAAA,KAAAC,IAAA,SAAAhI,EAAAzB,GAYA,QAAA0J,GAAAC,GACA,MAAA5E,GAAA,SAAAmB,EAAA0D,GACA,GAAA3E,GAAA,GACA1D,EAAA,MAAA2E,EAAA,EAAA0D,EAAArI,OACAwF,EAAAxF,EAAA,EAAAqI,EAAArI,EAAA,GAAA4B,OACA0G,EAAAtI,EAAA,EAAAqI,EAAA,GAAAzG,OACAM,EAAAlC,EAAA,EAAAqI,EAAArI,EAAA,GAAA4B,WAEA,kBAAA4D,IACAA,EAAAmC,EAAAnC,EAAAtD,EAAA,GACAlC,GAAA,IAEAwF,EAAA,kBAAAtD,GAAAA,EAAAN,OACA5B,GAAAwF,EAAA,EAAA,GAEA8C,GAAAC,EAAAF,EAAA,GAAAA,EAAA,GAAAC,KACA9C,EAAA,EAAAxF,EAAA4B,OAAA4D,EACAxF,EAAA,WCxCA,GAAAmE,GAAAkE,EAAA3E,EACAS,IACAiE,EAAAzD,EAAAR,EAAAqB,GAGA,MAAAb,KDOA,GAAAgD,GAAAzH,EAAA,kBACAqI,EAAArI,EAAA,oBACAsD,EAAAtD,EAAA,wBCLAzB,GAAAD,QAAA2J,IAEAK,wBAAA,EAAAC,iBAAA,GAAAC,mBAAA,KAAAC,IAAA,SAAAzI,EAAAzB,GAUA,QAAAqG,GAAA8D,GACA,MAAA,UAAAjE,EAAAJ,EAAAsE,OACA,GAAAC,GAAAtB,EAAA7C,GACAD,EAAAmE,EAAAlE,GACA3E,EAAA0E,EAAA1E,OACA0D,EAAAkF,EAAA5I,EAAA,iBC1BA,GAAA4E,GAAAF,EAAAhB,EACA,IAAAa,EAAAuE,EAAAlE,GAAAA,EAAAkE,MAAA,EACA,MAGA,MAAAnE,IDOA,GAAA6C,GAAAtH,EAAA,aCHAzB,GAAAD,QAAAsG,IAEA2C,aAAA,KAAAsB,IAAA,SAAA7I,EAAAzB,GACA,GAAA8I,GAAArH,EAAA,kBCLA8I,EAAAzB,EAAA,SAEA9I,GAAAD,QAAAwK,IAEAC,iBAAA,KAAAC,IAAA,SAAAhJ,EAAAzB,GCPA,QAAAkC,GAAAgE,EAAAC,GACA,GAAAuB,GAAA,MAAAxB,EAAA/C,OAAA+C,EAAAC,EACA,OAAAuE,GAAAhD,GAAAA,EAAAvE,ODMA,GAAAuH,GAAAjJ,EAAA,mBCHAzB,GAAAD,QAAAmC,IAEAyI,mBAAA,KAAAC,IAAA,SAAAnJ,EAAAzB,GCNA,QAAAmH,GAAAO,GACA,MAAA,OAAAA,GAAAmD,EAAAN,EAAA7C,IDMA,GAAA6C,GAAA9I,EAAA,eACAoJ,EAAApJ,EAAA,aCJAzB,GAAAD,QAAAoH,IAEA2D,cAAA,GAAAC,aAAA,KAAAC,IAAA,SAAAvJ,EAAAzB,GAQA,GAAAiL,GAAA,WACA,IACAC,QAAAC,SAAA,GAAA,aCrBA,MAAA,YAAA,OAAA,GAEA,MAAA,UAAAzD,GAGA,MAAA,kBAAAA,GAAAyD,UAAA,iBAAAzD,EAAA,OAIA1H,GAAAD,QAAAkL,OAEAG,IAAA,SAAA3J,EAAAzB,GCRA,QAAAqL,GAAA3D,EAAAnG,GAGA,MAFAmG,GAAA,gBAAAA,IAAA4D,EAAAC,KAAA7D,IAAAA,EAAA,GACAnG,EAAA,MAAAA,EAAAiK,EAAAjK,EACAmG,EAAA,IAAAA,EAAA,GAAA,GAAAnG,EAAAmG,EDOA,GAAA4D,GAAA,QAMAE,EAAA,gBCVAxL,GAAAD,QAAAsL,OAEAI,IAAA,SAAAhK,EAAAzB,GAcA,QAAA8J,GAAApC,EAAAzC,EAAAiB,GACA,IAAA1B,EAAA0B,GACA,OAAA,gBC3BA,IAAA,UAAAwF,EACAvE,EAAAjB,IAAAmF,EAAApG,EAAAiB,EAAA3E,QACA,UAAAmK,GAAAzG,IAAAiB,GAAA,CACA,GAAAqD,GAAArD,EAAAjB,EACA,OAAAyC,KAAAA,EAAAA,IAAA6B,EAAAA,IAAAA,EAEA,OAAA,EDMA,GAAApC,GAAA1F,EAAA,iBACA4J,EAAA5J,EAAA,aACA+C,EAAA/C,EAAA,mBCLAzB,GAAAD,QAAA+J,IAEAjF,mBAAA,GAAAoD,gBAAA,GAAA0D,YAAA,KAAAC,IAAA,SAAAnK,EAAAzB,GCNA,QAAA6K,GAAAnD,GACA,MAAA,gBAAAA,IAAAA,EAAA,IAAAA,EAAA,GAAA,GAAA8D,GAAA9D,EDUA,GAAA8D,GAAA,gBCPAxL,GAAAD,QAAA8K,OAEAgB,IAAA,SAAApK,EAAAzB,GCNA,QAAAwH,GAAAE,GACA,QAAAA,GAAA,gBAAAA,GAGA1H,EAAAD,QAAAyH,OAEAsE,IAAA,SAAArK,EAAAzB,GAsBA,QAAA+L,GAAA7F,GCjCA,IDkCA,GAAAD,GAAAS,EAAAR,GACA8F,EAAA/F,EAAA1E,OACAA,EAAAyK,GAAA9F,EAAA3E,OAEA0K,IAAA1K,GAAAsJ,EAAAtJ,KACA6F,EAAAlB,IAAAoC,EAAApC,IAAAgG,EAAAhG,IAEAjB,EAAA,GACA1B,OC1CA0B,EAAA+G,GAAA,CACA,GAAA7F,GAAAF,EAAAhB,IACAgH,GAAAZ,EAAAlF,EAAA5E,IAAA4K,EAAA7K,KAAA4E,EAAAC,KACA5C,EAAAiF,KAAArC,GAGA,MAAA5C,GDMA,GAAA+E,GAAA7G,EAAA,uBACA2F,EAAA3F,EAAA,mBACA4J,EAAA5J,EAAA,aACAoJ,EAAApJ,EAAA,cACAyK,EAAAzK,EAAA,oBACAiF,EAAAjF,EAAA,oBAGA2K,EAAAlB,OAAAmB,UAGAF,EAAAC,EAAAD,cCdAnM,GAAAD,QAAAgM,IAEAtD,sBAAA,GAAAb,kBAAA,GAAA0E,mBAAA,GAAA3F,mBAAA,GAAAgF,YAAA,GAAAZ,aAAA,KAAAwB,IAAA,SAAA9K,EAAAzB,GAYA,QAAA+I,GAAArB,GACA,GAAA8E,EAAAC,gBAAAP,EAAAxE,GAAA,CCvBA,IDwBA,GAAAzC,GAAA,GACA1D,EAAAmG,EAAAnG,qBCzBA0D,EAAA1D,GACAgC,EAAA0B,GAAAyC,EAAAgF,OAAAzH,EAEA,OAAA1B,GAEA,MAAAiB,GAAAkD,GAAAA,EAAAwD,OAAAxD,GDMA,GAAAlD,GAAA/C,EAAA,oBACAyK,EAAAzK,EAAA,oBACA+K,EAAA/K,EAAA,aCLAzB,GAAAD,QAAAgJ,IAEAlE,mBAAA,GAAAyH,mBAAA,GAAAK,aAAA,KAAAC,IAAA,SAAAnL,EAAAzB,GCPA,QAAAsI,GAAAZ,GACA,MAAAF,GAAAE,IAAAP,EAAAO,IACAyE,EAAA7K,KAAAoG,EAAA,YAAAmF,EAAAvL,KAAAoG,EAAA,UDMA,GAAAP,GAAA1F,EAAA,2BACA+F,EAAA/F,EAAA,4BAGA2K,EAAAlB,OAAAmB,UAGAF,EAAAC,EAAAD,eAGAU,EAAAT,EAAAS,oBCbA7M,GAAAD,QAAAuI,IAEAwE,0BAAA,GAAAC,2BAAA,KAAAC,IAAA,SAAAvL,EAAAzB,GACA,GAAAkC,GAAAT,EAAA,yBACAoJ,EAAApJ,EAAA,wBACA+F,EAAA/F,EAAA,4BAGAwL,EAAA,iBAGAb,EAAAlB,OAAAmB,UAMAa,EAAAd,EAAAjB,SAGAgC,EAAAjL,EAAAiD,MAAA,WCxBAiC,EAAA+F,GAAA,SAAAzF,GACA,MAAAF,GAAAE,IAAAmD,EAAAnD,EAAAnG,SAAA2L,EAAA5L,KAAAoG,IAAAuF,EAGAjN,GAAAD,QAAAqH,IAEA7E,wBAAA,GAAA6K,uBAAA,GAAAL,2BAAA,KAAAM,IAAA,SAAA5L,EAAAzB,GCTA,QAAAsN,GAAA5F,GAIA,MAAAlD,GAAAkD,IAAAwF,EAAA5L,KAAAoG,IAAA6F,EDMA,GAAA/I,GAAA/C,EAAA,cAGA8L,EAAA,oBAGAnB,EAAAlB,OAAAmB,UAMAa,EAAAd,EAAAjB,QCfAnL,GAAAD,QAAAuN,IAEAE,aAAA,KAAAC,IAAA,SAAAhM,EAAAzB,iBCXA,MAAA,OAAA0H,GACA,EAEA4F,EAAA5F,GACAgG,EAAAnC,KAAAoC,EAAArM,KAAAoG,IAEAF,EAAAE,KAAAuD,EAAAvD,GAAAgG,EAAAE,GAAArC,KAAA7D,GDMA,GAAA4F,GAAA7L,EAAA,gBACAwJ,EAAAxJ,EAAA,4BACA+F,EAAA/F,EAAA,4BAGAmM,EAAA,8BAGAxB,EAAAlB,OAAAmB,UAGAsB,EAAAE,SAAAxB,UAAAlB,SAGAgB,EAAAC,EAAAD,eAGAuB,EAAAI,OAAA,IACAH,EAAArM,KAAA6K,GAAA4B,QAAA,sBAAA,QACAA,QAAA,yDAAA,SAAA,ICtBA/N,GAAAD,QAAA2K,IAEAsD,2BAAA,GAAAjB,2BAAA,GAAAkB,eAAA,KAAAC,IAAA,SAAAzM,EAAAzB,GCTA,QAAAwE,GAAAkD,GAGA,GAAAgE,SAAAhE,EACA,SAAAA,IAAA,UAAAgE,GAAA,YAAAA,GAGA1L,EAAAD,QAAAyE,OAEA2J,IAAA,SAAA1M,EAAAzB,GAoDA,QAAAqI,GAAAX,GACA,GAAA0G,EAGA,KAAA5G,EAAAE,IAAAwF,EAAA5L,KAAAoG,IAAA2G,GAAApD,EAAAvD,IAAAY,EAAAZ,KACAyE,EAAA7K,KAAAoG,EAAA,iBAAA0G,EAAA1G,EAAA4G,YAAA,kBAAAF,MAAAA,YAAAA,KACA,OAAA,CAKA,IAAA7K,EACA,OAAAiJ,GAAA+B,SACA9H,EAAAiB,EAAA,SAAA8G,EAAArI,EAAAD,GAEA,MADA3C,GAAA4I,EAAA7K,KAAA4E,EAAAC,IACA,IAEA5C,KAAA,IC7EAkD,EAAAiB,EAAA,SAAA8G,EAAArI,GACA5C,EAAA4C,IAEAhD,SAAAI,GAAA4I,EAAA7K,KAAAoG,EAAAnE,IDMA,GAAAkD,GAAAhF,EAAA,yBACA6G,EAAA7G,EAAA,iBACAwJ,EAAAxJ,EAAA,4BACA+F,EAAA/F,EAAA,4BACA+K,EAAA/K,EAAA,cAGA4M,EAAA,kBAGAjC,EAAAlB,OAAAmB,UAGAF,EAAAC,EAAAD,eAMAe,EAAAd,EAAAjB,QCtBAnL,GAAAD,QAAAsI,IAEAoG,wBAAA,GAAAT,2BAAA,GAAAjB,2BAAA,GAAAJ,aAAA,GAAA+B,gBAAA,KAAAC,IAAA,SAAAlN,EAAAzB,GCNA,QAAAkM,GAAAxE,GACA,MAAA,gBAAAA,IAAAF,EAAAE,IAAAwF,EAAA5L,KAAAoG,IAAAkH,EDMA,GAAApH,GAAA/F,EAAA,4BAGAmN,EAAA,kBAGAxC,EAAAlB,OAAAmB,UAMAa,EAAAd,EAAAjB,QCfAnL,GAAAD,QAAAmM,IAEAa,2BAAA,KAAA8B,IAAA,SAAApN,EAAAzB,GCNA,QAAAqH,GAAAK,GACA,MAAAF,GAAAE,IAAAmD,EAAAnD,EAAAnG,WAAAuN,EAAA5B,EAAA5L,KAAAoG,IDMA,GAAAmD,GAAApJ,EAAA,wBACA+F,EAAA/F,EAAA,4BAGAsN,EAAA,qBACA9B,EAAA,iBACA+B,EAAA,mBACAC,EAAA,gBACAC,EAAA,iBACA3B,EAAA,oBACA4B,EAAA,eACAC,EAAA,kBACAf,EAAA,kBACAgB,EAAA,kBACAC,EAAA,eACAV,EAAA,kBACAW,EAAA,mBAEAC,EAAA,uBACAC,EAAA,wBACAC,EAAA,wBACAC,EAAA,qBACAC,EAAA,sBACAC,EAAA,sBACAC,EAAA,sBACAC,EAAA,6BACAC,EAAA,uBACAC,EAAA,uBAGAnB,IACAA,GAAAW,GAAAX,EAAAY,GACAZ,EAAAa,GAAAb,EAAAc,GACAd,EAAAe,GAAAf,EAAAgB,GACAhB,EAAAiB,GAAAjB,EAAAkB,GACAlB,EAAAmB,IAAA,EACAnB,EAAAC,GAAAD,EAAA7B,GACA6B,EAAAU,GAAAV,EAAAE,GACAF,EAAAG,GAAAH,EAAAI,GACAJ,EAAAvB,GAAAuB,EAAAK,GACAL,EAAAM,GAAAN,EAAAT,GACAS,EAAAO,GAAAP,EAAAQ,GACAR,EAAAF,GAAAE,EAAAS,IAAA,CAGA,IAAAnD,GAAAlB,OAAAmB,UAMAa,EAAAd,EAAAjB,QCtDAnL,GAAAD,QAAAsH,IAEA+F,uBAAA,GAAAL,2BAAA,KAAAmD,IAAA,SAAAzO,EAAAzB,GCNA,QAAAuI,GAAAb,GACA,MAAA1B,GAAA0B,EAAAhB,EAAAgB,IDMA,GAAA1B,GAAAvE,EAAA,wBACAiF,EAAAjF,EAAA,mBCJAzB,GAAAD,QAAAwI,IAEA4H,uBAAA,GAAAxJ,mBAAA,KAAAyJ,IAAA,SAAA3O,EAAAzB,GACA,GAAAkC,GAAAT,EAAA,yBACA0F,EAAA1F,EAAA,2BACA+C,EAAA/C,EAAA,oBACAsK,EAAAtK,EAAA,wBACA+K,EAAA/K,EAAA,cAGA4O,EAAAnO,EAAAgJ,OAAA,QCnBA5D,EAAA+I,EAAA,SAAAnK,GACA,GAAAkI,GAAA,MAAAlI,EAAA/C,OAAA+C,EAAAoI,WACA,OAAA,kBAAAF,IAAAA,EAAA/B,YAAAnG,IACA,kBAAAA,GAAAsG,EAAA8D,eAAAnJ,EAAAjB,IACA6F,EAAA7F,GAEA1B,EAAA0B,GAAAmK,EAAAnK,OANA6F,CASA/L,GAAAD,QAAAuH,IAEA/E,wBAAA,GAAAuK,0BAAA,GAAAyD,uBAAA,GAAA1L,mBAAA,GAAA8H,aAAA,KAAA6D,IAAA,SAAA/O,EAAAzB,GAgFA,QAAA0G,GAAAR,GACA,GAAA,MAAAA,EACA,QAEA1B,GAAA0B,KACAA,EAAAgF,OAAAhF,GAEA,IAAA3E,GAAA2E,EAAA3E,MAEAA,GAAAA,GAAAsJ,EAAAtJ,KACA6F,EAAAlB,IAAAoC,EAAApC,IAAAgG,EAAAhG,KAAA3E,GAAA,CAWA,KATA,GAAA6M,GAAAlI,EAAAoI,YACArJ,EAAA,GACAwL,EAAAnD,EAAAc,IAAAA,EAAA/B,WAAAD,EACAsE,EAAAD,IAAAvK,EACA3C,EAAA4B,MAAA5D,GACAoP,EAAApP,EAAA,EACAqP,EAAApE,EAAAqE,iBAAA3K,IAAA4K,GAAA5K,YAAA/E,QACA4P,EAAAvE,EAAA8D,gBAAAhD,EAAApH,KAEAjB,EAAA1D,GACAgC,EAAA0B,GAAAA,EAAA,EAMA,KAAA,GAAAkB,KAAAD,GACA6K,GAAA,aAAA5K,GACAyK,IAAA,WAAAzK,GAAA,QAAAA,IACAwK,GAAAtF,EAAAlF,EAAA5E,IACA,eAAA4E,IAAAuK,IAAAvE,EAAA7K,KAAA4E,EAAAC,KACA5C,EAAAiF,KAAArC,EAGA,IAAAqG,EAAAwE,gBAAA9K,IAAAkG,EAAA,CACA,GAAA6E,GAAA/K,IAAAgL,EAAAtC,EAAA1I,IAAA4K,EAAA5B,EAAAhC,EAAA5L,KAAA4E,GACAiL,EAAAC,EAAAH,IAAAG,EAAA/C,EAMA,KAJA4C,GAAA5C,IACAoC,EAAArE,GAEA7K,EAAA8P,EAAA9P,OACAA,KAAA,CACA4E,EAAAkL,EAAA9P,aCxIAmP,IAAAY,IACAA,GAAAnF,EAAA7K,KAAA4E,EAAAC,GAAAD,EAAAC,KAAAsK,EAAAtK,KACA5C,EAAAiF,KAAArC,IAIA,MAAA5C,GDMA,GAAAsC,GAAApE,EAAA,yBACA6G,EAAA7G,EAAA,uBACA2F,EAAA3F,EAAA,mBACA6L,EAAA7L,EAAA,sBACA4J,EAAA5J,EAAA,uBACAoJ,EAAApJ,EAAA,wBACA+C,EAAA/C,EAAA,oBACAyK,EAAAzK,EAAA,oBACA+K,EAAA/K,EAAA,cAGAwL,EAAA,iBACA+B,EAAA,mBACAC,EAAA,gBACAC,EAAA,iBACA3B,EAAA,oBACA6B,EAAA,kBACAf,EAAA,kBACAgB,EAAA,kBACAT,EAAA,kBAGAyC,GACA,cAAA,iBAAA,gBAAA,uBACA,iBAAA,WAAA,WAIAP,EAAA3P,MAAAkL,UACAD,EAAAlB,OAAAmB,UACA6E,EAAAK,OAAAlF,UAGAF,EAAAC,EAAAD,eAMAe,EAAAd,EAAAjB,SAGAiG,IACAA,GAAAnE,GAAAmE,EAAAnC,GAAAmC,EAAAhC,IAAAd,aAAA,EAAAkD,gBAAA,EAAArG,UAAA,EAAAsG,SAAA,GACAL,EAAApC,GAAAoC,EAAAxC,IAAAN,aAAA,EAAAnD,UAAA,EAAAsG,SAAA,GACAL,EAAAlC,GAAAkC,EAAA7D,GAAA6D,EAAA/B,IAAAf,aAAA,EAAAnD,UAAA,GACAiG,EAAA/C,IAAAC,aAAA,GAEAzI,EAAAwL,EAAA,SAAAlL,GACA,IAAA,GAAA8K,KAAAG,GACA,GAAAjF,EAAA7K,KAAA8P,EAAAH,GAAA,CACA,GAAAhL,GAAAmL,EAAAH,EACAhL,GAAAE,GAAAgG,EAAA7K,KAAA2E,EAAAE,MCvDAnG,EAAAD,QAAA2G,IAEAgL,wBAAA,EAAAC,sBAAA,GAAAvE,uBAAA,GAAA3E,sBAAA,GAAAb,kBAAA,GAAAgK,qBAAA,GAAA/M,mBAAA,GAAAyH,mBAAA,GAAAK,aAAA,KAAAkF,IAAA,SAAApQ,EAAAzB,GACA,GAAA8G,GAAArF,EAAA,yBACAiI,EAAAjI,EAAA,8BCNAqQ,EAAApI,EAAA5C,EAEA9G,GAAAD,QAAA+R,IAEAC,wBAAA,GAAAC,6BAAA,KAAAC,IAAA,SAAAxQ,EAAAzB,GAEA,GAAAkS,GAAA/M,MAAAkH,UACAyE,EAAA3P,MAAAkL,UACAD,EAAAlB,OAAAmB,UAGAQ,EAAAT,EAAAS,qBACAsF,EAAAD,EAAAC,OASA3F,MAEA,SAAA4F,GACA,GAAAhE,GAAA,WAAA7N,KAAA6R,EAAAA,GACAlM,GAAAmM,EAAAD,EAAA7Q,OAAA6Q,GACAnM,IAEAmI,GAAA/B,WAAAoF,QAAAW,EAAAE,EAAAF,EACA,KAAA,GAAAjM,KAAA,IAAAiI,GAAAnI,EAAAuC,KAAArC,EASAqG,GAAAqE,eAAAhE,EAAAvL,KAAAwP,EAAA,YACAjE,EAAAvL,KAAAwP,EAAA,QAaAtE,EAAA8D,eAAAzD,EAAAvL,KAAA8M,EAAA,aAWA5B,EAAAwE,gBAAA,UAAAzF,KAAAtF,GAQAuG,EAAA+B,QAAA,KAAAtI,EAAA,GAeAuG,EAAA+F,eAAAJ,EAAA7Q,KAAA4E,EAAA,EAAA,IAAAA,EAAA,ICvFAsG,EAAAC,eAAA,IAAA,GAAAvB,OAAA,KAAA,IAAA,MACA,EAAA,GAEAlL,EAAAD,QAAAyM,OAEAgG,IAAA,SAAA/Q,EAAAzB,GCNA,QAAAoJ,GAAA1B,GACA,MAAAA,GAGA1H,EAAAD,QAAAqJ,OAEAqJ,IAAA,SAAAhR,EAAAzB,GACA,YAEA,IAAAsH,GAAA7F,EAAA,cAEAzB,GAAAD,QAAA,WACA,GAAA,kBAAA2S,SAAA,kBAAAxH,QAAAyH,sBAAA,OAAA,CACA,IAAA,gBAAAD,QAAAE,SAAA,OAAA,CAEA,IAAAC,MACAC,EAAAJ,OAAA,OACA,IAAA,gBAAAI,GAAA,OAAA,CAOA,IAAAC,GAAA,EACAF,GAAAC,GAAAC,CACA,KAAAD,IAAAD,GAAA,OAAA,CACA,IAAA,IAAAvL,EAAAuL,GAAAtR,OAAA,OAAA,CACA,IAAA,kBAAA2J,QAAA5D,MAAA,IAAA4D,OAAA5D,KAAAuL,GAAAtR,OAAA,OAAA,CAEA,IAAA,kBAAA2J,QAAA8H,qBAAA,IAAA9H,OAAA8H,oBAAAH,GAAAtR,OAAA,OAAA,CAEA,IAAA0R,GAAA/H,OAAAyH,sBAAAE,qCCpCA,KAAA3H,OAAAmB,UAAAQ,qBAAAvL,KAAAuR,EAAAC,GAAA,OAAA,CAEA,IAAA,kBAAA5H,QAAAgI,yBAAA,CACA,GAAAC,GAAAjI,OAAAgI,yBAAAL,EAAAC,EACA,IAAAK,EAAAzL,QAAAqL,GAAAI,EAAAC,cAAA,EAAA,OAAA,EAGA,OAAA,KAGAC,cAAA,KAAAC,IAAA,SAAA7R,EAAAzB,GACA,YAGA,IAAAsH,GAAA7F,EAAA,eACA8R,EAAA9R,EAAA,iBACA+R,EAAA,SAAAX,GACA,MAAA,mBAAAA,IAAA,OAAAA,GAEAY,EAAAhS,EAAA,kBACAsH,EAAAmC,OACA1C,EAAA+K,EAAAjS,KAAAuM,SAAAvM,KAAA6D,MAAAkH,UAAA7D,MACAkL,EAAAH,EAAAjS,KAAAuM,SAAAvM,KAAA4J,OAAAmB,UAAAQ,qBAEA7M,GAAAD,QAAA,SAAA4T,GACA,IAAAH,EAAAG,GAAA,KAAA,IAAArP,WAAA,2BACA,IACAzD,GAAA6E,EAAAxE,EAAA+E,EAAAgN,EAAAvL,EAAAvB,EADAyN,EAAA7K,EAAA4K,EAEA,KAAA9S,EAAA,EAAAA,EAAAqD,UAAA3C,SAAAV,EAAA,CAGA,GAFA6E,EAAAqD,EAAA7E,UAAArD,IACAoF,EAAAqB,EAAA5B,GACA+N,GAAAvI,OAAAyH,sBAEA,IADAM,EAAA/H,OAAAyH,sBAAAjN,GACAxE,EAAA,EAAAA,EAAA+R,EAAA1R,SAAAL,EACAiF,EAAA8M,EAAA/R,GACAwS,EAAAhO,EAAAS,IACAqC,EAAAvC,EAAAE,ECrCA,KAAAjF,EAAA,EAAAA,EAAA+E,EAAA1E,SAAAL,EACAiF,EAAAF,EAAA/E,GACAwG,EAAAhC,EAAAS,GACAuN,EAAAhO,EAAAS,KACAyN,EAAAzN,GAAAuB,GAIA,MAAAkM,MAGAC,eAAA,GAAAC,gBAAA,GAAAT,cAAA,KAAAU,IAAA,SAAAtS,EAAAzB,GACA,YAEA,IAAAgU,GAAAvS,EAAA,6CCdAwS,EAAAxS,EAAA,cACAyS,EAAAzS,EAAA,SAEAuS,GAAAG,GACAA,eAAAA,EACAF,YAAAA,EACAC,KAAAA,IAGAlU,EAAAD,QAAAoU,IAEAC,mBAAA,GAAAC,aAAA,GAAAC,SAAA,GAAAC,oBAAA,KAAAC,IAAA,SAAA/S,EAAAzB,GACA,YAEA,IAAAsH,GAAA7F,EAAA,eACAgT,EAAAhT,EAAA,WACAgS,EAAA,kBAAAf,SAAA,gBAAAA,UAEAgC,EAAAxJ,OAAAmB,UAAAlB,SAEAmC,EAAA,SAAAqH,GACA,MAAA,kBAAAA,IAAA,sBAAAD,EAAApT,KAAAqT,IAGAC,EAAA,WACA,GAAA/B,KACA,KACA3H,OAAA2J,eAAAhC,EAAA,KAAAO,YAAA,EAAA1L,MAAAmL,GAEA,KAAA,GAAAiC,KAAAjC,GAAA,OAAA,CAEA,OAAAA,GAAAT,IAAAS,EACA,MAAApS,GACA,OAAA,IAGAsU,EAAA7J,OAAA2J,gBAAAD,IAEAC,EAAA,SAAA3O,EAAA8O,EAAAtN,EAAAuN,MACAD,IAAA9O,KAAAoH,EAAA2H,IAAAA,OAGAF,EACA7J,OAAA2J,eAAA3O,EAAA8O,GACAE,cAAA,EACA9B,YAAA,EACA1L,MAAAA,EACAyN,UAAA,IAGAjP,EAAA8O,GAAAtN,IAIAsM,EAAA,SAAA9N,EAAAkP,GACA,GAAAC,GAAAnR,UAAA3C,OAAA,EAAA2C,UAAA,MACA+B,EAAAqB,EAAA8N,OCxDAnP,EAAAA,EAAAqP,OAAApK,OAAAyH,sBAAAyC,KAEAX,EAAAxO,EAAA,SAAA+O,GACAH,EAAA3O,EAAA8O,EAAAI,EAAAJ,GAAAK,EAAAL,MAIAhB,GAAAe,sBAAAA,EAEA/U,EAAAD,QAAAiU,IAEAS,QAAA,GAAApB,cAAA,KAAAkC,IAAA,SAAA9T,EAAAzB,GAEA,GAAAwV,GAAAtK,OAAAmB,UAAAF,eACAhB,EAAAD,OAAAmB,UAAAlB,QAEAnL,GAAAD,QAAA,SAAA8S,EAAA8B,EAAAc,GACA,GAAA,sBAAAtK,EAAA7J,KAAAqT,GACA,KAAA,IAAArQ,WAAA,8BAEA,IAAAjD,GAAAwR,EAAAtR,MACA,IAAAF,KAAAA,EACA,IAAA,GAAAH,GAAA,EAAAG,EAAAH,EAAAA,2BCpBA,KAAA,GAAAwU,KAAA7C,GACA2C,EAAAlU,KAAAuR,EAAA6C,IACAf,EAAArT,KAAAmU,EAAA5C,EAAA6C,GAAAA,EAAA7C,SAOA8C,IAAA,SAAAlU,EAAAzB,GACA,GAAA4V,GAAA,kDACAC,EAAA1Q,MAAAkH,UAAAwJ,MACAnB,EAAAxJ,OAAAmB,UAAAlB,SACA2K,EAAA,mBAEA9V,GAAAD,QAAA,SAAAgW,GACA,GAAApC,GAAApT,IACA,IAAA,kBAAAoT,IAAAe,EAAApT,KAAAqS,KAAAmC,EACA,KAAA,IAAAxR,WAAAsR,EAAAjC,EAwBA,KAAA,GAtBAjQ,GAAAmS,EAAAvU,KAAA4C,UAAA,GAEA8R,EAAA,WACA,GAAAzV,eAAA0V,GAAA,CACA,GAAA1S,GAAAoQ,EAAAnQ,MACAjD,KACAmD,EAAA4R,OAAAO,EAAAvU,KAAA4C,YAEA,OAAAgH,QAAA3H,KAAAA,EACAA,EAEAhD,KAEA,MAAAoT,GAAAnQ,MACAuS,EACArS,EAAA4R,OAAAO,EAAAvU,KAAA4C,cAKAgS,EAAAxR,KAAAC,IAAA,EAAAgP,EAAApS,OAAAmC,EAAAnC,QACA4U,KACAjV,EAAA,EAAAgV,EAAAhV,EAAAA,IACAiV,EAAA3N,KAAA,IAAAtH,EAGA,IAAA+U,GAAApI,SAAA,SAAA,oBAAAsI,EAAAC,KAAA,KAAA,6CAAAJ,EChDA,IAAArC,EAAAtH,UAAA,CACA,GAAAgK,GAAA,YACAA,GAAAhK,UAAAsH,EAAAtH,UACA4J,EAAA5J,UAAA,GAAAgK,GACAA,EAAAhK,UAAA,KAGA,MAAA4J,SAIAK,IAAA,SAAA7U,EAAAzB,GACA,YAGA,IAAAuW,GAAArL,OAAAmB,UAAAF,eACAuI,EAAAxJ,OAAAmB,UAAAlB,SACA0K,EAAA1Q,MAAAkH,UAAAwJ,MACAW,EAAA/U,EAAA,iBACAgV,IAAAtL,SAAA,MAAA0B,qBAAA,YACA6J,EAAA,aAAA7J,qBAAA,aACA8J,GACA,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEAC,EAAA,SAAA9V,GACA,GAAA+V,GAAA/V,EAAAwN,WACA,OAAAuI,IAAAA,EAAAxK,YAAAvL,GAEAgW,GACAC,UAAA,EACAC,QAAA,EACAC,eAAA,EACAC,SAAA,EACAC,SAAA,EACAC,OAAA,EACAC,kBAAA,EACAC,oBAAA,EACAC,SAAA,GAEAC,EAAA,WAEA,GAAA,mBAAApX,QAAA,OAAA,CACA,KAAA,GAAAsV,KAAAtV,QACA,IACA,IAAA0W,EAAA,IAAApB,IAAAa,EAAAjV,KAAAlB,OAAAsV,IAAA,OAAAtV,OAAAsV,IAAA,gBAAAtV,QAAAsV,GACA,IACAkB,EAAAxW,OAAAsV,IACA,MAAAjV,GACA,OAAA,GAGA,MAAAA,GACA,OAAA,EAGA,OAAA,KAEAgX,EAAA,SAAA3W,GAEA,GAAA,mBAAAV,UAAAoX,EACA,MAAAZ,GAAA9V,EAEA,KACA,MAAA8V,GAAA9V,GACA,MAAAL,GACA,OAAA,IAIAiX,EAAA,SAAAxR,GACA,GAAA1B,GAAA,OAAA0B,GAAA,gBAAAA,GACAoH,EAAA,sBAAAoH,EAAApT,KAAA4E,GACAoC,EAAAkO,EAAAtQ,GACAgG,EAAA1H,GAAA,oBAAAkQ,EAAApT,KAAA4E,GACAyR,IAEA,KAAAnT,IAAA8I,IAAAhF,EACA,KAAA,IAAAhE,WAAA,qCAGA,IAAAyM,GAAA2F,GAAApJ,CACA,IAAApB,GAAAhG,EAAA3E,OAAA,IAAAgV,EAAAjV,KAAA4E,EAAA,GACA,IAAA,GAAAhF,GAAA,EAAAA,EAAAgF,EAAA3E,SAAAL,EACAyW,EAAAnP,KAAA+I,OAAArQ,GAIA,IAAAoH,GAAApC,EAAA3E,OAAA,EACA,IAAA,GAAAqW,GAAA,EAAAA,EAAA1R,EAAA3E,SAAAqW,EACAD,EAAAnP,KAAA+I,OAAAqG,QAGA,KAAA,GAAA5C,KAAA9O,GACA6K,GAAA,cAAAiE,IAAAuB,EAAAjV,KAAA4E,EAAA8O,IACA2C,EAAAnP,KAAA+I,OAAAyD,GAKA,IAAAyB,EAGA,IAAA,GAFAoB,GAAAJ,EAAAvR,GAEAwP,EAAA,EAAAA,EAAAiB,EAAApV,SAAAmU,EACAmC,GAAA,gBAAAlB,EAAAjB,KAAAa,EAAAjV,KAAA4E,EAAAyQ,EAAAjB,KACAiC,EAAAnP,KAAAmO,EAAAjB,GAIA,OAAAiC,GAGAD,GAAAxD,KAAA,WACA,GAAAhJ,OAAA5D,KAAA,CACA,GAAAwQ,GAAA,WAEA,MAAA,MAAA5M,OAAA5D,KAAApD,YAAA,IAAA3C,QACA,EAAA,EACA,KAAAuW,EAAA,CACA,GAAAC,GAAA7M,OAAA5D,IACA4D,QAAA5D,KAAA,SAAApB,GACA,MACA6R,GADAvB,EAAAtQ,GACA2P,EAAAvU,KAAA4E,YC3HAgF,QAAA5D,KAAAoQ,CAEA,OAAAxM,QAAA5D,MAAAoQ,GAGA1X,EAAAD,QAAA2X,IAEAhJ,gBAAA,KAAAsJ,IAAA,SAAAvW,EAAAzB,GACA,YAEA,IAAA0U,GAAAxJ,OAAAmB,UAAAlB,QAEAnL,GAAAD,QAAA,SAAA2H,GACA,GAAAuQ,GAAAvD,EAAApT,KAAAoG,6BCTA,OARA8O,KACAA,EAAA,mBAAAyB,GACA,OAAAvQ,GACA,gBAAAA,IACA,gBAAAA,GAAAnG,QACAmG,EAAAnG,QAAA,GACA,sBAAAmT,EAAApT,KAAAoG,EAAAwQ,SAEA1B,QAGA2B,IAAA,SAAA1W,EAAAzB,GACA,YAEA,IAAAmU,GAAA1S,EAAA,oBAEA2W,EAAA,WACA,IAAAlN,OAAAmN,OACA,OAAA,CAOA,KAAA,GAHAJ,GAAA,uBACAK,EAAAL,EAAAM,MAAA,IACAnD,KACAlU,EAAA,EAAAA,EAAAoX,EAAA/W,SAAAL,EACAkU,EAAAkD,EAAApX,IAAAoX,EAAApX,EAEA,IAAA2R,GAAA3H,OAAAmN,UAAAjD,GACAoD,EAAA,EACA,KAAA,GAAA9C,KAAA7C,GACA2F,GAAA9C,CAEA,OAAAuC,KAAAO,GAGAC,EAAA,WACA,IAAAvN,OAAAmN,SAAAnN,OAAAwN,kBACA,OAAA,CAIA,IAAAC,GAAAzN,OAAAwN,mBAAAlX,EAAA,GACA,KACA0J,OAAAmN,OAAAM,EAAA,MACA,MAAAlY,GACA,MAAA,MAAAkY,EAAA,IAIA3Y,GAAAD,QAAA,gCChDAqY,IACAjE,EAEAsE,IACAtE,EAEAjJ,OAAAmN,OARAlE,KAWAC,mBAAA,KAAAwE,IAAA,SAAAnX,EAAAzB,GACA,YAEA,IAAAC,GAAAwB,EAAA,sCCbAzB,GAAAD,QAAA,WACA,GAAA8Y,GAAA5E,GAMA,OALAhU,GACAiL,QACAmN,OAAAQ,IACAR,OAAA,WAAA,MAAAnN,QAAAmN,SAAAQ,KAEAA,KAGAxE,aAAA,GAAAE,oBAAA,KAAAuE,IAAA,SAAArX,EAAAzB,GAGA,QAAA+Y,GAAAlG,EAAAmG,SCdAC,EAAA,IAEA,KACAC,EAAAC,KAAAC,MAAAvG,EAAAmG,GACA,MAAAK,GACAJ,EAAAI,EAGA,OAAAJ,EAAAC,GDIAlZ,EAAAD,QAAAgZ,OCDAO,IAAA,SAAA7X,EAAAzB,GACA,QAAAuZ,GAAA1Y,GACA,MAAAA,GAAAkN,QAAA,YAAA,ICXA/N,EAAAD,QAAA,SAAAyZ,GAIA,IAHA,GAAA3Y,GAAA,GACAK,EAAA,EAEAA,EAAAgD,UAAA3C,OAAAL,IACAL,GAAA0Y,EAAAC,EAAAtY,KAAAgD,UAAAhD,EAAA,IAAA,GAEA,OAAAL,SAEA4Y,IAAA,SAAAhY,EAAAzB,GACA,YAYA,SAAA0Z,GAAA7G,GACA,IAAA,GAAA3R,KAAA2R,GACA,GAAAA,EAAA1G,eAAAjL,GAAA,OAAA,CAEA,QAAA,EAGA,QAAAyY,GAAA/W,EAAAgX,GACA,QAAAC,KACA,IAAAC,EAAAC,YACAC,IAIA,QAAAC,KAEA,GAAAC,GAAA/W,MAQA,IANA2W,EAAAK,SACAD,EAAAJ,EAAAK,SACA,SAAAL,EAAAM,cAAAN,EAAAM,eACAF,EAAAJ,EAAAO,cAAAP,EAAAQ,aAGAC,EACA,IACAL,EAAAf,KAAAC,MAAAc,GACA,MAAAzZ,IAGA,MAAAyZ,GAYA,QAAAM,GAAAC,GACA1X,aAAA2X,GACAD,YAAAtZ,SACAsZ,EAAA,GAAAtZ,OAAA,IAAAsZ,GAAA,kCAEAA,EAAAE,WAAA,EACAf,EAAAa,EAAAG,GAIA,QAAAZ,KACA,IAAAa,EAAA,CACA,GAAAC,EACA/X,cAAA2X,GAGAI,EAFAlY,EAAAmY,QAAA5X,SAAA2W,EAAAgB,OAEA,IAEA,OAAAhB,EAAAgB,OAAA,IAAAhB,EAAAgB,MAEA,IAAAX,GAAAS,EACAvB,EAAA,IAEA,KAAAyB,GACAX,GACAD,KAAAD,IACAU,WAAAG,EACAE,OAAAA,EACAC,WACAC,IAAAC,EACAC,WAAAtB,GAEAA,EAAAuB,wBACAlB,EAAAc,QAAAK,EAAAxB,EAAAuB,2BAGAhC,EAAA,GAAAlY,OAAA,iCAEAyY,EAAAP,EAAAc,EAAAA,EAAAD,OA/CA,GAAAU,IACAV,KAAA/W,OACA8X,WACAN,WAAA,EACAK,OAAAA,EACAE,IAAAC,EACAC,WAAAtB,EAkDA,IALA,gBAAAlX,KACAA,GAAAuY,IAAAvY,IAGAA,EAAAA,MACA,mBAAAgX,GACA,KAAA,IAAAzY,OAAA,4BAEAyY,GAAA2B,EAAA3B,EAEA,IAAAE,GAAAlX,EAAAkX,KAAA,IAEAA,KAEAA,EADAlX,EAAA4Y,MAAA5Y,EAAAmY,OACA,GAAApB,GAAA8B,eAEA,GAAA9B,GAAA+B,eAIA,IAAAvV,GACA0U,EAOAH,EANAS,EAAArB,EAAAoB,IAAAtY,EAAAuY,KAAAvY,EAAAsY,IACAF,EAAAlB,EAAAkB,OAAApY,EAAAoY,QAAA,MACAd,EAAAtX,EAAAsX,MAAAtX,EAAA+Y,KACAV,EAAAnB,EAAAmB,QAAArY,EAAAqY,YACAW,IAAAhZ,EAAAgZ,KACArB,GAAA,CAsCA,IAnCA,QAAA3X,KACA2X,GAAA,EACAU,EAAA,QAAAA,EAAA,SAAAA,EAAA,OAAA,oBACA,QAAAD,GAAA,SAAAA,IACAC,EAAA,iBAAAA,EAAA,kBAAAA,EAAA,gBAAA,oBACAf,EAAAf,KAAA0C,UAAAjZ,EAAAsW,QAIAY,EAAAgC,mBAAAjC,EACAC,EAAAiC,OAAA/B,EACAF,EAAAkC,QAAAxB,EAEAV,EAAAmC,WAAA,aAGAnC,EAAAoC,UAAA1B,EACAV,EAAAqC,KAAAnB,EAAAG,GAAAS,EAAAhZ,EAAAwZ,SAAAxZ,EAAAyZ,UAEAT,IACA9B,EAAAwC,kBAAA1Z,EAAA0Z,kBAKAV,GAAAhZ,EAAA2Z,QAAA,IACA7B,EAAA5W,WAAA,WACA+W,GAAA,EACAf,EAAA0C,MAAA,UACA,IAAA/b,GAAA,GAAAU,OAAA,yBACAV,GAAAW,KAAA,YACAoZ,EAAA/Z,IACAmC,EAAA2Z,UAGAzC,EAAA2C,iBACA,IAAAtW,IAAA8U,GACAA,EAAA9O,eAAAhG,IACA2T,EAAA2C,iBAAAtW,EAAA8U,EAAA9U,QAGA,IAAAvD,EAAAqY,UAAAvB,EAAA9W,EAAAqY,SACA,KAAA,IAAA9Z,OAAA,oDChLA,ODmLA,gBAAAyB,KACAkX,EAAAM,aAAAxX,EAAAwX,cAGA,cAAAxX,IACA,kBAAAA,GAAA8Z,4BC1LA5C,EAAA6C,KAAAzC,GAEAJ,EAKA,QAAA8C,MDIA,GAAAxc,GAAAqB,EAAA,iBACA8Z,EAAA9Z,EAAA,QACA6Z,EAAA7Z,EAAA,gBAIAzB,GAAAD,QAAA4Z,EACAA,EAAA+B,eAAAtb,EAAAsb,gBAAAkB,EACAjD,EAAA8B,eAAA,mBAAA,IAAA9B,GAAA+B,eAAA/B,EAAA+B,eAAAtb,EAAAqb,iBCVAoB,gBAAA,EAAAtB,KAAA,GAAAuB,gBAAA,KAAAC,IAAA,SAAAtb,EAAAzB,GCTA,QAAAub,GAAA5G,GACA,GAAAqI,IAAA,CACA,OAAA,YACA,MAAAA,GAAA,QACAA,GAAA,EACArI,EAAAnR,MAAAjD,KAAA2D,aDKAlE,EAAAD,QAAAwb,EAEAA,EAAA9K,MAAA8K,EAAA,WACArQ,OAAA2J,eAAAhH,SAAAxB,UAAA,QACA3E,MAAA,WACA,MAAA6T,GAAAhb,OAEA2U,cAAA,WCRA+H,IAAA,SAAAxb,EAAAzB,GAQA,QAAAkd,GAAAC,EAAAvK,EAAAwK,GACA,IAAA9P,EAAAsF,GACA,KAAA,IAAAtO,WAAA,8BAGAJ,WAAA3C,OAAA,IACA6b,EAAA7c,MAGA,mBAAA4K,EAAA7J,KAAA6b,GACAE,EAAAF,EAAAvK,EAAAwK,GACA,gBAAAD,GACAG,EAAAH,EAAAvK,EAAAwK,GAEAG,EAAAJ,EAAAvK,EAAAwK,GAGA,QAAAC,GAAA1X,EAAAiN,EAAAwK,GACA,IAAA,GAAAlc,GAAA,EAAAsc,EAAA7X,EAAApE,OAAAic,EAAAtc,EAAAA,IACAiL,EAAA7K,KAAAqE,EAAAzE,IACA0R,EAAAtR,KAAA8b,EAAAzX,EAAAzE,GAAAA,EAAAyE,GAKA,QAAA2X,GAAAG,EAAA7K,EAAAwK,GACA,IAAA,GAAAlc,GAAA,EAAAsc,EAAAC,EAAAlc,OAAAic,EAAAtc,EAAAA,8BC1CA,QAAAqc,GAAArX,EAAA0M,EAAAwK,GACA,IAAA,GAAA1H,KAAAxP,GACAiG,EAAA7K,KAAA4E,EAAAwP,IACA9C,EAAAtR,KAAA8b,EAAAlX,EAAAwP,GAAAA,EAAAxP,GDMA,GAAAoH,GAAA7L,EAAA,cAEAzB,GAAAD,QAAAmd,CAEA,IAAA/R,GAAAD,OAAAmB,UAAAlB,SACAgB,EAAAjB,OAAAmB,UAAAF,iBCNAuR,cAAA,KAAAC,IAAA,SAAAlc,EAAAzB,iBCXA,GAAAyd,GAAAtS,EAAA7J,KAAAqT,EACA,OAAA,sBAAA8I,GACA,kBAAA9I,IAAA,oBAAA8I,GACA,mBAAArd,UAEAuU,IAAAvU,OAAA0D,YACA6Q,IAAAvU,OAAAwd,OACAjJ,IAAAvU,OAAAyd,SACAlJ,IAAAvU,OAAA0d,QDIA9d,EAAAD,QAAAuN,CAEA,IAAAnC,GAAAD,OAAAmB,UAAAlB,cCHA4S,IAAA,SAAAtc,EAAAzB,EAAAD,iBCXA,MAAAkY,GAAAlK,QAAA,aAAA,IDaAhO,EAAAC,EAAAD,QAAAie,ECVAje,EAAAke,KAAA,SAAAhG,GACA,MAAAA,GAAAlK,QAAA,OAAA,KAGAhO,EAAAme,MAAA,SAAAjG,GACA,MAAAA,GAAAlK,QAAA,OAAA,UAGAoQ,IAAA,SAAA1c,EAAAzB,GACA,GAAAge,GAAAvc,EAAA,QACAyb,EAAAzb,EAAA,YACA2F,EAAA,SAAAgX,GACA,MAAA,mBAAAlT,OAAAmB,UAAAlB,SAAA7J,KAAA8c,GAGApe,GAAAD,QAAA,SAAAkb,GACA,IAAAA,EACA,QAEA,IAAA1X,YAEA2Z,GACAc,EAAA/C,GAAA1C,MAAA,MACA,SAAA8F,GACA,GAAApZ,GAAAoZ,EAAAC,QAAA,KACAnY,EAAA6X,EAAAK,EAAAxI,MAAA,EAAA5Q,IAAAsZ,cACA7W,EAAAsW,EAAAK,EAAAxI,MAAA5Q,EAAA,ypBCdMuZ,EAAaC,EAAAC,iCAAbC,EAAape,KAYjBqe,GAECC,EAAAvd,KAAAf,KAAAue,EAAAlc,mBASAyJ,UAAA0S,cAAA,oUClCkBlM,GAAA,GAAgBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAtBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACSsM,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAA/B+a,GAAMC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,2BACE,eAARI,EAAElB,EAAAmB,oCAEK,6GAUPnB,EAAAoB,GASRC,EAAQ,SAASC,uKATfxf,KAAMyf,GAAA,OAqBVzf,KAAA0f,kBAXEZ,GAAQS,EAAQC,GAmBdD,EAAAzT,UAAM6T,SAAQ,WACd,GAAAjP,GAAM/M,UAAQ3C,QAAA,GAAA4B,SAAAe,UAAA,GAAA,SAAAA,UAAA,GACd+B,EAAA/B,UAAa3C,QAAQ,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,GACpBic,EAAYjc,UAAA3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,EAEf+B,GAAMma,EAAG,2CAETC,SAAK,GACHpa,GAGFka,EAAGC,EAAiB,0BAEpB1U,KAAK,+BAELyU,8CAWA,qJAAKG,qEAvDH/f,KAAMggB,eAqEVC,UAAajgB,KAAAkgB,SAAAlgB,KAAAmgB,cAEZngB,sLAyBCuf,EAAIzT,UAAWsU,YAAW,WACxBC,EAAKZ,GAACa,EAAiB,WAAA,UAAAC,EAAAvN,KAAAhT,KAAAA,KAAAwgB,0DAU3B,KA3GUC,EAAAC,OA2GA,KAAAD,EAAAC,SACRD,EAAOE,iBACR3gB,KAAA4gB,YAAAH,+WCxHYI,GAAAvO,GAAA,GAAAA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,aACKpM,GAAA,MAAeA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,WAArB8L,GAAAS,EAAAD,GAAA,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6DACQ,iBAAV+c,EAAI5C,EAAA6C,yBACJC,EAAMH,EAAAI,iEAGC,mKA4CfC,EAAK,0CAMLlhB,KAAKmhB,sBAAM5C,EAAeve,gIAezBA,KAAMohB,IAAI,CAEV,GAAAre,GAAAwb,GAAAA,EAAAxb,IAAAwb,EAAAxb,MAAA,WAED/C,MAAKohB,IAAAre,EAAY,cAAGse,EAAAC,kCAMlBjf,EAAK0d,GACN/f,KAAAuhB,IAAAlf,EAAA0d,qBAED/f,KAAKuhB,IAAMvhB,KAAO2f,8BAIlB3f,KAAIwhB,eACFxhB,KAAAyhB,0EAUEpf,EAAQqf,uBAAoB,uEAYhC1hB,KAAK2hB,SAASxW,KAAO,UAACyW,SAAA,8DAKd5hB,KAAG6hB,UAAAlhB,GAAAmhB,oCAOX9hB,MAAI6hB,UAAa,KACjB7hB,KAAKwhB,YAAW,KACjBxhB,KAAAyhB,gBAAA,+EASCT,EAAAe,aAAY/hB,KAAQuhB,KACrBvhB,KAAAuhB,IAAA,4TAsFCL,EAAIpV,UAAW6T,SAAc,SAAEqC,EAAAC,EAAArC,+BAI9B9T,UAAAoU,SAAA,SAAAhD,wDAEGgF,EAAWliB,KAAGmhB,QAAWe,WAAQliB,KAAAmhB,QAAAe,sBAGrC,MAAIhF,aAKL,IAAAiF,GAAAA,EAAAjF,gEAUQA,gKAiDPgE,EAAOpV,UAAKsW,SAAgB,WAC7B,MAAApiB,MAAA6hB,WASCX,EAAOpV,UAAKuW,aAAqB,SAACtf,GACnC,MAAA/C,MAAAwhB,YAAAze,qEAuCKme,EAAApV,UAAawW,SAAA,SAAAC,MACdlgB,GAAAsB,UAAA3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,YAGD6e,EAAgB5f,UAGf,gBAAA2f,GAAA,KAIGlgB,0MAOJA,KAKD,IAAAogB,GAAMpgB,EAAAqgB,gBAAAC,EAAA,WAAAH,WAOL,IAAII,GAAa1B,EAAc2B,aAAaJ,yCA6B9C,aApBCZ,UAAA5Z,KAAA6a,+EAUFN,qGAUKM,GAWF5B,EAAIpV,UAAKiX,YAAiB,SAAWD,MACjB,gBAAlBA,KACAA,EAAK9iB,KAAUgjB,SAAQF,IAG1BA,GAAA9iB,KAAA6hB,WAMD,IAAK,GAFJoB,IAAA,EAEItiB,EAAAX,KAAY6hB,UAAU7gB,OAAQ,EAAKL,GAAA,EAAAA,IACxC,GAAKX,KAAA6hB,UAAgBlhB,KAAAmiB,EAAiB,MAElC9iB,KAAA6hB,UAASjQ,OAAYjR,EAAG,SAK7B,GAAAsiB,EAAA;A9D7aH;AACA,mD8DweUb,EAAOpiB,KAAAkjB,SAAcd,wBAKvB,GAAAe,GAAkBC,EAAEF,SAEnBG,EAAA,SAAA5O,EAAA6O,GAIkB1gB,SAAfugB,EAAa1O,KACf6O,EAAOH,EAAG1O,IAKR6O,KAAC,IAMLA,KAAU,IACVA,MAKEA,EAAAC,cAAYH,EAAYF,SAAAK,cAMtBH,EAAA3O,GAAO2O,EAAMd,SAAA7N,EAAA6O,IAIb,IAAA1e,MAAAiC,QAAOub,GACP,IAAA,GAAIzhB,GAAG,EAAKA,EAACyhB,EAAAphB,OAAAL,IAAA,IACd4hB,GAAAH,EAAAzhB,YAED2iB,EAAU1gB,MAEP,iBAAA2f,IAEHiB,EAAUjB,EACTe,OAENE,EAAAjB,EAAA9N,KACF6O,EAAAf,gLAwDiC,oBAAe3d,MAAMiC,QAAK4c,KAAChE,GAAAzf,KAAAuhB,IAAAkC,EAAAlD,EAAAvN,KAAAhT,KAAA0jB,KAIzD,WACA,GAAAtQ,GAAQqQ,oBAKFE,EAAe,iBAAMC,GAAKC,IAAIzQ,EAAAjI,EAAWiJ,+EAe7C0P,GAASC,KAAO3P,EAAG2P,6BAKhB1D,EAAKZ,GAAArM,EAAA,UAAA0Q,oGAqCV,IAAAL,GAAoB,gBAAFA,IAAE7e,MAAAiC,QAAA4c,2BAElB,SAEAtY,EAAOuY,EAEPtP,EAAOmM,EAAGvN,KAAKhT,KAAMgkB,yBAM1BP,EAAAQ,0FA4BG/C,EAAMpV,UAAUoY,IAAA,SAAMT,EAAAC,EAAAM,GACpB,GAAAG,GAAKnkB,KACLokB,EAASzgB,kGAMX,GAAAyP,GAAQqQ,MACTrP,EAAAmM,EAAAvN,KAAAmR,EAAAH,GAEMK,EAAK,QAAAA,KACbF,EAAAN,IAAAzQ,EAAAjI,EAAAkZ,8HAyCKnD,EAAIpV,UAACwY,MAAc,SAAgBlQ,GACnC,GAAAiH,GAAK1X,UAAY3C,QAAS,GAAA4B,SAAAe,UAAA,IAAA,EAAAA,UAAA,SAE7ByQ,KACDpU,KAAWukB,SACZlJ,4GAoBO6F,EAAEpV,UAAU0Y,aAAE,gBACfD,UAAQ,6BAIX,GAAIE,GAASzkB,KAAS0kB,yFAhvBtB1kB,KAAS2hB,QAAA,UA4vBX,IA5vBET,EAASpV,UAswBb6Y,SAAQ,SAACC,GACP,MAAI5D,GAAA6D,WAAgB7kB,KAAKuhB,IAAAqD,qCAYzB,MAnxBE5D,GAAA8D,WAAS9kB,KAkxBbuhB,IAAAwD,GACM/kB,MAnxBFkhB,EAASpV,UA6xBbkZ,YAAI,SAAGC,GAEL,MADAjE,GAAIkE,cAAallB,KAAAuhB,IAAA0D,GACVjlB,MA/xBLkhB,EAASpV,UAwyBbqZ,KAAI,WAEF,MADAnlB,MAAKglB,YAAS,cACPhlB,kCA1yBL,mCAASA,yCAAT,yCAASA,kMAAT,MAASA,MAAAolB,UAi3Bb,SAAUC,EAAAC,8EAkCLxZ,UAAMsZ,UAAA,SAAAG,EAAAF,EAAAC,GACL,GAAQ1iB,SAARyiB,yGASU,SAADA,EACZ,UAMAC,oDAeF,IAAAE,GAAAxlB,KAAAuhB,IAAAkE,MAAAF,6GAwBCrE,EAAIpV,UAAU4Z,cAAC,WAEf,GAAIC,GAAI,cAQJC,EAAkB,IAEnBC,EAAAjjB,MAEH5C,MAAKyf,GAAG,aAAa,SAASgB,GAEA,IAAxBA,EAAMqF,QAAQ9kB,SAEjB+kB,EAAUlG,EAAY,cAAAY,EAAAqF,QAAA,2BAIrBD,GAAc,KAIZ7lB,KAAAyf,GAAA,YAAa,SAAMgB,MAEtBA,EAAAqF,QAAA9kB,OAAA,EACA6kB,GAAA,aAID,GAAAG,GAAAvF,EAAAqF,QAAA,GAAAG,MAAAF,EAAAE,uDAIMC,GAAeC,8BAOrBN,GAAI,2BAKF7lB,KAAAyf,GAAI,cAAY2G,4CAOfP,KAAA,EAAA,CAEF,GAAAQ,IAAA,GAAAxkB,OAAAE,UAAA4jB,oDAoCDzE,EAAMpV,UAAGwa,oBAAA,kEAORC,GAAAhG,EAAAvN,KAAAhT,KAAAue,SAAAve,KAAAue,SAAAiI,oBAEGC,EAAW7jB,uCAGf2jB,IAIFvmB,KAAO0mB,cAAaD,GAErBA,EAAAzmB,KAAA2mB,YAAAJ,EAAA,gGA3jCGvmB,KAAAyf,GAAS,cAqkCbmH,KAYE1F,EAAQpV,UAASvI,WAAa,SAAA6Q,EAAA4H,yFAa9B,qDAAAzZ,uFA9lCE,sDAASA,yCA8nCX6R,EAAAmM,EAAOvN,KAAAhT,KAAWoU,0EAWlB,sDAAAyS,yFAzoCE,uDAASA,qCAAT,4DAASC,odAqtCTC,GAAArhB,EAAAqhB,MAAArhB,EAAAqhB,MAAA/mB,KAAA8L,UAAAib,MAAA/mB,KAAA8L,UAAAib,MAAA,qDAeCjb,UAAAnB,OAAAsU,OAAAjf,KAAA8L,WAGHkb,EAAOlb,UAAOiC,YAAAiZ,IAvuCZC,OAAS/F,EAAA+F,MA2uCf,KAAS,GAACC,KAAAxhB,oBACcwhB,iXCnxCD5U,GAAA,MAAkBA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,oHACV,kBAAA0M,IAAyC,OAAzCA,EAAyC,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,2IAIhD9d,EAAA,8FAEKA,EAAA,sFAEAA,EAAA,qDACN,+XAaPA,EAAA,kDAAAgd,EAAAiJ,4BAAV/I,EAAUpe,KAQdonB,GAEI5H,EAASvc,MAAEjD,KAAA2D,yBAuBfyjB,EAAAtb,UAAA6T,SAAA,wDAEF0H,UAAA,slDCpDMnmB,EAAA,qBAAAgd,EAAgBC,8BAAhBC,EAAgBpe,KAAAsnB,GAUnBhJ,EAAArb,MAAAjD,KAAA2D,yBASG2jB,EAAaxb,UAAA0S,cAAoB,WACjC,MAAK,0BAA4BF,EAAExS,UAAA0S,cAAAzd,KAAAf,0CASzCA,KAAAmhB,QAAiBoG,gHAEjBvnB,KAAAwnB,YAAA,6PCvCqBlV,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAvBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,2cAST2O,EAAW/f,EAAA,mFAgBblB,KAAIynB,gBACFznB,KAAAyf,GAAAzf,KAAWue,SAAA,iBAAAve,KAA8BynB,6BAU3CC,EAAG5b,UAAiB6T,SAAW,WAC/B,GAAAI,GAASP,EAAC1T,UAAA6T,SAAA5e,KAAAf,KAAA,OACXqnB,UAAA,uCAGCrnB,MAAI2nB,WAAc3G,EAAArB,SAAU,OAC1B0H,UAAW,mBACZpH,UAAM,kCAAAjgB,KAAAkgB,SAAA,eAAA,UAAAlgB,KAAAkgB,SAAA,UAEN0H,YAAA,sBApCC5nB,KAAW2nB,2BA0CFF,cAAW,kQCnDJnV,GAAc,GAAAA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACfE,GAAiB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAvB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,qGAUCiC,GASV4G,EAAK,SAASvJ,GAGhB,QAAOuJ,GAAStJ,EAAAlc,GACd+b,EAAcpe,KAAA6nB,GAEdvJ,EAAIvd,KAAOf,KAAMue,EAAAlc,QAEhBod,GAAAlB,EAAM,eAAAve,KAAA8nB,QAGNvJ,EAAAwJ,OAAAxJ,EAAAwJ,MAAA,yBAAA,GACJ/nB,KAAAgoB,SAAA,4HArBGhoB,KAAUglB,YA6Bd,yBAnBG6C,EAAAvJ,KA8BFxS,UAAA0S,cAAA,6EASU1S,UAAK8U,YAAA,wHAcV,KAAAqH,GAAajoB,KAAGmhB,QAAK+G,QACzBC,EAAS,EACF,IAAAF,EACNE,EAAA,4DAlEWnoB,KAAAkgB,SAAAkI,2DAgFD,IAAAznB,w0BCjFTud,EAAUC,4DAgBZne,KAAAyf,GAAAlB,EAAA,OAAAve,KAA2BqoB,YAC5BroB,KAAAyf,GAAAlB,EAAA,QAAAve,KAAAsoB,2BASGC,EAAKzc,UAAY0S,cAAG,iBACf,oBAAAF,EAAAxS,UAAA0S,cAAAzd,KAAAf,gEA3BLA,KAAAmhB,QAAUqH,OAuCZxoB,KAAKmhB,QAASsH,SAvCZF,EAAUzc,UAgDduc,WAAW,WACTroB,KAAKglB,YAAY,cACjBhlB,KAAKgoB,SAAS,eACdhoB,KAAKwnB,YAAY,sBAQNc,YAAU,8TCrERhW,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,uEACJ,KAAAG,YAA8BD,IAAA,KAAA,IAAA7a,WAAA,wXACzC,wCACD,sBAAT2kB,EAAGxK,EAAAyK,6GAUa1H,GASxB2H,EAAgB,SAAmBC,yFAUnC7oB,KAAIyf,GAAElB,EAAG,YAAAve,KAAM8oB,oEAThBF,EAAAC,wEA6BA,0FAvCG9I,EAAAgJ,YAAA/oB,KAAsBgpB,UAuCzBjJ,GASC6I,EAAW9c,UAAA0S,cAAc,WACzB,MAAI,qBAA0BqK,EAAG/c,UAAA0S,cAAAzd,KAAAf,oMAqBlC,OAAAipB,gDAUCjpB,KAAI+f,KAAKmJ,aAAQ,gBAAgBlpB,KAAAue,SAAA4K,mBAShCrd,UAAA8U,YAAA,kBAEFwI,GAAAppB,KAAAue,SAAA4K,wFAUAnpB,KAAAue,SAAA4K,aAAAE,IASCT,EAAqB9c,UAChBwd,cAAc,WAIpB,MAAAtpB,MAAAkjB,SAAA,eAAAljB,KAAAkjB,SAAAK,eAAAvjB,KAAAkjB,SAAAK,cAAA,eASGqF,EAAiB9c,UAAYyd,sBAAE,iBAC1BvpB,MAAAue,SAAAwJ,OAAA/nB,KAAAue,SAAAwJ,MAAA,sBAAA/nB,KAAAspB,iBAAAtpB,KAAAspB,gBAAAtoB,OAAA,wEA7HLhB,KAAAglB,YAAA,cAyIAhlB,KAAKgoB,SAAS,iBASLlc,UAAA0d,YAAsB,q9BCrJ/BtL,EAAoBC,GAStBsL,EAAM,SAAQC,GAGd,QAAKD,GAAYlL,EAAAlc,YAGlB,IAAAsnB,GAAAtnB,EAAA,oEAfGrC,KAAA2pB,MAAAA,EAuBF3pB,KAAA4pB,KAAAA,EAED5pB,KAAAyf,GAAAlB,EAAA,aAAAve,KAAA8nB,sBAQC2B,EAAmB3d,UAAS8U,YAAc,WAC3C8I,EAAA5d,UAAA8U,YAAA7f,KAAAf,6XC5CkBsS,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAA1BR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,+eAUM2O,2CAcjBzB,EAAOze,KAAAf,KAAAue,EAAMlc,GACXrC,KAAAyf,GAAAlB,EAAW,WAAAve,KAAmB8nB,sDAf9B,MAAAtI,GAAe1T,UAyBnB6T,SAAM5e,KAAAf,KAAA,OACJqnB,UAAY,oBACZpH,UAAY,wCAA2BjgB,KAAAkgB,SAAA,UAAA,sDAWvC,GAAI2J,GAAW7pB,KAAKmhB,QAAG0I,kEAGvBzH,EAAcpiB,KAAMuhB,IAAAa,SAGlB0H,EAAW,SAAYC,EAAAC,eAEvB,OAAW,MAANC,GAAM,EAAA,EAAAA,GAAA,qCAOZ,GAAAtpB,GAAA,EAAAA,EAAAkpB,EAAA7oB,OAAAL,IAAA,6BAGIupB,EAAQ9H,EAASzhB,EAErBupB,KACFA,EAAAlqB,KAAAuhB,IAAAwH,YAAA/H,EAAArB,iCAIHuK,EAAAzE,MAAA0E,MAAUL,EAAAE,EAAiBvlB,EAAC2lB,+QCzEP9X,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAA1BR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,cACKuM,EAAAD,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAzB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,yMAaRqL,EAAgBnM,EAAAoM,GAOlBC,EAAmB,SAAA/K,WAGpB+K,GAAAhM,EAAAlc,0DAVGkc,EAAAkB,GAAA,QAAgB,WAmBlB2D,EAAO3D,GAAAlB,EAAAiM,WAAMC,gBAAQ1K,KAAC,YAAOsK,EAAA,WAAA9J,EAAAvN,KAAAoQ,EAAAA,EAAAsH,iBAAA,aAX3B5L,GAAKyL,EAAU/K,KAsBlB1T,UAAA6T,SAAA,wDA9BG0H,UAAA,uBAoCFkD,EAAUze,UAAa4e,gBAAmB,SAAQjK,GACnD,GAAAkK,GAAA3qB,KAAAmhB,QAAAwJ,yCArCGC,EAAgBnK,EAAAwF,MAuCpBjF,EAAA6J,eAAiB7qB,KAAA+f,KAAA+K,YAAApN,IAEhB1d,MAAA8nB,OAAAiD,EAAAH,wGAIYA,EAAgB,+bC3DXtY,GAAA,GAAmBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAzBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACSsM,GAAA,KAAAC,YAA4BD,IAAA,KAAA,IAAA7a,WAAA,ydAU7Cma,EAAe8M,4DAAfhrB,KAAAirB,iBAgBFjrB,KAAAyf,GAAOlB,EAAA,aAAMve,KAAAirB,gBACX1M,EAAA+F,MAAW/D,EAAAvN,KAAAhT,KAAAA,KAAAirB,iCAjBXnf,UAAe6T,SAAA,qGA6BrBM,UAAA,wCAA4BjgB,KAAmBkgB,SAAA,YAAiB,mhBCvCnCtB,GAAA,KAAAC,YAAyBD,IAAA,KAAA,IAAA7a,WAAA,mdAWjCma,EAAAgN,4BAAf9M,EAAepe,KAAAmrB,GAUf3L,EAASvc,MAAEjD,KAAA2D,yDAWjB,MAAA6b,GAAA1T,UAAU6T,SAAA5e,KAAkBf,KAAA,uUCjCNsS,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACdE,GAAA,KAAAC,YAAwBD,IAAA,KAAA,IAAA7a,WAAA,6ZAEhC,sBAARka,EAAEC,EAAAC,OACS,oCACJ,mIAUND,EAAAoB,yCAAP8L,EAAOrqB,KAAAf,KAcXue,EAAQlc,GACNrC,KAAAyf,GAAOlB,EAAA,aAAMve,KAAQqrB,sBACnB9M,EAAA+F,MAAW/D,EAAAvN,KAAAhT,KAAAA,KAAAqrB,kHAhBXhE,UAAO,wBA6BPiE,aAAiB,oEA7BjB,GAAAvB,GAAO/pB,KAwCXmhB,QAAAoK,YAAUvrB,KAAAmhB,QAAGqK,WAAAC,YAAAzrB,KAAAmhB,QAAAsK,aACXzrB,MAAIuhB,IAAA2H,aAAe,iBAAqC,IAAhBlpB,KAAG0rB,cAAqBC,QAAG,IACnE3rB,KAAAuhB,IAAO2H,aAAe,iBAAY0C,EAAA,WAAA7B,EAAA/pB,KAAAmhB,QAAAwJ,cASlCkB,EAAA/f,UAAA4f,WAAM,mEAEN,OAAKzB,IAAQ,EAAS,EAACA,oFArDrBjqB,KAAOmhB,QAAAoK,WAgEX,0MAkBEvrB,KAAKmhB,QAAQsK,YAAUV,iFAlFrB/qB,KAAOmhB,QAAAoK,WA6FX,GACMvrB,KAAC8rB,iBACN9rB,KAAAmhB,QAAAqH,UASA1c,UAAAigB,YAAA,mEAaHF,EAAQ/f,UAAUkgB,SAAW,2hCC5HvB9qB,EAAA,wBAAAgd,EAAmBC,8BAAnBC,EAAApe,KAAmBisB,GAUtBC,EAAAjpB,MAAAjD,KAAA2D,yBASCsoB,EAASngB,UAAM0S,cAAQ,WACrB,MAAA,6BAA+B0N,EAAApgB,UAAA0S,cAAAzd,KAAAf,6EAUrCqnB,UAAArnB,KAAAwe,+sBC9BML,GAAMjd,EAAA,wDAANkd,EAQJpe,KAAAmsB,GAEC3M,EAAAvc,MAAAjD,KAAA2D,yBASCwoB,EAAArgB,UAAO0S,cAAM,WACX,MAAA,cAAgBgB,EAAe1T,UAAA0S,cAAAzd,KAAAf,2zBClB9Bke,EAAuBC,KASxB,SAAAiO,GAGF,QAAKC,GAAS9N,EAAyBlc,GACxC+b,EAAApe,KAAAqsB,wFASAD,EAAArrB,KAAAf,KAAAue,EAAAlc,oaC/BiC,KAAAwc,YAAiCD,IAAA,KAAA,IAAA7a,WAAA,ieAW/DuoB,EAAcpO,EAAAqO,6CAchBC,EAAAzrB,KAAAf,KAAAue,EAA8Blc,EAAAiiB,GAC/BtkB,KAAAuhB,IAAA2H,aAAA,aAAA,+BASCuD,EAAA3gB,UAAA0S,cAAY,8EAUViO,EAAW3gB,UAACgc,OAAA,cACb4E,GAAA,CACFF,GAAA1gB,UAAAgc,OAAA/mB,KAAAf,2HASCA,KAAI2sB,2CAWR,GAAAC,gFAGAA,EAAA3kB,KAAA,GAAAqkB,GAA4B,WAAgBtsB,KAAEmhB,SAAe0L,KAAC7sB,KAAA8sB,mWCvExCxa,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACZE,GAAA,KAAAC,YAA2BD,IAAA,KAAA,IAAA7a,WAAA,6ZAExC,+BACI7C,EAAA,6BAAT6rB,EAAG7O,EAAA8O,KACK9rB,EAAA,iCAAR+rB,EAAE/O,EAAAgP;A/EId,4B+EyBIV,EAAAzrB,KAAAf,KAAAue,EAA8Blc,EAAAiiB,GAC/BtkB,KAAAuhB,IAAA2H,aAAA,aAAA,+BASCiE,EAAYrhB,UAAG0S,cAAA,8EAWX2O,EAAMrhB,UAAKshB,YAAA,WACT,GAAAR,MAEHS,EAAArtB,KAAAmhB,QAAAmM,mBAGH,MAAOV,gHAWP,MAAIA,IAUEO,EAAArhB,UAAAyhB,WAAO,WAKP,IAAA,GAJEF,GAAKrtB,KAAAmhB,QAAamM,mBACX1qB,uBAGTjC,EAAA,EAAAG,EAAAusB,EAAgBrsB,OAAMF,EAAAH,EAAAA,IAAA,CACtB,GAAA6sB,GAAMH,EAAA1sB,QACP,OAAAX,KAAA8sB,MAAA,CACF,GAAAU,EAAAC,KAQC,CACAC,EAAYF,CACV,OATLA,EAAA,KAAA,SAGG1M,EAAS,WAAWvd,WAAAgd,EAAAvN,KAAAhT,KAAA,WAClBA,KAAGutB,eACF,YAQgCvtB,KAAAipB,IAUnC,iBARFA,EAAK,GAAKP,GAAc,WAAU1oB,KAAMmhB,SACtC8H,EAAG0E,YAAW5E,YAAA/H,EAAArB,SAAA,iCAEdM,UAAS0C,EAAA,WAAA3iB,KAAA8sB,OACPhN,SAAO,OAIT4N,EAAe,CAIjB,IAAK,aAFHE,EAAKhrB,OAEFjC,EAAQ,EAACG,EAAM2sB,EAAAzsB,OAAAF,EAAAH,EAAAA,IAAA,CACrBitB,EAAAH,EAAA9sB,EAEG,IAAIktB,GAAC,GAAMZ,GAAY,WAAAjtB,KAAAmhB,SACrBqM,MAAQE,EACbE,IAAAA,GAGFhB,GAAA3kB,KAAA4lB,KA1GGvL,SAAAuL,gDAiHN7tB,KAAAmlB,0dCrIsB7S,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEACtBG,EAAAD,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAzB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,2HAUa8O,GASvBC,EAAuB,SAAIrE,GAG3B,QAAKqE,GAAcxP,EAAAlc,GACnB+b,EAAepe,KAAA+tB,EAEhB,IAAAP,GAAAnrB,EAAA,uGAQCrC,KAAAwtB,MAAAA,EACAxtB,KAAK4tB,IAAAA,EACLJ,EAAKQ,iBAAgB,YAAWzN,EAAAvN,KAAAhT,KAAAA,KAAA8nB,eAfhChJ,GAAAiP,EAAcrE,GAVZqE,EAAqBjiB,UAiCzB8U,YAAM,WACJ8I,EAAU5d,UAAS8U,YAAA7f,KAAAf,MACnBA,KAAImhB,QAAAsK,YAAmBzrB,KAAO4tB,IAACK,8CASpBniB,UAAAgc,OAAqB,62BC7C9B5J,EAAoBC,GASpB+P,EAAgB,SAAA9B,mBAIlBhO,EAAApe,KAAAkuB,mFAWA9B,EAAkBrrB,KAAMf,KAAGue,EAAUlc,GACrCrC,KAAImuB,UAAQ,SAfVrP,GAAMoP,EAAY9B,GAyBpB8B,EAAcpiB,UAAUsiB,mBAAA,kBACzBf,GAAArtB,KAAAue,SAAA+O,oDAIH,IAAAE,EAAA,OAAUxtB,KAAAwtB,MAAkB,MAAwB,YAAxBA,EAAA,KAAwB,4wBCvC9CvP,EAAeC,EAAAC,6CAcjBqO,EAAAzrB,KAAAf,KAAAue,EAA+Blc,EAAAiiB,GAChCtkB,KAAAuhB,IAAA2H,aAAA,aAAA,2ZC1BmB5W,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEACtBG,EAAAD,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAzB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,+MAYOd,EAAAmQ,KAShB,SAAAxF,GAGC,QAAAyF,GAAO/P,EAAAlc,KACRrC,KAAAsuB,GAEDzF,EAAI9nB,KAAaf,KAAMue,EAAKlc,EAE5B,IAAAgrB,GAAOrtB,KAAAmhB,QAAiBmM,YAMzB,IAJKttB,KAAC4sB,MAAU5rB,QAAU,GACvBhB,KAAA2sB,OAGHU,EAAA,CAvBG,GAAAkB,GAAehO,EAAAvN,KA0BnBhT,KAAAA,KAAW8nB,UAACkG,iBAAK,cAAAO,oCAEfvuB,KAAKmhB,QAAM1B,GAAA,UAAA,kDAEX4N,EAAImB,oBAAsB,WAAaD,oBAMvCD,EAAcxiB,UAAMshB,YAAkB,WACpC,GAAAR,GAASjpB,UAAW3C,QAAE,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,EAGtBipB,GAAI3kB,KAAK,GAACwmB,GAAwB,WAAAzuB,KAAAmhB,SAAA0L,KAAA7sB,KAAA8sB,QAE9B,IAAAO,GAAOrtB,KAAEmhB,QAAKmM,iBAEjBD,EACF,MAAAT,EAGF,KAAA,GAAAjsB,GAAA,EAAAA,EAAA0sB,EAAArsB,OAAAL,IAAA,iCAIHisB,EAAA3kB,KAAA,GAAA8kB,GAA4B,WAAA/sB,KAAiBmhB,2UCjEvB7O,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEACtBG,EAAAD,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAzB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,2BACK,wJAWbd,EAAiBwQ,GAOnBC,EAAmB,SAAMjF,mBAIzB,GAAItG,GAAMpjB,IAEVoe,GAAYpe,KAAA2uB,EACV,IAAAnB,GAAInrB,EAAmB,sBAIrBA,GAAO,MAAAmrB,EAAmB,OAACA,EAAU,UAAe,YACnD,SAAAA,EAAA,YAAA,YAAAA,EAAA,sHASDpK,EAAM3D,GAAA,UAAW,kDAWjB4N,GAAYzqB,SAAPyqB,EAAOuB,WACV,WACA,GAAAnO,GAAM7d,uCAGR,GAA4B,gBAArBke,GAAmB,WAAE+N,UAE/BpO,EAAA,GAAAK,GAAA,WAAA+N,MAAA,UACF,MAAA/V,yEA/CGuU,EAAAyB,cAsDJrO,cA9CE3B,GAAQ6P,EAAmBjF,GA0DvBiF,EAAS7iB,UAAA8U,YAAA,SAAAH,MACVoM,GAAA7sB,KAAAwtB,MAAA,gCAKC,IAFA9D,EAAM5d,UAAU8U,YAAU7f,KAAAf,KAAAygB,GAE1B4M,MAEH,GAAA1sB,GAAA,EAAAA,EAAA0sB,EAAArsB,OAAAL,IAAA,CACF,GAAA6sB,GAAAH,EAAA1sB,gDAQoB,qXChGF2R,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAA1BR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACQsM,GAAA,KAAAC,YAA4BD,IAAA,KAAA,IAAA7a,WAAA,0dAU7Cma,EAAkB8M,2CAAlBxL,EAAAze,KAAkBf,KAAAue,EActBlc,GAEIrC,KAAAyf,GAAAlB,EAAW,aAAAve,KAAA+uB,+BAUVjjB,UAAA6T,SAAA,uDAED0H,UAAC,iDAYH,yKADAtH,EAAAgJ,YAAgB/oB,KAAC2nB,YACb5H,KAQOjU,UAAAijB,cAAkB,+eC3DZzc,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAA1BR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACQsM,GAAA,KAAAC,YAA4BD,IAAA,KAAA,IAAA7a,WAAA,0dAU7Cma,EAAe8M,yBAYlBgE,GAAAzQ,EAAAlc,8BASCrC,KAAIyf,GAAElB,EAAG,aAAMve,KAAA+uB,eACb/uB,KAAAyf,GAAAlB,EAAW,iBAAAve,KAAA+uB,qBAZbjQ,GAAQkQ,EAAQxP,KAsBb1T,UAAA6T,SAAA,uDAED0H,UAAC,6CAYD,2LADFtH,EAAAgJ,YAAc/oB,KAAA2nB,YACR5H,GAQViP,EAAAljB,UAAUijB,cAAkB,sBACb5N,QAAAwJ,kYClEMrY,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAA1BR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACQsM,GAAA,KAAAC,YAA4BD,IAAA,KAAA,IAAA7a,WAAA,0dAU7Cma,EAAoB8M,2CAApBxL,EAAAze,KAAAf,KAAoBue,EAcxBlc,GAEIrC,KAAAyf,GAAAlB,EAAW,aAAAve,KAAA+uB,+BAUVjjB,UAAA6T,SAAA,uDAED0H,UAAC,mDAYD,mMADAtH,EAAAgJ,YAAM/oB,KAAa2nB,YACb5H,KAxCNjU,UAAoBijB,cAAA,6EAmD1BE,EAAUrD,EAAkB,WAAA5rB,KAAAmhB,QAAwB+N,iCACrCjP,UAAA,kCAAoBkP,EAAA,YAAAF,uuBCrD7BhR,EAAWC,EAAAC,8BAAXC,EAAWpe,KAQfovB,GAEI5P,EAASvc,MAAEjD,KAAA2D,4WCpBK2O,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEACtBG,EAAAD,GAAmB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAzB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,yDAGUqQ,gGAUTnR,EAAAoR,yCAATlE,EAASrqB,KAAAf,KAcbue,EAAQlc,GACNrC,KAAAyf,GAAOlB,EAAA,eAAMve,KAAQqrB,sBACnB9M,EAAA+F,MAAW/D,EAAAvN,KAAAhT,KAAAA,KAAAqrB,kHAhBXhE,UAAS,kCA6BTiE,aAAa,uGAcbtrB,KAAAmhB,QAASoO,OAAAvvB,KAAAwvB,kBAAA/O,mEA3CA,EAwDZzgB,KAAAmhB,QAAAoO,YASAzjB,UAAAigB,YAAA,0DASC0D,EAAI3jB,UAAckgB,SAAS,WAC3BhsB,KAAKmhB,QAAIoO,OAAAvvB,KAAamhB,QAAAoO,SAAiB,KAUzCE,EAAS3jB,UAAEuf,qBAAa,uDAG1BrrB,MAASuhB,IAAC2H,aAAU,gBAAcqG,yZCpGZjd,GAAA,MAAiBA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,weAmBnCod,GATExR,EAAayR,GASC,SAAWnQ,WAGxBkQ,GAAMnR,EAAAlc,GACL+b,EAAKpe,KAAY0vB,KAElB3uB,KAAAf,KAAAue,EAAAlc,4KAfDrC,KAAAglB,YAAa,sBAUblG,GAAI4Q,EAAalQ,mCA4BvB,MAAAA,GAAA1T,UAAU6T,SAAA5e,KAAkBf,KAAA,6xBCzCtBke,EAAWC,8BAAXC,EAAWpe,KAQf4vB,GAEIpQ,EAASvc,MAAEjD,KAAA2D,+ZClBAib,GAAiB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,ujBAaZma,EAAA2R,+BA2ChB,QAAK/G,KACJvK,EAAAwJ,OAAAxJ,EAAAwJ,MAAA,yBAAA,8BAGD/nB,KAAKglB,YAAY,8EAlCf5G,GAAQpe,KAAQ8vB,GAGjBltB,SAAAP,EAAA0tB,SACF1tB,EAAA0tB,QAAA,GAImBntB,SAApBP,EAAQ2tB,sBAGR3tB,EAAA0tB,WAGgB,GAMZ1tB,EAAI4tB,UAAU5tB,EAAA4tB,gBACfA,UAAMD,WAAA3tB,EAAA2tB,WAENjvB,KAAAf,KAAAue,EAAAlc,GAGHrC,KAAAyf,GAAAlB,EAAgB,eAAYve,KAAAkwB,cAC5BlwB,KAAKyf,GAAGlB,EAAQ,YAAave,KAAAkwB,oJAxC3BlwB,KAAAyf,GAAAzf,KAAAiwB,WAyDJ,iBAAa,QAAA,WACXjwB,KAAIglB,YAAA,kFAkBF,uGAAA,0BAAoB6D,EAAA/c,UAAA0S,cAAAzd,KAAAf,MAAA,IAAAmwB,wJAmBvB,OA/FGlH,GAAA3G,SAAgB8N,GA8FlBpwB,KAAAiwB,UAAAG,EACDnH,eAQYrI,YAAgB,oeCrHTtO,GAAA,GAAgBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAtBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,oeAUE2O,4DAgBdjhB,KAAI8nB,SACF9nB,KAAAyf,GAAAlB,EAAW,QAAAve,KAAA8nB,wIAjBX9nB,MAAA2nB,WAAY3G,EA+BhBrB,SAAM,OACJI,EAAAgJ,YAAe/oB,KAAG2nB,YAEjB5H,0PC7Ca,GAAAsQ,iBAAA,MAAAC,IAAA,SAAApvB,EAAAzB,EAAAD,GAIlB,yKAEAA,EAAAif,YAAqB,CAInB,IAAA8R,GAAKrvB,EAAmB,qBAExBmf,EAAKQ,EAAuB0P,GAE9BC,EAAY,YAEZA,GAAY1kB,UAAU2kB,oBAEpB3kB,UAAA2T,GAAA,SAAAtU,EAAAiJ,GAGF,GAAAsc,GAAY1wB,KAAAguB,gBACVhuB,MAAAguB,iBAAuB1gB,SAAIxB,UAC3BuU,EAAAZ,GAAAzf,KAAAmL,EAAAiJ,4BAGAoc,EAAQ1kB,UAASkiB,iBAAcwC,EAAA1kB,UAAA2T,GAE/B+Q,EAAI1kB,UAAY+X,IAAK,SAAU1Y,EAAAiJ,GAC7BiM,EAAKwD,IAAG7jB,KAAAmL,EAAAiJ,MAENtI,UAAA0iB,oBAAAgC,EAAA1kB,UAAA+X,IAEJ2M,EAAQ1kB,UAAOoY,IAAS,SAAO/Y,EAAAiJ,sBAI9BtI,UAAA6V,QAAA,SAAAlB,kBAGD,iBAAAA,QAEFtV,KAAYA,uHC7CiBqlB,EAAA1kB,UAAA6V,+KAU3B,IAAAgP,GAAWzvB,EAAU,eAEpB0vB,EAAA1S,EAAAyS,GASC7R,EAAC,SAAAC,EAAAC,qCAEH,KAAI,IAAAjb,WAAY,iEAAAib,MAGflT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WACDiC,qFA6BG,SAAAiR,GACD,GAAA6R,GAAoBltB,UAAA3C,QAAgB,GAAiB4B,SAAVe,UAAU,MAAaA,UAAA,GAEjEob,EAAA,WACDC,EAAU/b,MAAAjD,KAAA2D,YAEVmtB,yBAG8B,kBAAtBD,GAAU9J,gIAId8J,EAAQ9iB,cAAsBpD,OAAAmB,UAAAiC,cAChCgR,EAAS8R,EAAkB9iB,aAE9B+iB,EAAAD,0BAED9R,EAAO8R,OAGM7R,6OCCZ,kCAlCC+R,KAkBAC,wHAIJ,0BAA2B,uBAAa,0BAAA,0BAAA,yBAAA,0BAEtC,0BAAgB,yBAAc,iCAAA,yBAAA,yBAAA,0BAE5B,uBAAM,sBAAA,uBAAA,uBAAA,sBAAA,uBAET,sBAAA,mBAAA,sBAAA,sBAAA,qBAAA,6BAGGC,EAAYruB,OAGbjC,EAAA,EAAAA,EAAAqwB,EAAAhwB,OAAAL,mCAGYA,4oBCpETud,EAAcmB,iBAAd,QAAA6R,KAQF9S,EAAOpe,KAAAkxB,KAEJjuB,MAAAjD,KAAA2D,wSCZL,SAAIua,GAA0B5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,sBAE7BgN,GAAiBpe,EAAI,iBAEpB2e,EAAe3B,EAAKoB,GAMpB6R,EAAY,QAAGA,GAAWtwB,GAC3B,gBAAAA,GACDb,KAAAa,KAAAA,+JA6BFswB,EAAWrlB,UAAUslB,QAAS,GAa5BD,EAAGrlB,UAAAyO,OAAA,KAEH4W,EAAGE,YAAA,mBACH,mIAQApwB,EAAA,iCACDO,EAAA,gkBCzEqB8Q,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEACtBG,EAAWD,GAAA,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,wYAChButB,EAAGpT,EAAAqT,OACK,mBAARtT,EAAEC,EAAAC,yHAWED,EAAAsT,GAOZC,EAAQ,SAAgBnT,WAGzBmT,GAAAlT,6GAQCve,KAAIyf,GAAI,UAAQzf,KAAAwgB,0DAEhBxgB,KAAIuhB,IAAK2H,aAAM,OAAA,gBAZfpK,GAAQ2S,EAACnT,oEAyBTte,KAAK+iB,YAAc/iB,KAAGipB,MAGpBjpB,KAAAipB,KAASA,OACV3G,SAAU2G,wEArCCjpB,KAAA4sB,OAgDd5sB,KAAU4sB,MAAA5rB,OAAA,GACRhB,KAAImlB,QAWJsM,EAAK3lB,UAAayhB,WAAc,mDAI9BvtB,KAAKkjB,SAAWwO,OACdzI,EAAA0E,YAAa5E,YAAc/H,EAACrB,SAAA,MAC7B0H,UAAA,iBACFpH,UAAA0C,EAAA,WAAA3iB,KAAAkjB,SAAAwO,wIAqBE5lB,UAAAshB,YAAA,6CAxFD,MAAA9O,GAAUxS,UAiGd6T,SAAa5e,KAAAf,KAAA,OACXqnB,UAAIrnB,KAAAwe,2OAlGFiT,EAAU3lB,UA4Id4T,WAAW,qMA8BP+R,EAAI3lB,UAAK0U,eAAe,SAAAC,GAGlB,KAANA,EAAMC,OAAiB,KAADD,EAACC,OACxB1gB,KAAA2xB,eACF3xB,KAAA4xB,2FA/KG5xB,KAAU4xB,gBAwLRnR,EAAME,qGAxLR3gB,KAAAuhB,IAAU2H,aAoMd,gBAAa,GACPlpB,KAAC4sB,OAAA5sB,KAAiB4sB,MAAM5rB,OAAA,GAC5BhB,KAAK4sB,MAAK,GAAA7M,KAAA8R,ydCnNKjT,GAAe,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,ocAUpBma,EAAAoB,4DAARtf,KAAAmuB,SAAQ9rB,EAeJ,6DAfJ,MAAQic,GAAAxS,UA2BZ6T,SAAW5e,KAAAf,KAAA,KAAA6f,EAAG,YACZwH,UAAa,gBACdpH,UAAAjgB,KAAAkgB,SAAAlgB,KAAAkjB,SAAA,eASC4O,EAAIhmB,UAAU8U,YAAA,WACZ5gB,KAAAmuB,UAAK,qCAUX4D,yWC5DqBzf,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAvBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,cACKuM,EAAAD;ArGSpB,AqGToC,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAtB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,8CACFf,EAAMC,EAAAC,8DASZoS,EAAIrvB,EAAA,wDAAJkd,EAQJpe,KAAOgyB,GAELxS,EAAUvc,MAAGjD,KAAS2D,0EAVpBmf,EAAIrD,GAqBR,QAAQc,EAAAvN,KAAAhT,KAAA,WACNA,KAAIiyB,oDAYJ,GAAAC,GAAclyB,KAASkjB,SAASgP,eAAM,IACpClyB,MAAA2nB,WAAM3G,EAAcrB,SAAGuS,GACvB7K,UAAM,iEAGR8K,OAAUnyB,KAAA2nB,WACXN,UAAA,kCAxCOrnB,KAAA2nB,2BA4CS,SAAAlH,kSCrDEnO,GAAA,GAAAA,GAAiBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACnBE,GAAe,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,0YACtBka,EAAMC,EAAAC,OACG,mBAATmC,EAAGpC,EAAAwQ,OACK,iBAAR5N,EAAE5C,EAAA6C,OACQ,qBAAVV,EAAIQ,EAAA0P,yBACJvP,EAAAH,EAAOI,4FAIamR,wBACpBC,EAAUnU,EAAAoU,OACI,uCACH,2FAEJ,0HAKKhT,uCACmBiT,oDACdC,qEAGN,6CACE,0GAIPtU,EAAiBuU,8IAyC/B,GAAArP,GAAUpjB,8GAqBRqC,EAAMsd,UAAU,2HAclB,KAAI,IAAQ/e,OAAA,0HAEVZ,MAAA0Q,IAAIA,EAGF1Q,KAAA0yB,cAAAhiB,GAAsBsQ,EAAA2R,gBAAiBjiB,yCAK1CrO,EAAA6f,sBAGG,GAAC0Q,kEAGAA,EAAkBne,EAAAuJ,eAAa3b,EAAA6f,UAAAzN,2MAmC/Boe,EAAA,WAAA7yB,KAAAkjB,SAEJ7gB,GAAAywB,qBAEG,GAACA,GAASzwB,EAAAywB,OAEVnoB,QAAC8H,oBAAeqgB,GAAAnW,QAAA,SAAAlI,kGAUlBzU,KAAAkjB,SAAKK,cAASwP,2BAKfC,QAAA,UAAAtiB,EAAAuT,SAAAjG,6BAIAhe,KAAAizB,8WAxHQnU,GAXPoU,EAWQ1T,GAkKyB0T,EAAApnB,UAASgW,QAAc,gBAAEH,QAAA,WACzB3hB,KAAA6jB,IAAK,0BAExC7jB,KAAImzB,SAAYrI,WAAA/H,YAAA/iB,KAAAmzB,UAEhBD,EAAAE,QAAApzB,KAAAohB,KAAM,KACPphB,KAAA0Q,KAAA1Q,KAAA0Q,IAAA6N,kHAUCiB,EAAU1T,UAASgW,QAAA/gB,KAAAf,OAUnBkzB,EAAApnB,UAAO6T,SAAmB,6EAKvB0T,gBAAM,SACL3iB,EAAA2iB,gBAAgB,6IAmBpB3iB,EAAI3N,IAAA,aACJ2N,EAAI2W,UAAO,kCAKXrnB,KAAKgoB,SAAO,yEAMZ,IAAIsL,GAAiBhT,EAAO,WAAaiT,cAAA,4DAqBzC,wEAhBCpJ,MAAAnqB,KAAAkjB,SAAAiH,OACDnqB,KAAIwzB,OAAAxzB,KAAakjB,SAASsQ,wCAE1BxzB,KAAKyzB,YAASzzB,KAAAkjB,SAAAuQ,6HAaP1T,GAjQLmT,EAAMpnB,UA2QVqe,MAAM,SAAAhjB,GACJ,MAAOnH,MAAKolB,UAAU,QAAQje,mCA5Q5B,MAAMnH,MAAAolB,UAuRV,SAASje,wCAaL,GAAAusB,GAAUC,EAAY,GAEpB,IAAO/wB,SAAPuE,QACDnH,MAAA0zB,IAAA,KAGF,KAAAvsB,EAEDnH,KAAK0zB,GAAiB9wB,WACf,CACR,GAAAgxB,GAAAC,WAAA1sB,sGAUG,MADFnH,MAAI8zB,iBACF9zB,QAUH8L,UAAAioB,MAAA,SAAAC,sFAlUGh0B,KAAMglB,YA2UV,oDAaE,GAAWpiB,SAAPqxB,0LAWJj0B,KAAI+zB,OAAK,GAET/zB,KAAI8zB,oBASHhoB,UAAMgoB,eAAA,wBAELN,EAAW5wB,OACZ6wB,EAAA7wB,SAGgBA,SAAb5C,KAAAk0B,cAAoC,SAADl0B,KAACk0B,+BAG/Bl0B,KAAMm0B,aAEAn0B,KAAMm0B,aAAC,IAAAn0B,KAAAo0B,cAGP,UAIdC,GAAAZ,EAAAzb,MAAA,gBAKAmS,wBAAMnqB,KAAAs0B,6BAGNt0B,KAAAu0B,QAAAC,yBAiBFhB,wBAAAxzB,KAAAu0B,0PAwBEzoB,UAAA2oB,UAAA,SAAAC,EAAAvvB,kCAQc,UAAXuvB,GAAc10B,KAAA0Q,MAChBuN,EAAA,WAAwB4E,aAAO,SAAS8R,oBAAsB30B,KAAA0Q,KAC9D1Q,KAAA0Q,IAAQ6N,OAAQ,KAChBve,KAAA0Q,IAAU,MAGV1Q,KAAA40B,UAAYF,EAGZ10B,KAAAukB,UAAc,CAGd,IAAAsQ,GAAehV,EAAS,YACzBiV,uBAAyB90B,KAAAkjB,SAAgB4R,gCAE1CC,SAAc/0B,KAAA+C,KACZiyB,OAAAh1B,KAAe+C,KAAO,IAAK2xB,EAAA,OAC5BpH,WAAAttB,KAAAi1B,4CAEDC,QAAYl1B,KAAAkjB,SAAAgS,QACVC,KAAKn1B,KAAAkjB,SAAeiS,KACpBjN,MAAIloB,KAAUkjB,SAASgF,MACrBkN,OAAAp1B,KAAYo1B,kBACbp1B,KAAAmiB,6CAEDniB,KAAKkjB,SAAUwR,EAAS1W,wEAQrB7Y,EAAMkwB,MAASr1B,KAAKs1B,OAAMD,KAAKr1B,KAAAs1B,OAAgB7J,YAAS,+DAQ7D,IAAI8J,GAAgBtX,EAAA,WAAuB4E,aAAA6R,EAC3C10B,MAAK+nB,MAAQ,GAAAwN,GAAkBV,GAG/B70B,KAAK+nB,MAAGzD,MAAK/D,EAAOvN,KAAAhT,KAAUA,KAAKw1B,mBAAmB,GAEtDC,EAAiC,WAAKC,iBAAsB11B,KAAA21B,oBAAA31B,KAAA+nB,OAG5D/nB,KAAKyf,GAAGzf,KAAK+nB,MAAO,YAAA/nB,KAAkB41B,sBACtC51B,KAAKyf,GAAGzf,KAAK+nB,MAAO,UAAA/nB,KAAA61B,oBACpB71B,KAAKyf,GAAGzf,KAAK+nB,MAAO,UAAS/nB,KAAK81B,oBAClC91B,KAAKyf,GAAGzf,KAAK+nB,MAAO,iBAAgB/nB,KAAA+1B,2BACpC/1B,KAAKyf,GAAGzf,KAAK+nB,MAAO,UAAS/nB,KAAKg2B,oBAClCh2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,QAAS/nB,KAAEi2B,kBAC/Bj2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,UAAW/nB,KAAKk2B,oBACpCl2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,SAAA/nB,KAAAm2B,mBACpBn2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,OAAA/nB,KAAYo2B,iBAChCp2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,YAAY/nB,KAAMq2B,sBACtCr2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,QAAA/nB,KAAcs2B,kBAClCt2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,WAAA/nB,KAAgBu2B,qBACpCv2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,iBAAiB/nB,KAAMw2B,2BAC3Cx2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,mBAAkB/nB,KAAKy2B,6BAC3Cz2B,KAAKyf,GAAGzf,KAAK+nB,MAAO,QAAA/nB,KAAc02B,wEAElC12B,KAAKyf,GAAAzf,KAAA+nB,MAAA,QAAwB/nB,KAAC22B,wEAE9B32B,KAAIyf,GAAIzf,KAAC+nB,MAAU,UAAU/nB,KAAA42B,oBAC3B52B,KAAAyf,GAAKzf,KAAA+nB,MAAA,iBAA4B/nB,KAAA62B,gCAClCpX,GAAAzf,KAAA+nB,MAAA,aAAA/nB,KAAA82B,+MAID92B,KAAIyf,GAAIzf,KAAC+nB,MAAW,kBAAmB/nB,KAAK+2B,4BAC1C/2B,KAAGyf,GAACzf,KAAA+nB,MAAc,iBAAiB/nB,KAAK8zB,qBACzCrU,GAAAzf,KAAA+nB,MAAA,eAAA/nB,KAAAg3B,6EAICh3B,KAAKizB,aAAiBjzB,KAACi3B,uBACvBj3B,KAAKk3B,iJA1gBLl3B,KAAM0Q,IAAA6N,OAohBV,0PA+CEve,KAAKm3B,+BAMNn3B,KAAAyf,GAAAzf,KAAA+nB,MAAA,YAAA/nB,KAAAo3B,+YAzkBGp3B,KAAM6jB,IAAA7jB,KAAA+nB,MAkmBV,YAAgB/nB,KAAAq3B,sBACdr3B,KAAK6jB,IAAA7jB,KAAA+nB,MAAe,WAAA/nB,KAAAs3B,6EAWpBpE,EAAKpnB,UAAA0pB,iBAA4B,uGAShCwB,mHAvnBOh3B,MAAA0Q,IAgoBV0kB,qBAYIlC,EAAApnB,UAAa8pB,qBAAa,8CAM3Bld,MAAA,6HAuBE5M,UAAAyrB,WAAA,SAAAC,GACD,MAAY50B,UAAZ40B,GAEFx3B,KAASy3B,cAAiBD,IAC3Bx3B,KAAAy3B,YAAAD,sGA7qBSx3B,QAurBHA,KAAAy3B,8IAvrBHz3B,KAAMu3B,YAusBV,GAEEv3B,KAAK2hB,QAAQ,mDAzsBX3hB,KAAMgoB,SAAA,eAotBRhoB,KAAK2hB,QAAA,sDAptBH3hB,KAAMglB,YA+tBV,eACEhlB,KAAK2hB,QAAA,6DAhuBH3hB,KAAMglB,YA2uBV,eACEhlB,KAAK2hB,QAAA,mBA5uBHuR,EAAMpnB,UAsvBVkqB,mBAAkB,WAChBh2B,KAAKglB,YAAS,eACdhlB,KAAK2hB,QAAQ,YAxvBXuR,EAAMpnB,UAiwBVoqB,mBAAiB,WACfl2B,KAAKgoB,SAAA,eACLhoB,KAAK2hB,QAAQ,4NA8Bb3hB,KAAKgoB,SAAA,mBACLhoB,KAAK2hB,QAAQ,sDAlyBX3hB,KAAMglB,YA4yBV,eACEhlB,KAAKgoB,SAAQ,cACdhoB,KAAA2hB,QAAA,UASCuR,EAAKpnB,UAASyqB,oBAAa,WAC3Bv2B,KAAI2hB,QAAK,iKAkBV3hB,KAAA2hB,QAAA,UA10BGuR,EAAMpnB,UAm1BV0qB,0BAAgB,uDAYX1qB,UAAAsrB,iBAAA,SAAA3W,4EAsBHyS,EAAKpnB,UAAA4rB,eAAqB,WAC3B13B,KAAA23B,YAAA33B,KAAA23B,eASCzE,EAAIpnB,UAAK8rB,sBAAc,WACrB53B,KAAA63B,cAAK73B,KAAkB23B,0DAh4BjB33B,KAAA63B,0CAAN3E,EAAMpnB,UAq5BVwrB,oBAAA,SAAuB7W,GAEnBA,EAAIE,qHAv5BJ3gB,KAAMglB,YAo6BV,mBAWEkO,EAAIpnB,UAAMgsB,kBAAA,WACR93B,KAAAwmB,+EAh7BAxmB,KAAMunB,aA27BVnM,EAAAmM,cAEEvnB,KAAK2hB,QAAM,qBA77BTuR,EAAMpnB,UAs8BV4qB,iBAAkB,WAChB,GAAIhe,GAAQ1Y,KAAC+nB,MAAUrP,OACxB1Y,MAAA0Y,MAAAA,GAAAA,EAAA7X,OASCqyB,EAAKpnB,UAAQisB,mBAAS,WACvB/3B,KAAA2hB,QAAA,YASCuR,EAAKpnB,UAAQ6qB,iBAAW,WACzB32B,KAAA2hB,QAAA,UASCuR,EAAKpnB,UAAQksB,mBAAW,WACzBh4B,KAAA2hB,QAAA,YASCuR,EAAKpnB,UAAQ8qB,mBAAkB,WAChC52B,KAAA2hB,QAAA,YASCuR,EAAKpnB,UAAQ+qB,0BAAc,WAC5B72B,KAAA2hB,QAAA,mBASCuR,EAAKpnB,UAAQgrB,sBAAc,WAC5B92B,KAAA2hB,QAAA,eASCuR,EAAKpnB,UAAQmsB,sBAAc,WAC5Bj4B,KAAA2hB,QAAA,eASCuR,EAAKpnB,UAAQosB,sBAAgB,WAC9Bl4B,KAAA2hB,QAAA,eASCuR,EAAKpnB,UAAQqsB,wBAAmB,WACjCn4B,KAAA2hB,QAAA,iBASCuR,EAAApnB,UAAYirB,2BAAO,WACpB/2B,KAAA2hB,QAAA,oDA5iCG,MAAM3hB,MAAAs1B,QAkkCJpC,EAAApnB,UAAAssB,UAAA,SAAO3d,EAAAoD,WAERkK,QAAA/nB,KAAA+nB,MAAAxD,cACFwD,MAAAzD,MAAA,WACFtkB,KAAAya,GAAAoD,uEAsBM/R,UAAMusB,SAAA,SAAA5d,sCAMH,UACDza,MAAA+nB,MAAAtN,WACFva,QAEF0C,UAAA5C,KAAA+nB,MAAAtN,GACF4X,EAAA,WAAA,aAAA5X,EAAA,2BAAAza,KAAA40B,UAAA,wBAAA10B,GAGF,cAAAA,EAAAuU,gYAmEC,MAAY7R,UAAZ01B,GACDt4B,KAAAu4B,aAAAD,mJA+BAt4B,KAAAo4B,UAAA,iBAAAI,kEA2BCtF,EAAIpnB,UAAO6e,SAAU,SAAiB6N,qBAE/Bx4B,KAAOs1B,OAAA3K,UAAmB,GAG7B6N,EAAK3E,WAAS2E,IAAY,EAG3B,EAAAA,sCAMJx4B,KAAAs1B,OAAA3K,SAAA6N,4SAtvCGtF,EAAMpnB,UA4zCV2sB,gBAAW,WACT,MAAIC,GAAgBD,gBAAUz4B,KAAA6pB,WAAA7pB,KAAA2qB,iIAsC9BuI,EAAGpnB,UAAGyjB,OAAgB,SAAkBoJ,GACxC,GAAA1Q,GAAQrlB,qQAp2CA5C,KAAAq4B,SAs4CV,WAAkB,0QA2DZr4B,MAAAunB,cAAK,wBAYRlH,EAAMZ,GAAIa,EAAW,WAAkBsY,EAAIC,iBAAAtY,EAAAvN,KAAAhT,KAAA,QAAA84B,0DAIrC94B,KAAAunB,kBAAA,4CAILvnB,KAAK2hB,QAAQ,uBAGf3hB,KAAOuhB,IAAIqX,EAACG,sBACb/4B,KAAA+nB,MAAAiR,yHAuBEltB,UAAAmtB,eAAA,oCAEDj5B,MAAAunB,cAAY,gJAl/CVvnB,KAAM2hB,QA0/CV,kEAaE3hB,KAAIk5B,cAAW,EAGhBl5B,KAAAm5B,gBAAA7Y,EAAA,WAAA8Y,gBAAA3T,MAAA4T,gIA1gDGrY,EAAM8D,WAkhDVxE,EAAA,WAAkB3G,KAAA,mBAEd3Z,KAAA2hB,QAAS,+HAcP3hB,KAACs5B,mBAWLpG,EAAKpnB,UAAQwtB,eAAkB,WAChCt5B,KAAAk5B,cAAA,ySAwBK,GAAAxE,GAAW/R,EAAe,WAAStL,EAAE1W,IACnC44B,EAAItb,EAAc,WAAA4E,aAAA6R,EAGlB,IAAA6E,sBAQP,IAAA,GAAA94B,GAAA,EAAA+4B,EAAAnwB,EAAA5I,EAAA+4B,EAAAx4B,OAAAP,IAAA,+DAPS4xB,GAAS,WAAQ3Z,MAAQ,QAAMgc,EAAW,iFAqDjD5oB,UAAUupB,IAAO,SAAWlwB,iBAE3B,MAAKnF,MAAIq4B,SAAO,UAGjBoB,GAAUxb,EAAkB,WAAQ4E,aAAA7iB,KAAA40B,UAgDrC,OA7CEhwB,OAAIiC,QAAO1B,uBAIJ,gBAAAA,GAELnF,KAAAq1B,KAAKA,IAAAlwB,IAGAA,YAAgBwF,sCAMnB3K,KAAA05B,aAAgBv0B,UAEfmwB,OAAMD,IAAAlwB,EAAAkwB,IACLr1B,KAAA25B,aAAex0B,EAAOgG,MAAO,GAG/BnL,KAAAskB,MAAS,WAMRmV,EAAA3tB,UAAAF,eAAA,2CAGA5L,KAAMo4B,UAAA,MAAAjzB,EAAAkwB,qCAIDr1B,KAAA45B,kDAWR55B,0CAYF,GAAA65B,GAAe75B,KAAE85B,aAAWzwB,EAE3BwwB,8CAMJ75B,KAAAy0B,UAAAoF,EAAAN,KAAAM,EAAA10B,sHASCnF,KAAKwkB,6CAYL,MA9tDExkB,MAAMo4B,UA6tDV,QACSp4B,wCA9tDL,MAAMA,MAAAq4B,SAyuDV,eAAWr4B,KAAAs1B,OAAAD,KAAG,uCAzuDV,MAAMr1B,MAAA25B,cAqvDH,oHArvDG35B,KAAAq4B,SAswDV,+HAtwDUr4B,KAAAq4B,SAuxDN,WAAAlxB,kIAqCF+rB,EAAKpnB,UAAUspB,OAAI,SAAAC,uCAQnBA,EAAO,wNAp0DLr1B,KAAM2hB,QAk2DV,kBAYQuR,EAAApnB,UAAKmnB,SAAY,SAAAe,GACjB,MAAKpxB,UAALoxB,GACAA,IAAKA,EAELh0B,KAAK+5B,YAAK/F,IACRh0B,KAAA+5B,UAAK/F,EAERh0B,KAAMi3B,uBACLj3B,KAAKo4B,UAAA,cAAYpE,MAIjBh0B,KAAKglB,YAAK,yBACRhlB,KAAAgoB,SAAK,6BACNrG,QAAA,mBAEJ3hB,KAAAi3B,uBACDj3B,KAAWk3B,8BAGdl3B,KAAAglB,YAAA,+RA+BOhlB,KAAAg6B,qBAAahG,EACdA,GACCh0B,KAAKgoB,SAAA,6BAULhoB,KAAK2hB,QAAQ,yBAEhB3hB,KAAAglB,YAAA,2EA/6DKhlB,KAAAg6B,oDA08DR,MAAOp3B,UAAHkW,EACG9Y,KAAMi6B,QAAO,6BAMpBj6B,KAAKglB,YAAQ,iIAj9DXqN,EAAM,WAm+DL3Z,MAAA,SAAG1Y,KAAAi6B,OAAAp5B,KAAA,IAAAq5B,EAAA,WAAA7I,WAAArxB,KAAAi6B,OAAAp5B,MAAA,IAAAb,KAAAi6B,OAAA7I,QAAApxB,KAAAi6B,QAAkCj6B,OAQ9BkzB,EAAApnB,UAAYquB,MAAS,WAAa,MAAAn6B,MAAAq4B,SAAA,UA3+D1CnF,EAAMpnB,UAo/DVsuB,QAAQ,WAAK,MAAOp6B,MAAKq4B,SAAS,YAShCnF,EAAKpnB,UAAAuuB,SAAqB,WAC3B,MAAAr6B,MAAAq4B,SAAA,aA9/DGnF,EAAMpnB,UAugEV0a,mBAAU,WACRxmB,KAAIs6B,eAAS,KAWRxuB,UAAM6rB,WAAA,SAAA3D,4BAGLA,IAAKh0B,KAAAu6B,8JAYDv6B,KAACs6B,eAAgB,EAUlBt6B,KAAK+nB,OACb/nB,KAAA+nB,MAAA7D,IAAA,YAAA,SAAAhkB,GACMA,EAAKs6B,kBACbt6B,EAAAygB,yHA/iES3gB,MAwjEaA,KAAAu6B,aASjBrH,EAAApnB,UAAS2uB,uBAAa,WACtB,GAAAC,GAAiB93B,OAClB+3B,EAAA/3B,OACDg4B,EAAAh4B,OAEEi4B,EAAeta,EAAGvN,KAAAhT,KAAlBA,KAAAwmB,mCAKEtmB,EAAC46B,UAAaH,GAACz6B,EAAA66B,UAAiBH,mCAOlCI,EAAgB,WAClBH,0BAQFH,EAAmB16B,KAAA2mB,YAAekU,EAAA,mBAIlCA,yEAQA76B,KAAIyf,GAAA,UAAAwb,wBAKAj7B,KAAAyf,GAAI,QAACob,gBAQS76B,MAAK2mB,YAAS,kCAI1B3mB,KAAAs6B,eAAiB,2BAMd93B,aAAA04B,MAEJlf,GAAAhc,KAAAkjB,SAAA,iBACFlH,GAAA,ohBA8HJ,MAAAhc,MAAA+nB,OAAA/nB,KAAA+nB,MAAA,wGAuBCmL,EAAApnB,UAAYqvB,aAAc,SAA0BtO,EAAElD,EAASxH,GAChE,MAAAniB,MAAA+nB,OAAA/nB,KAAA+nB,MAAA,aAAA8E,EAAAlD,EAAAxH,IASC+Q,EAAKpnB,UAASsvB,mBAAW,SAAgC/4B,GAC1D,MAAArC,MAAA+nB,OAAA/nB,KAAA+nB,MAAA,mBAAA1lB,IASC6wB,EAAApnB,UAAYuvB,sBAAoB,SAAqC7N,GACtExtB,KAAA+nB,OAAA/nB,KAAA+nB,MAAA,sBAAAyF,IASC0F,EAAApnB,UAAYqoB,WAAc,WAC3B,MAAAn0B,MAAA+nB,OAAA/nB,KAAA+nB,MAAAoM,YAAAn0B,KAAA+nB,MAAAoM,cAAA,qNArzESn0B,OAu2ERkzB,EAAIpnB,UAAUoW,UAAA,WACd,MAAI2Q,GAAwB,WAAAK,EAAApnB,UAAAoX,SAAAhB,UAAAliB,KAAAs7B,aAU1BpI,EAAApnB,UAAQyvB,OAAY,cACrBl5B,GAAAwwB,EAAA,WAAA7yB,KAAAkjB,oBAGF7gB,GAAAgrB,iGAt3EG,MAg4EGhrB,8DAcHm5B,EAASxa,EAAA2R,gBAAAjiB,GACP+qB,EAAAD,EAAA,iBAGH,OAAAC,EAAA,6BAKG3iB,EAAI4iB,EAAiB,GACjBtgB,EAAAsgB,EAAe,EAErB5iB,IACEuZ,EAAc,WAAY3Z,MAAAI,GAE1B+G,EAAe,WAAS2b,EAASpgB,QAGtB,WAASugB,EAAcH,GAGnC9qB,EAAAkrB,gBAGH,IAAO,GAFNxZ,GAAA1R,EAAAmrB,WAEMl7B,EAAA,EAAW0W,EAAC+K,EAAAphB,OAAAqW,EAAA1W,EAAAA,IAAA,CACpB,GAAA4hB,GAAAH,EAAAzhB,GAv6EGm7B,EAAMvZ,EAAA0B,SAAAjG,gEAg7EQ,UAAD8d,4GAuBjB5I,GAAApnB,UAAAoX,oxDCn/EA,IAAA6Y,GAAA76B,EAAO,4KCTaoR,GAAA,GAAgBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,kEAClBG,EAAAD,GAAe,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAArB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,0CACFsS,EAAGpT,EAAAqT,yBACHtT,EAAOC,EAAAC,wFAUb0C,EAAWuR,2CAAX9T,EAAAvd,KAAWf,KAAAue,EAcRlc,GAELrC,KAAA8nB,SACDvJ,EAAAkB,GAAA,eAAAc,EAAAvN,KAAAhT,KAAAA,KAAA8nB,uBAjBGkU,EAAWlwB,UAyBfgW,QAAQ,WACN9hB,KAAIue,SAASsF,IAAA,eAAgB7jB,KAAA8nB,QAC3BxJ,EAAAxS,UAAWgW,QAAY/gB,KAAAf,OAUzBg8B,EAAKlwB,UAAQ6T,SAAA,WACX,GAAAI,GAAKiB,EAAArB,SAAe,OACpB0H,UAAG,aAGLvH,SAAU,IAWV,0EArDEC,EAAAgJ,YAAW/oB,KAkDfi8B,eAGOlc,KASNjU,UAAAgc,OAAA,qEASC9nB,KAAI2sB,UAWH7gB,UAAAowB,OAAA,SAAAvhB,GACF,GAAA3a,KAAAi8B,8cC5FgB3pB,GAAA,MAAeA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,8KAElC,IAAIie,GAAgBrvB,EAAM,4BAKtBwtB,EAAYxtB,EAAZ,sDAQFi7B,GAAW,EACXl8B,EAAU2C,OAGRw5B,EAAS,cAQVC,GAAA/b,EAAA,WAAAgc,qBAAA,0DAGD,IAAID,GAAQA,EAAIr7B,OAAS,iCAEvBu7B,EAAUt0B,KAAIo0B,EAAE17B,oDAKd47B,EAAIt0B,KAAOu0B,EAAI77B,qDAQX,GAAA87B,GAAIF,EAAY57B,OAIjB87B,IAAAA,EAAAC,cAgBLC,EAAmB,EACd,OAdF,GAAM/5B,SAAN65B,EAAM,OAAA,CACL,GAAAp6B,GAAAo6B,EAAoBC,aAAA,0BAMnB,CAAKz8B,EAAew8B,SAY3BN,IACDQ,EAAM,oBAMP18B,EAAI28B,EACFr5B,WAAO64B,EAAch6B,GAGL,gBAAT,WAASoX,cAAE,yOCtFClH,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAvBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACMsM,GAAiB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,qeAW1Bma,EAAAoB,GASRud,EAAK,SAAerd,GAGpB,QAAOqd,GAACte,EAAclc,GACtB+b,EAAepe,KAAO68B,GAEtBrd,EAAQze,KAAOf,KAAOue,EAAAlc,GAGtBrC,KAAK88B,IAAG98B,KAAQgjB,SAAKhjB,KAAAkjB,SAAkB6Z,mRAlBrC/8B,KAAMyf,GAAAlB,EA6BVve,KAAAg9B,YAAQh9B,KAAA8nB,sBASJ+U,EAAA/wB,UAAA6T,SAAkB,SAAAxU,GAClB,GAAAzF,GAAA/B,UAAkB3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,GAClBic,EAAejc,UAAK3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,EAetB,8CAXA+B,EAAOma,EAAA,YACRC,SAAA,wGA7CGF,GAuDEJ,EAAA1T,UAAqB6T,SAAA5e,KAAAf,KAAAmL,EAAAzF,EAAAka,IAUzBid,EAAK/wB,UAAAkvB,gBAAuB,SAAAva,GAC7BA,EAAAE,4MAlEG3gB,KAAMyf,GAAAa,EAyEV,WAAe,YAAAtgB,KAAA0qB,8FAWbmS,EAAK/wB,UAAQ4e,gBAAkB,eAQhC5e,UAAAmvB,cAAA,+MA5FGj7B,KAAM6jB,IAAAvD,EAmGJ,WAAA,YAAGtgB,KAAA0qB;A1GpGX,qD0GuGI1qB,KAAK8nB,UASL+U,EAAK/wB,UAAKgc,OAAO,WAGjB,GAAI9nB,KAAAuhB,IAAJ,CAQA,GAAI0b,GAAUj9B,KAAI0rB,uBAIhB,IAAGoR,EAAH,EAGD,gBAAAG,IAAAA,IAAAA,GAAA,EAAAA,GAAAA,WACFA,EAAA,sEASCH,EAAI/c,KAAA0F,MAAW0E,MAAI+S,qFA3IjB,OAAMl9B,MAAAgwB,WAwJDpF,EAAA7Y,OAUP8qB,EAAI/wB,UAAWsU,YAAW,sMAe1BK,EAAQE,iBACT3gB,KAAA+rB,gBAlLG8Q,EAAM/wB,UA2LV4T,WAAW,WACT1f,KAAK6jB,IAACvD,EAAA,WAA2B,UAAAtgB,KAAAwgB,qDA5L/BC,EAAM0c,2BAwMR1c,EAAIE,mDAYJ,MAAY/d,UAAZoxB,EACDh0B,KAAAo9B,YAAA,oCAIHp9B,KAAAo9B,gFCrOEnf,GAAM,WAAgBof,kBAAG,SAAAR,GACvBr9B,EAAA,WAAiBq9B,EACjBp9B,EAAAD,QAAYA,EAAK,kIASf,SAAA89B,GAAcC,SACdA,GAAAC,6BACA,wEAQFD,EAAIE,cAAW,SAACpI,GAChB,GAAIqI,IACFC,WAAW,GACZC,OACI,GAGH,KAAAvI,EAAI,MAAOqI,EAKb,IAAAG,GAAMxI,EAAUtX,QAAO,KACvB+f,EAAkBl7B,MAclB,cAZAk7B,EAAaD,EAAA,GAGfA,EAAMC,EAAkBzI,EAAA0I,YAAkB,KAAA,EACtB,IAAlBF,mBAKFH,EAAMC,WAAUtI,EAAA2I,UAAmB,EAACH,oCAG3BH,sJAmBPH,EAAAU,kMAuBWR,cAAkBt4B,EAAAkwB,iHAhF7B71B,EAAIif,YAAQ,0FCNKnM,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAvBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,gBACMsM,GAAiB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAvB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,iBA4Tf,GAAKkf,GAAYC,EAAGhyB,OAAU,GAACiyB,cAAaD,EAAA7oB,MAAA,EAC1C+oB,GAAA,MAAaH,GAAa,SAAG1Y,GAC7B,MAAAxlB,MAAcuhB,IAAA+c,gBAAeH,EAAA3Y,kBAI/B6Y,EAAKF,GAAS,WACZ,MAAAn+B,MAAcuhB,IAAAgd,gBAAcJ,mBAK9B,KAAK,sBAtU0BK,8BACTvd,8BACHwd,6DAGfpf,EAAYne,EAAA,wEASV2e,EAAK3B,EAAAoB,8BASF,SAAMof,6BAMTA,EAAI39B,KAACf,KAAMqC,EAAUiiB,GAGnBjiB,EAAK8C,aACJmf,MAAM,WACVtkB,KAAA2+B,UAAAt8B,EAAA8C,aAMD9C,EAAA4rB,WACAjuB,KAAAskB,MAAA,WACAtkB,KAAA45B,OACA55B,KAAAwoB,OACAxoB,KAAAyrB,YAAAppB,EAAO4rB,yTAwQV,SA5RIsP,EAAAmB,GA6CDnB,EAAIzxB,UAAQ6T,SAAQ,8BAOlBtd,GAAAu8B,MACAv8B,EAAAu8B,IAAA,8CAIA,IAAAC,GAASx8B,EAAS2yB,6DAOpB8J,mBAAa,wBACXC,wBAAiB,8DAKnB5J,KAAI9yB,EAAa8yB,KACfjN,MAAM7lB,EAAK6lB,OAEX7lB,EAAS28B,WAGPC,EAAOpf,EAAY,YACvBqf,MAAS,4BAET78B,EAAW48B,4EAzFTj/B,MAAKuhB,IAAAgc,EAiGT4B,MAAI98B,EAAAu8B,IAAAI,EAAGC,EAAArf,GACL5f,KAAIuhB,IAAKgY,KAAOv5B,KAEfA,KAAAuhB,iCApGMvhB,KAAAm6B,SA8GPn6B,KAAKo/B,eAAgB,wBA9GnB7B,EAAKzxB,UAwHT2c,MAAG,WACDzoB,KAAIuhB,IAAG8d,+FAyBNvzB,UAAAowB,OAAA,SAAA7G,iEAlJC,GAAKkE,GAAAv5B,IA0JPA,MAAOuD,WAAK,WACbg2B,EAAA/Q,aASC+U,EAAIzxB,UAAQsuB,QAAQ,WACpB,MAAqBx3B,UAAjB5C,KAAQs/B,mBAUbxzB,UAAAszB,eAAA,SAAArV,mMA/KG2U,EAAK5yB,UAwLTszB,eAAWr+B,KAAAf,2CAxLP,MAAKA,MAAAo6B,UAuMEp6B,KAAAs/B,iBAAgB,EAElBt/B,KAAAuhB,IAAAgd,gBAAA,6EAzMAv+B,KAmNTu/B,eAAIlK,IAEHr1B,KAAAuhB,IAAAgd,gBAAA,iBASAzyB,UAAA8tB,KAAA,kGAkBG2D,EAAAzxB,UAAO0zB,UAAA,gFAhPFC,EA2PDC,kBAEFD,EAAqBC,gBAAA,EAAA/U,uHA7PlB8U,EA2QTC,gBAAkBC,EAAA,GAAA,GAAAA,EAAA,GAAG,+CA3QjB,OAAK,GAoSTpC,EAAIzxB,UAAY8zB,gBAAe,WAC/B,OAAK,GACNrC,GACDsC,EAAS,YACkBxB,EAAOd,EAAKzxB,UAA6Bg0B,EAAA,4IAAA9nB,MAAA,KACnE+nB,EAAA,2HAAA/nB,MAAA,KAeKrX,EAAA,EAAAA,EAAcm/B,EAAA9+B,OAAUL,IAC5Bq/B,EAAaF,EAAYn/B,WAK3B,KAAA,GAAAA,GAAA,EAAAA,EAAKo/B,EAAA/+B,OAAmBL,mGAqBpB48B,EAAA0C,uBAQA1C,EAAA0C,oBAAqBC,gBAAY,SAAA/6B,GAGjC,QAAOg7B,GAAY9K,GACpB,GAAA+K,GAAAC,EAAAC,iBAAAjL,YAEO,SAAU+K,EAEjB,MAPAj1B,YAUDhG,EAAAgG,4EAWK,qDAYPouB,EAAM2C,OAAO/2B,EAAGkwB,MAOhBkI,EAAM0C,oBAAmBne,QAAQ,uEAM/Bye,YAAY,0BAEVC,YAAM,kBACP,8CAKGjH,EAAAxZ,GAAaA,EAAAwZ,IAIhBA,IAAAA,EAAAxZ,uBAQCwd,EAAAkD,WAAe,SAAClH,GAEbA,EAAIxZ,OAKLwZ,EAAAxZ,KAAUwe,gBAEdhF,EAAK/U,0CAID+Y,EAAU,WAAShE,IACjB,QAKLmH,QAAA,SAAAC,EAAAC,+DAOH,GAAMrH,GAAOvY,EAAG6f,MAAAF,GAAUpH,6BAIpBA,EAAA7gB,MAAA,UAIFA,MAAO,UAAEI,cAIN,cACDgoB,GAAS,OAGb,0IAIA,MAAU5gC,oEAGJ4gC,GAAUC,EAASjO,QAAS,wBAA6BiO,EAAIjO,QAAA,oBAAAkO,YAAAxzB,QAAA,OAAA,KAAAyzB,MAAA,cAAA,IAEnE,MAAWnoB,0BAMXykB,EAAI4B,MAAA,SAAkBP,EAAAI,EAAAC,EAAArf,GACtB,GAAI/e,GAAA08B,EAAW2D,aAAMtC,EAAAI,EAAAC,EAAArf,GAGjBtN,EAAA0O,EAASrB,SAAE,OAAAM,UAAApf,IAAAg7B,WAAA,EAEX,OAAAvpB,2FAKJ6uB,EAAS,GACPC,EAAY,GACZC,EAAa,SAGZrC,8EAOHC,EAAApf,EAAa,oBAEXyhB,UAAWH,oDAGXlC,UAGCxsB,oBAAYwsB,GAAAtiB,QAAA,SAAA/W,kDAIbga,EAAWC,EAAU,scC7gBHvN,GAAc,GAAAA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACfE,GAAiB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAvB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,wCACHuiB,EAAGrjB,EAAAsjB,OACK,gBAARpiB,EAAElB,EAAAmB,OACE,iDACJghB,EAAAxf,EAAO4d,kEAGA,uJAWRvgB,EAAAqU,iBAYL,QAAKkP,GAAAp/B,EAAUiiB,KACVtkB,KAAAyhC,KAEN1gC,KAAAf,KAAAqC,EAAAiiB,EAED,IAAInf,GAAS9C,EAAA8C,UAMXA,IAAOnF,KAAWuhB,IAAImgB,aAAAv8B,EAAAkwB,KAAAhzB,EAAAqO,KAAA,IAAArO,EAAAqO,IAAAixB,mBACpB3hC,KAAA2+B,UAAWx5B,GAEXnF,KAAA4hC,gBAAiB5hC,KAAOuhB,6DAMpBsgB,EAAYC,EAAK9gC,YAGlB6gC,KAAA,IACFE,GAAAD,EAAAD,GACF5d,EAAA8d,EAAA9d,SAAAjG,4BAEQhe,KAAGgiC,yBAOPhiC,KAAAiiC,mBAAyBC,UAASH,EAAMvU,OAFvC2U,EAACl6B,KAAA85B,0DAcP/hC,KAAKgiC,2BACNhiC,KAAAoiC,uBAAA7hB,EAAAvN,KAAAhT,KAAAA,KAAAqiC,qFAEDriC,KAAKsiC,uBAAe/hB,EAAAvN,KAAAhT,KAAAA,KAAAuiC,uBACrBviC,KAAAwiC,qKAmBCf,EAAI31B,UAAIgW,QAAW,sCAEnB2gB,EAAYziC,KAAAstB,wCAKZoV,EAAKlU,oBAAoB,SAAUxuB,KAACoiC,wBACpCM,EAAAlU,oBAAa,WAAGxuB,KAAA2iC,qBACjBD,EAAAlU,oBAAA,cAAAxuB,KAAAsiC,qEASCb,GAAM9M,oBAAoB30B,KAACuhB,qCAWvBkgB,EAAA31B,UAAM6T,SAAA,WACN,GAAAI,GAAK/f,KAAKkjB,SAACxS,GAKX,KAAAqP,GAAI/f,KAAiC,2BAAI,EAGvC,GAAA+f,EAAA,IACD6iB,GAAA7iB,EAAA8iB,WAAA,kCAEDpB,EAAI9M,oBACF5U,GACEA,EAAE6iB,MACF,GAEFtiB,EAAA,WAAAwiB,cAAA,2FAKFC,GAAaC,eAAehjC,KAAAkjB,SAAU4R,0BAAgB,SAC7ClV,GAAAqT,SAGXjS,EAAIiiB,gBAAYljB,EAASF,EAAU,WAAaD,GAC9C7c,GAAA/C,KAAAkjB,SAAoB8R,OACrBkO,QAAA,qBAMJC,IAAA,WAAA,UAAA,OAAA,8GAhJGniB,EAAKiiB,gBAsJTljB,EAAAqjB,GACE,MAAOrjB,kGAiBL,GAAkB,IAAlBA,EAAAvG,WAAqB,CACrB,GAAA6pB,GAAI,cAWFC,IAAA,EACFC,EAAQ,gBAGNngB,GAAI3D,GAAC,YAAe8jB,oBAKlBD,GACDtjC,KAAA2hB,QAAA,aAUD,OAPFyB,GAAA3D,GAAA,iBAAA+jB,KAAOlf,MAAA,gEACRgf,8EAkBC,GAAAG,IAAqB,sCAMtB1jB,EAAAvG,YAAA,wBAKGuG,EAAAvG,YAAiB,KACVvR,KAAA,WAhOJ8X,EAAAvG,YAoOT,GACEiqB,EAAkBx7B,KAAC,kBAIjBjI,KAAGskB,MAAA,WACHmf,EAAG9mB,QAAiB,SAAaxR,GAClCnL,KAAA2hB,QAAAxW,IACFnL,UAICyhC,EAAI31B,UAAC02B,uBAAqB,WACxB,GAAAE,GAAM1iC,KAAA+f,KAAQuN,UAEdoV,IAAAA,EAAA1U,mBACA0U,EAAA1U,iBAAc,SAAAhuB,KAAAoiC,wBACdM,EAAC1U,iBAAA,WAAAhuB,KAAA2iC,qBACJD,EAAA1U,iBAAA,cAAAhuB,KAAAsiC,4BAIAx2B,UAAAu2B,sBAAA,kCA1PGriC,MAAKstB,aA4PT3L,SACExW,KAAK,SACNiI,OAAAsvB,qHAO0B52B,UAAAy2B,sBAAA,SAAAriC,8CAOE4L,UAAA0c,KAAA,4BAQlBiZ,EAAA31B,UAAY2c,MAAU,WAAGzoB,KAAAuhB,IAAAkH,SAQpBgZ,EAAA31B,UAAY43B,OAAI,WAAc,MAAA1jC,MAAAuhB,IAAAmiB,QAS5CjC,EAAI31B,UAAA2f,YAAA,WACF,MAAKzrB,MAAIuhB,IAAAkK,wFAtST4G,EAmTJ,WAAQnyB,EAAA,oEAnTJ,MAAKF,MAAAuhB,IA6TToJ,UAAQ,GAQG8W,EAAA31B,UAAY+d,SAAW,WAAE,MAAA7pB,MAAAuhB,IAAAsI,UAQN4X,EAAI31B,UAAKyjB,OAAS,WAAmB,MAAAvvB,MAAAuhB,IAAAgO,QAQzDkS,EAAA31B,UAAY63B,UAAU,SAAAhL,GAAE34B,KAAAuhB,IAAAgO,OAAAoJ,GAQhB8I,EAAI31B,UAAUoc,MAAQ,WAAG,MAAAloB,MAAAuhB,IAAA2G,OAQjCuZ,EAAA31B,UAAY83B,SAAI,SAAY1b,GAAEloB,KAAAuhB,IAAA2G,MAAAA,GAQ5BuZ,EAAA31B,UAAYqe,MAAI,WAAe,MAAAnqB,MAAAuhB,IAAAsiB,aASzCpC,EAAI31B,UAAO0nB,OAAS,WAClB,MAAIxzB,MAAAuhB,IAASuiB,2MAvXR,OAAA,EAwYP,OAAI,0CAUJ,GAAIC,GAAM/jC,KAAMuhB,sCAGdvhB,KAAKkkB,IAAI,wBAAO,0GAKdlkB,KAAK2hB,QAAQ,oBAAC4F,cAAA,MAIhBwc,EAAML,QAAAK,EAAAC,cAAwBD,EAAAE,+FA9ZzB,IAyaRF,EAAAG,yBAzaGzC,EAAK31B,UAkbTq4B,eAAG,WACDnkC,KAAIuhB,IAAG6iB,uFAnbLpkC,MAAKk8B,OAkcTmI,MAWCv4B,UAAAowB,OAAA,SAAA7G,mBAQcoM,EAAA31B,UAAY8tB,KAAI,WAAa55B,KAAAuhB,IAAAqY,QAQjC6H,EAAA31B,UAAY41B,WAAW,WAAE,MAAA1hC,MAAAuhB,IAAAmgB,YAQnBD,EAAI31B,UAAKspB,OAAa,WAAE,MAAAp1B,MAAAuhB,IAAA6T,QAQ7BqM,EAAA31B,UAAY0zB,UAAY,SAAAha,GAAExlB,KAAAuhB,IAAA6T,OAAA5P,GAQpBic,EAAI31B,UAAKopB,QAAc,WAAE,MAAAl1B,MAAAuhB,IAAA2T,SAQ9BuM,EAAA31B,UAAYw4B,WAAa,SAAA9e,GAAExlB,KAAAuhB,IAAA2T,QAAA1P,GAQrBic,EAAI31B,UAAKy4B,SAAe,WAAE,MAAAvkC,MAAAuhB,IAAAgjB,UAQhC9C,EAAA31B,UAAY04B,YAAa,SAAAhf,GAAExlB,KAAAuhB,IAAAgjB,SAAA/e,GAQrBic,EAAI31B,UAAKmnB,SAAgB,WAAG,MAAAjzB,MAAAuhB,IAAA0R,UAQtCwO,EAAA31B,UAAY24B,YAAS,SAAAjf,GAAExlB,KAAAuhB,IAAA0R,WAAAzN,GAQjBic,EAAI31B,UAASqpB,KAAO,WAAE,MAAAn1B,MAAAuhB,IAAA4T,MAQ3BsM,EAAA31B,UAAY44B,QAAU,SAAAlf,GAAExlB,KAAAuhB,IAAA4T,KAAA3P,GAQtBic,EAAA31B,UAAY4M,MAAI,WAAU,MAAA1Y,MAAAuhB,IAAA7I,sCArjBlC,MAAK1Y,MAAAuhB,IA+jBT6Y,SAQUqH,EAAA31B,UAAYuuB,SAAU,WAAE,MAAAr6B,MAAAuhB,IAAA8Y,uCAvkB9B,MAAKr6B,MAAAuhB,IAilBT4Y,OAQiBsH,EAAA31B,UAAY64B,aAAiB,WAAE,MAAA3kC,MAAAuhB,IAAAojB,cAzlB5ClD,EAAK31B,UAkmBTqd,aAAM,WAAK,MAAOnpB,MAAKuhB,IAAI4H,cAQJsY,EAAI31B,UAAK84B,OAAY,WAAS,MAAA5kC,MAAAuhB,IAAAqjB,2IAoCtCnD,EAAA31B,UAAY0N,WAAe,WAAE,MAAAxZ,MAAAuhB,IAAA/H,YAQ5BioB,EAAA31B,UAAYqoB,WAAe,WAAG,MAAAn0B,MAAAuhB,IAAA4S,YAS5CsN,EAAA31B,UAAOsoB,YAAM,WACd,MAAAp0B,MAAAuhB,IAAA6S,uKAhqBQp0B,KAAAuhB,IA4rBT4Z,aAAAtO,EAAkBlD,EAAAxH,8CAUhBsf,EAAI31B,UAAQsvB,mBAAU,WACpB,GAAA/4B,GAAMsB,UAAW3C,QAAe,GAAE4B,SAAAe,UAAA,MAAAA,UAAA,EAEpC,KAAI3D,KAA+B,yBACjC,MAAM0+B,GAAA5yB,UAAasvB,mBAAuBr6B,KAAAf,KAAQqC,EAGlD,IAAAmrB,GAAMlN,EAAqB,WAAWwiB,cAAA,QAwBtC,OAtBEzgC,GAAa,OACfmrB,EAAW,KAAGnrB,EAAc,MAE1BA,EAAc,QAChBmrB,EAAY,MAAGnrB,EAAe,iCAGhCmrB,EAAU,QAAWnrB,EAAQ,UAAAA,EAAA,SAEzBA,EAAC,wCAGNA,EAAA,8DA3tBGrC,KAAKiiC,mBAmuBTC,UAAA1U,EAAqBA,OAEjBA,GAUFiU,EAAA31B,UAAYuvB,sBAAA,SAAA7N,GACV,IAAAxtB,KAAgC,yBAC9B,MAAK0+B,GAAK5yB,UAAWuvB,sBAAYt6B,KAAAf,KAAAwtB,EAGtC,IAAAH,GAAA1sB,CAgBH,UApwBMshC,mBAAK4C,aAAArX,yCAmwBP7sB,EAAA0sB,EAAQrsB,OACFL,MACJ6sB,IAAcH,EAAC1sB,IAAA6sB,IAAAH,EAAA1sB,GAAA6sB,QACfxtB,KAAK+f,KAAGgD,YAAUsK,EAAA1sB,qBAQxB8gC,GAAMqD,SAAWxkB,EAAa,WAAAwiB,cAAA,kDAE5BtV,GAAIX,KAAA,WACFW,EAAAuX,QAAM,OACNpb,MAAU,UACV8X,EAAAqD,SAAO/b,YAAMyE,GAOjBiU,EAAAuD,YAAK,oMAgCD,QAAOC,GAAY95B,GAGnB,qCAEA,MAAOjL,GACR,MAAA,oFAcI,sEAmBPuhC,EAAMxB,oBAAmBne,QAAA,aAGvB2f,EAAAyD,sBAAwBzD,EAAQxB,qBAShCwB,EAAI0D,iBAAe,WACnB,GAAA5V,GAAMkS,EAASqD,SAAYvV,MAE3B,OADAkS,GAAAqD,SAAOvV,OAAiBA,EAAM,EAAA,GAC9BA,IAAAkS,EAAAqD,SAAAvV,QAQAkS,EAAI2D,uBAAmB,4GAWvB3D,EAAI4D,yBAAsB,WACxB,GAAAC,SAOFA,KAAA7D,EAAAqD,SAAAxX,uKAQFgY,GACE,gdAqEF7D,EAAM31B,UAAuB,wBAAA,IAOxBA,UAAA,yBAAA21B,EAAA4D,0BAGC,IAAAJ,GAAYriC,OACV2iC,EAAO,8CACR,iBAEDC,iBAAA,sCAIAP,EAAQxD,EAAAqD,SAAgB/2B,YAAAjC,UAAAm5B,eAGzBH,SAAA/2B,YAAAjC,UAAAm5B,YAAA,SAAA95B,uBAEK,QAEF85B,EAAelkC,KAAAf,KAAAmL,KAKrB43B,EAAA0C,qBAEIR,EAAAxD,EAAkBqD,SAAG/2B,YAAWjC,UAAAm5B,aAGpCxD,EAAAqD,SAAc/2B,YAAKjC,UAAAm5B,YAAA,SAAA95B,GACnB,MAAQA,IAACu6B,EAAA16B,KAAAG,GACT,0BAMWs2B,EAAAkE,mBAAO,cAAEtlC,GAAAohC,EAAAqD,SAAA/2B,YAAAjC,UAAAm5B,WAGlB,uDADFA,EAAO,KACF5kC,GAILohC,EAAA+D,qBAEC7Q,oBAAA,SAAA5U,SAUC,8CAACA,EAAA6b,iBACC7b,EAAAgD,YAAIhD,EAAA6lB,cAKLvS,gBAAI,OAIC,kBAAVtT,GAAA6Z,mdCrjCwBhb,GAAA,KAAAC,YAA2BD,IAAA,KAAA,IAAA7a,WAAA,mdAqB7C8hC,EAAU,SAAMrmB,kCAMZA,EAAAze,KAAOf,KAASue,EAAClc,EAAUiiB,kNAWlC,IAAAiV,GAAAA,EAAAyL,cAAA,eA1BG,eAUElmB,GAAI+mB,EAAWrmB,+NCpBDlN,GAAA,GAAAA,GAAAA,EAAsBmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEAClBE,GAAA,KAAAC,YAA2BD,IAAA,KAAA,IAAA7a,WAAA,wXACjC,gBAARqb,EAAElB,EAAAmB,OACE,mCACgB,iCACoBymB,kEAG/B,0IAUX5nB,EAAAwQ,GAMNqX,EAAA,SAAAvmB,gBAIA,GAAInd,GAACsB,UAAmB3C,QAAC,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,GACrB2gB,EAAI3gB,UAAW3C,QAAW,GAAA4B,SAAAe,UAAA,GAAA,aAAAA,UAAA,KAE3B3D,KAAA+lC,4BAKHvmB,EAAKze,KAAWf,KAAG,KAAQqC,EAAUiiB,GAInCtkB,KAAAy3B,aAAK,OACNhY,GAAA,UAAA,iCAGDzf,KAAKyf,GAAA,YAAK,WACRzf,KAAKy3B,aAAA,IAGPz3B,KAAIi1B,YAAQ5yB,EAAcirB,wCAI1BttB,KAAKgmC,mBAIAhmC,KAAAimC,sDAIN5jC,EAAA6jC,kBAAA,GAAA7jC,EAAA8jC,oBAAA;A/GnDH,A+GyaE,sGAhaInmC,KAAIomC,gBAmER,iFAnEIpmC,KAAIomC,gBA+ER,EACEpmC,KAAKqmC,8GAYHrmC,KAAAqmC,uBACErmC,KAAAsmC,iBAAKtmC,KAAoB2mB,YAAGpG,EAAAvN,KAAAhT,KAAA,WAGjC,GAAAumC,GAAAvmC,KAAAy4B,8FAOe,IAvGR8N,GAwGFvmC,KAACqmC,+BAULN,EAAAj6B,UAAO06B,iBAAA,WACRxmC,KAAAymC,UAAAzmC,KAAA2qB,YASCob,EAAAj6B,UAAO+d,SAAA,WACR,MAAA4V,GAAAC,gBAAA,EAAA,MASA5zB,UAAA2sB,gBAAA,qEASCsN,EAAAj6B,UAAKu6B,qBAAyB,iGA/I5BrmC,KAAI0mC,mBA0JR,EAEE1mC,KAAKyf,GAAA,OAAAzf,KAAA2mC,kBACL3mC,KAAKyf,GAAG,QAASzf,KAAK4mC,sEA7JpB5mC,KAAI0mC,mBAsKR,EACE1mC,KAAI4mC,0BAA4B5mC,KAAA6jB,IAAK,OAAA7jB,KAAA2mC,uBAA4B9iB,IAAA,QAAA7jB,KAAA4mC,2HAYjE5mC,KAAK6mC,oBAAmB7mC,KAAA2mB,YAAoB,qPAwB5Cof,EAAAj6B,UAASgW,QAAc,cAA+BwL,GAAAttB,KAAAstB,YAEtD,IAAIA,EAAwD,IAA9B,GAAI3sB,GAAC2sB,EAAAtsB,OAAyBL,wVA7M1D,MAAIX,MAAAy3B,mCA8P6BgI,EAAgBC,yDAS/C1/B,KAAA0mC,mBACF1mC,KAAK2hB,SAAQxW,KAAA,aAAmBiI,OAAApT,KAAA8mC,mBAAA,KAUlCf,EAAAj6B,UAAQi7B,uBAAyB,WAC/B,GAAAC,GAAOzmB,EAAoBvN,KAAAhT,KAAA,WAC3BA,KAAA2hB,QAAO,kHApRP3hB,KAAIyf,GAAA,UA6RRc,EAAAvN,KAAAhT,KAAiB,WACfqtB,EAAKmB,oBAAA,cAAoBwY,GACvB3Z,EAAImB,oBAAS,WAAAwY,iDAWf,IAAIlmB,EAAA,WAAkC,QAAW,MAAX9gB,KAAA+f,KAAW+K,WAAA,gHAC/C9qB,KAAI+f,KAAA+K,WAAgB/B,YAAhBke,KAA2B,WAAQ,QAAA,EAEvC,GAAA5Z,GAAArtB,KAAgBstB,mBAKd,GAAA4Z,GAAmB3mB,EAAAvN,KAAShT,KAAE,WAC5B,GAAAojB,GAAMpjB,KAETmnC,EAAA,WACA,MAAA/jB,GAAAzB,QAAA,uBAKD,KAAA,GAAOhhB,GAAA,EAAAA,EAAA0sB,EAAoBrsB,OAAQL,IAAE,CACpC,GAAA6sB,GAAAH,EAAA1sB,EACJ6sB,GAAAgB,oBAAA,YAAA2Y,8JA7TGpB,EAAIj6B,UAsVRwhB,WAAA,WAEE,MADAttB,MAAKi1B,YAAAj1B,KAAiBi1B,aAAQ,GAAAmS,GAAqB,WAC5CpnC,KAAKi1B,qQAxVV,OAAIoS,GAqXRrnC,KAAkB6sB,EAAAlD,EAAAxH,wFArXd,8CAoYFqL,MAAKA,kDApYHxtB,KAAIstB,aA+YRuX,aAASrX,4CAeTuY,EAAAj6B,UAAe0zB,UAAK,aAEhBuG,GACF3mB,EAAQ,WAEV2mB,GAAAj6B,UAAYmpB,eAEXoS,GAAA,SAAAtnC,EAAA8sB,EAAAlD,EAAAxH,GACD,GAAA9f,GAAYsB,UAAQ3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,GAEhB0pB,EAAQttB,EAAAutB,sBAIZ3D,iCAMFtnB,EAAKk3B,KAAUx5B,2BAKf,uBAAKytB,0JAYLuY,EAAKj6B,UAAAm6B,0BAAmC,0CAYpCF,EAAAuB,mBAAe,SAAA5I,GASfA,EAAAwG,sBAA0B,SAASqC,EAAA7iC,GACnC,GAAA8iC,GAAA9I,EAAA+I,mEAWAD,EAAO51B,OAAAlN,EAAC,EAAA6iC,IAUR7I,EAAAgJ,oBAAY,SAAAviC,UACZqiC,GAAA9I,EAAA+I,4EAOI,MAAAD,GAAgB7mC,EAIlB,OAAA,iEAWF,OAAIgnC,GACKA,EAAAzH,gBAAmB0H,GAG5B,wHASK5nC,KAAU6nC,eAAYxN,gGAetBsN,KAGAjJ,EAAAuB,oBACD0H,EAAIjJ,EAAAuB,oBAER5N,EAAY,WAAA3Z,MAAA,+EAMb1Y,KAAM6jB,IAAA,UAAU7jB,KAAA8nC,sBAEb9nC,KAAAu/B,eAAoBp6B,OACrB0iC,eAAAF,EAAAI,aAAA5iC,EAAAnF,MACDA,KAAAyf,GAAA,UAAAzf,KAAA8nC,yUCvkBqB,GAAAE,uBAAqB,IAAAC,4BAAA,IAAAC,qBAAA,IAAAC,iBAAA,IAAAC,kBAAA,IAAAC,0BAAA,IAAAC,kBAAA,EAAAhsB,gBAAA,IAAAisB,KAAA,SAAArnC,EAAAzB,EAAAD,8SAa1C8gB,EAAmBpC,EAAnBwQ,mBAaF,GAAA9R,GAAO5c,IAEH,IAAA+iC,EAAOyF,OAAK,GACbloB,EAAA,WAAAwiB,cAAA,mCAGClmB,EAAA6rB,GAAQC,EAAQ58B,UAAA28B,yCAMpB99B,OAAI2J,eAAiBsI,EAAM,UAC3B+rB,IAAK,WACD,MAAI3oC,MAAK4oC,oBAKThsB,SAII8rB,GAAO58B,UAAU+8B,SAAI,SAAApb,SACtBztB,KAAAgB,QAAA,IACA,EACJF,EAAA2sB,EAAAzsB,oBAGHhB,KAAI4oC,QAASnb,EAAMzsB,yBAGjB,GAAUL,IAAIX,OACZ2K,OAAA2J,eAAsBtU,KAAG,GAAAW,GAC1BgoC,IAAA,WACF,MAAA3oC,MAAA8oC,MAAAnoC,MAMC,IAAcG,EAAdioC,EAGE,IAFFpoC,EAAIooC,EAEIjoC,EAANH,EAAMA,IACPqoC,EAAAjoC,KAAAf,KAAAW,sQCtEY2R,GAAA,GAAiBA,GAAAA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,oEACbE,GAAA,KAAsBC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,8XA8N3CklC,SAASC,EAAA,GAAAA,EAAmB,GAAA,IAAO,IAAMD,SAAAC,EAAA,GAAAA,EAAA,GAAA,IAAA,IAAAD,SAAAC,EAAA,GAAAA,EAAA,GAAA,IAAA,IAAAC,EAAA,qGA5NrB,sBAANjrB,EAAAyK,KACO,mCACF,2BAEbmF,QAAW5sB,EAAO,mBAElBqf,EAAAM,EAAUiN,GAEdY,EAAuBxtB,EAAY,mBAInC6f,GAFuB7C,EAAAwQ,GAEvBxtB,EAAuB,kBAEvB4f,EAAuB5C,EAAkC6C,GAEzDqoB,EAAuB,OACvBC,EAAA,6YAuBE,QAAOC,GAAc/qB,EAAMlc,EAAWiiB,GACpClG,EAAWpe,KAASspC,GAElB9pB,EAAOze,KAAAf,KAAAue,EAAAlc,EAAAiiB,qDAGT/F,EAAAkB,GAAO,kBAAGc,EAAoBvN,KAAGhT,KAAKA,KAAMmnC,kBAM3C7iB,MAAA/D,EAAAvN,KAAAhT,KAAA,WACD,GAAEue,EAAAwJ,OAAAxJ,EAAAwJ,MAAA,oCACL/nB,MAAA2sB,sTAsBC3sB,KAAOmlB,QAhDLmkB,EAAgBx9B,UA0DpB6T,SAAA,WACE,MAAIH,GAAO1T,UAAA6T,SAAO5e,KAAAf,KAAS,OACzBqnB,UAAA,4BA5DAiiB,EAAgBx9B,UAqEpBy9B,aAAa,WAC4B,kBAA7BzoB,GAAgB,WAAa,mEAWnCwoB,EAAKx9B,UAAeq7B,cAAO,cAC5B9Z,GAAArtB,KAAAmhB,QAAAmM,gBAEJttB,KAAAupC,4EApFGvpC,KAAAwpC,eAAgBhc,KAwGlB8b,EAAAx9B,UAAA09B,eAAiB,SAAchc,4DAQ7B,IAAA,GAHAic,GAAczpC,KAAKmhB,QAAE,kBAAAuoB,YAEpBjc,KACGkc,EAAA,EAAUA,EAAAnc,EAAa,WAAAxsB,OAAA2oC,IACzBlc,EAAAxlB,KAAAulB,EAAsB,WAAAmc,GAMtB7oB,GAAO,WAAiB,OAAkB,YAAAA,EAAU,WAAgB0M,EAAA,WAAAxtB,KAAAuhB,IAGpE,KADF,GAAA5gB,GAAI8sB,EAAAzsB,OACFL,KAAA,IAIDipC,GAAAnc,EAAA9sB,GAAAkpC,gBACGJ,EAAUP,QACZU,EAAIhE,WAAUngB,MAAAyjB,MAAeO,EAAAP,OAI5BO,EAAMK,aACLC,EAAaH,EAAAhE,WAAkB,QAAUoE,EAAYP,EAAAP,OAAA,OAAAO,EAAAK,cAExDL,EAAAQ,kBACDL,EAAIhE,WAAUngB,MAAWwkB,gBAAAR,EAAAQ,iBAErBR,EAAOS,qBACEN,EAAUhE,WAAS,kBAAeoE,EAAAP,EAAAQ,iBAAA,OAAAR,EAAAS,oBAE5CT,EAAUU,cACTV,EAAOW,cACRL,EAAUH,EAAU,kBAAuBI,EAAEP,EAAAU,YAAAV,EAAAW,gBAE7CR,EAAAnkB,MAAAwkB,gBAAAR,EAAAU,aAGDV,EAAcY,YACW,eAAzBZ,EAAaY,UACbT,EAAOhE,WAAYngB,MAAG6kB,WAAO,eAAAlB,EAAA,iBAAAA,EAAA,iBAAAA,EACH,WAAnBK,EAAYY,UACnBT,EAAOhE,WAAYngB,MAAG6kB,WAAM,WAAAlB,EAAA,aAAAA,EAAA,aAAAA,EAC7B,cAAAK,EAAAY,UACGT,EAAAhE,WAAUngB,MAAc6kB,WAAU,WAAejB,EAAW,WAAAA,EAAA,eAAAD,EAAA,YAAAA,EACjC,YAAzBK,EAAUY,YACZT,EAAOhE,WAAWngB,MAAM6kB,WAAW,WAAelB,EAAC,aAAAA,EAAA,aAAAA,EAAA,aAAAA,IAGpDK,EAAAc,aAAA,IAAAd,EAAAc,YAAA,CACF,GAAAC,GAAA1pB,EAAA,WAAA+S,WAAA+V,EAAAnkB,MAAA+kB,SACFZ,GAAAnkB,MAAA+kB,SAAAA,EAAAf,EAAAc,YAAA,KACFX,EAAAnkB,MAAA+N,OAAA,4BAlKG/N,MAAAglB,OAAgB,+CA8KS,eAAtBhB,EAAAiB,WACAd,EAAOhE,WAAAngB,MAAAklB,YAAA,aAEJf,EAAOhE,WAAWngB,MAAMilB,WAChCE,EAASnB,EAAWiB,8HC7MtBG,eAAY,GAAAC,yBAAU,IAAAC,uBAAA,IAAAC,kBAAA,IAAA7C,iBAAA,IAAAG,kBAAA,EAAAhsB,gBAAA,IAAA2uB,KAAA,SAAA/pC,EAAAzB,EAAAD,eAUxBA,GAAIif,YAAgB,CAClB,IAAAysB,IACAC,SAAY,WACZC,OAAA,SACAC,QAAU,2LCCN,YAEE7rC,GAAAif,YAAa,CACb,IAAA6sB,GAAU,SAAI9d,GACd,YACAA,EAAAX,WACFW,EAAA7D,MACFxH,SAAUqL,EAAIrL,SACdpf,GAAAyqB,EAAAzqB,GACFwoC,gCAAA/d,EAAA+d,2KAUElW,IAAA7H,EAAA6H,MAUFmW,EAAqB,SAAuBjS,GAC1C,GAAAkS,GAAOlS,EAAUxZ,KAAA2rB,iBAAsB,SAEzCC,EAAA/mC,MAAAkH,UAAA+I,IAAA9T,KAAA0qC,EAAA,SAAAtrC,4KAUE,MAAA,KAAAwrC,EAAgB5tB,QAAGyP,KACrB3Y,IAAKy2B,+CAUS9d,yOCzEQ/tB,EAAAD,2BAEC8S,GAAA,GAAAA,GAAqBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAlCR,GAAO5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,KADLmM,YAAA,iIA6BZmtB,EAAkB,QAAAA,GAAAve,aAGhB,IAAA0V,EAAKyF,OAAA,CACH5rB,EAAA0D,EAAoB,WAAOwiB,cAAA,SAE7B,KAAC,GAAA2F,KAAAmD,GAAA9/B,sCAMH8Q,EAAIivB,kBAEHv3B,eAAAsI,EAAA,UACD+rB,IAAA,sGAUF/rB,YAIE9Q,UAAAnB,OAAAsU,OAAA6sB,EAAA,WAAAhgC,qCAQA8/B,EAAY9/B,UAAK2kB,gBACjBsb,OAAQ,SACNC,SAAO,WACLC,YAAK,mBAIR,GAAAC,KAAAN,GAAA9/B,UAAA2kB,0CAIG3kB,UAAAo2B,UAAA,SAAA1U,GACJ,GAAI9oB,GAAQ1E,KAAK6rC,QAAQ7qC,qBAEzB2J,OAAK2J,eAAQtU,KAAA0E,GACXikC,IAAM,WACN,MAAO3oC,MAAK6rC,QAAAnnC,MAKd8oB,EAAIQ,iBAAc,aAAAzN,EAAAvN,KAAAhT,KAAA,WAClBA,KAAI2hB,QAAK,aAET3hB,KAAK6rC,QAAQ5jC,KAAIulB,GAEfxtB,KAAA2hB,SACExW,KAAI,WACJqiB,MAAAA,KAIJoe,EAAY9/B,UAAC+4B,aAAA,SAAAsH,GAIb,IAAA,GAFE3e,GAAO5qB,OAETjC,EAAA,EAAAG,EAAAd,KAAAgB,OAAAF,EAAAH,EAAAA,IAEF,aAAA6sB,IAAc2e,EAAU,CAClBnsC,KAAA6rC,QAAaj6B,OAACjR,EAAA,SAKdX,KAAA2hB,SACAxW,KAAA,oBACDqiB,OAIH1hB,UAAAsgC,aAAA,SAAArpC,4QCpHsBuP,GAAA,GAAAA,GAAoBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAhCR,GAAM5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,cACEuM,EAAAD,GAAgB,KAAAC,YAAAD,IAAA,KAAA,IAAA7a,WAAA,6CAAtB+a,GAAAC,EAAAC,GAAA,GAAA,kBAAAA,IAAA,OAAAA,EAAA,KAAA,IAAAjb,WAAA,iEAAAib,GAAAD,GAAAjT,UAAAnB,OAAAsU,OAAAD,GAAAA,EAAAlT,WAAAiC,aAAA5G,MAAA4X,EAAAlM,YAAA,EAAA+B,UAAA,EAAAD,cAAA,KAAAqK,IAAArU,OAAAuU,eAAAvU,OAAAuU,eAAAH,EAAAC,GAAAD,EAAAI,UAAAH,GA0Nd,QAASqtB,GAAkBj5B,GACzB,GAAIk5B,GAAQ1pC,MAQR,OANHwQ,GAAAm5B,uCAEIn5B,EAAC/Q,UACNiqC,EAAgBl5B,EAAO/Q,QAAQ+Q,EAAS/Q,QAAImqC,gBAGxCF,EAAMnlC,sBAIV,GAAAA,EAAA,CAIA,GAAIxG,GAAAiC,uCAiHF,GAAA6pC,GAAer5B,EAAC/Q,QAAA1B,EACnB,IAAA8rC,EAAAtlC,QAAAA,6uKAhVK+W,EAAiB6C,KASlB,SAAAvB,GAGC,QAAKktB,GAAenuB,EAAAlc,GACpB+b,EAAYpe,KAAA0sC,oBAGd1sC,KAAA2sB,OAG0B/pB,SAAxBP,EAAUsqC,2BACV3sC,KAAKkjB,SAAKypB,yBAAc3sC,KAAAkjB,SAA8BK,cAAaopB,0BAGnEtsB,EAAKZ,GAAEzf,KAAG+f,KAAAwT,cAAc,oBAA0B,QAAAhT,EAAavN,KAAKhT,KAAA,WACpEA,KAAK4sC,eACL5sC,KAAK2sB,6FAIP3sB,KAAO+f,KAAGwT,cAAU,0BAAciZ,cAA2B,EAC7DxsC,KAAO+f,KAAGwT,cAAU,0BAAciZ,cAA2B,EAC7DxsC,KAAO+f,KAAGwT,cAAU,0BAAciZ,cAA2B,EAC7DxsC,KAAO+f,KAAGwT,cAAU,8BAAciZ,cAA+B,EACjExsC,KAAO+f,KAAGwT,cAAU,4BAAciZ,cAA6B,EAC/DxsC,KAAO+f,KAAGwT,cAAU,gCAAciZ,cAAiC,EACnExsC,KAAO+f,KAAGwT,cAAU,0BAAciZ,cAA6B,EAC/DxsC,KAAO+f,KAAGwT,cAAU,2BAAciZ,cAAmC,EACrExsC,KAAO+f,KAAGwT,cAAU,4BAAciZ,cAAoC,4BAIrE/sB,GAAAzf,KAAA+f,KAAAwT,cAAA,0BAAA,SAAAhT,EAAAvN,KAAAhT,KAAAA,KAAAmnC,gBACF9mB,EAAAZ,GAAAzf,KAAA+f,KAAAwT,cAAA,0BAAA,SAAAhT,EAAAvN,KAAAhT,KAAAA,KAAAmnC,ssBA1CGnnC,KAAAkjB,SAAiBypB,0BAmDnB3sC,KAAO6sC,kNAkCP,GAAI9sB,GAAA/f,KAAS+f,KAEX+sB,EAAaT,EAAatsB,EAAAwT,cAAA,2BAC1BmX,EAAe2B,EAAetsB,EAAAwT,cAAA,4BAC9BwZ,EAAWV,EAAUtsB,EAAAwT,cAAA,2BACrBuW,EAAcuC,EAAUtsB,EAAAwT,cAAA,+BACxByZ,EAASX,EAAOtsB,EAAAwT,cAAA,2BAChB0Z,EAAAZ,EAA0BtsB,EAAAwT,cAAA,6BAC1B4W,EAAekC,EAAWtsB,EAAAwT,cAAA,2BAC1B6W,EAAeiC,EAAWtsB,EAAAwT,cAAA,iCAC1BgX,EAAAzpB,EAAA,WAAA,WAAAurB,EAAAtsB,EAAAwT,cAAA,gCAEAvwB,GACEknC,kBAAkB+C,cACnBnD,EACFM,cAAAA,EACDC,UAAcyC,EACfpC,WAAAA,uJA6BCgC,EAAe5gC,UAAUohC,UAAY,SAAAC,kBAGnCC,GAAcrtB,EAAAwT,cAAmB,0BAAI4Z,EAAA9C,aACtCtqB,EAAAwT,cAAA,2BAAA4Z,EAAAzC,iEAED0C,EAAkBrtB,EAAGwT,cAAc,8BAA+B4Z,EAAArD,aACnEsD,EAAArtB,EAAAwT,cAAA,0BAAA4Z,EAAAlD,0OA1IGM,EAAiBA,EAiJrB5e,QAAA,MACU5L,EAAAwT,cAAA,8BAAAgX,MAQPz+B,UAAA+gC,gBAAA,WACF,GAAAnR,GAAA2R,EAAA,WAAAvsB,EAAA,WAAAwsB,aAAAC,QAAA,mEAQKJ,GACFntC,KAAAktC,UAAOC,MAUKrhC,UAAA8gC,aAAA,WACf,GAAA5sC,KAAAkjB,SAAAypB,yBAAA,kJAQK7rB,EAAY,WAAawsB,aAASE,WAAA,2BAEpC,MAAAttC,OAQNwsC,EAAS5gC,UAAAq7B,cAA+B,WACtC,GAAIsG,GAAcztC,KAAAmhB,QAAC6B,SAAA,uBAEfyqB,EAAOtG,iBAIVuF,mBAGF,WAAArP,kBAAA,oBAAAqP,kFC1N4B,IAAAvE,iBAAuB,IAAAC,kBAAA,IAAA9rB,gBAAA,EAAAoxB,wBAAA,KAAAC,KAAA,SAAAzsC,EAAAzB,EAAAD,2BAE9B8S,GAAA,GAAAA,GAAkBA,EAAAmM,WAAA,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAxBR,GAAA5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,KADFmM,YAAA,UAEW,yBAAbmvB,EAAO1vB,EAAA2vB,yBACPttB,EAAAM,EAAaiN,OACT,+BACQ,kCACH,+DAES,qBACd5P,EAAK4vB,sGAkCfC,EAAQ,QAAGA,QACZ1rC,GAAAsB,UAAA3C,QAAA,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,cAGD,KAAM,IAAG/C,OAAO,2BAGlB,IAAI8hC,GAAI1iC,IACR,IAAI+iC,EAAQyF,OAAQ,CACpB9F,EAAIpiB,EAAmB,WAAWwiB,cAAY,mCAG1CJ,EAAA+F,GAASsF,EAAUjiC,UAAQ28B,GAI/B/F,EAAG3a,MAAQ1lB,EAAGk3B,+CAGV1M,EAAOmhB,EAAAC,cAAA5rC,EAA6B,OAAE,YACtCsnB,EAAAtnB,EAAa,OAAA,+BAEbU,EAAAV,EAAgB,IAAA,kBAAAgf,EAAAC,WAEb,aAALuL,GAAmB,aAAAA,KACnBqhB,EAAI,YAGHpF,WACAqF,cAED,IAAE1gB,GAAO,GAAGmgB,GAAc,WAAiBlL,EAAEoG,OAC9CsF,EAAA,GAAAR,GAAA,WAAAlL,EAAAyL,aAEDE,GAAO,EACLC,EAAgB/tB,EAAAvN,KAAA0vB,EAAA,WACd1iC,KAAY,WACbquC,IACDruC,KAAc,QAAA,aACbquC,GAAA,IA+GH,OA5GO,aAALH,GACExL,EAAA3a,MAAOtI,GAAA,aAAM6uB,UAGdh6B,eAAAouB,EAAA,uBAEH,MAAO7V,IAEH0hB,IAAAjhC,SAAOxB,mBAGRwI,eAAAouB,EAAA,wBAEH,MAAO/Y,IAEH4kB,IAAAjhC,SAAUxB,mBAGXwI,eAAAouB,EAAA,2BAEH,MAAOvgB,IAEHosB,IAAAjhC,SAAYxB,YAGZnB,OAAA2J,eAAkBouB,EAAC,MACjBiG,IAAA,iBACD5lC,IAEDwrC,IAAAjhC,SAAQxB,YAGRnB,OAAA2J,eAAaouB,EAAA,YACd,WACA,MAAAwL,IAEHK,IAAO,SAAAC,GACAR,EAAW9C,cAAAsD,OAGbA,iBAEDxuC,KAAO+nB,MAAKtI,GAAA,aAAA6uB,GAEdtuC,KAAK2hB,QAAS,kBAIdhX,OAAK2J,eAAWouB,EAAA,QACdiG,IAAA,WACE,MAAA3oC,MAAOyuC,QAIPhhB,EAHD,qEASDkb,IAAA,WACE,IAAA3oC,KAAOyuC,QACP,MAAO,KAGL,IAAiB,IAAjBzuC,KAAW,KAACgB,aACbotC,EAMD,KAAA,GAHFM,GAAO1uC,KAAG+nB,MAAM0D,mBAGP9qB,EAAG,EAAIG,EAACd,KAAA,KAAAgB,OAAAF,EAAAH,EAAAA,IAAA,CAChB,GAAAitB,GAAM5tB,KAAA,KAAAW,EACLitB,GAAiB,WAAG8gB,GAAO9gB,EAAa,SAAA8gB,EACtCC,EAAI1mC,KAAQ2lB,GACHA,EAAQ,YAAAA,EAAA,SAAAA,EAAA,WAAA8gB,GAAA9gB,EAAA,UAAA,IAAA8gB,KAChBzmC,KAAA2lB,MAILygB,GAAK,qCAGLA,GAAO,MAEN,KAAE,GAAQ1tC,GAAC,EAAAA,EAASguC,EAAA3tC,OAAAL,IACtB,KAAAod,EAAAhd,KAAAf,KAAAmuC,YAAAQ,EAAAhuC,WASC,OAHAX,MAACmuC,YAAeQ,EACnBP,EAAAvF,SAAA7oC,KAAAmuC,aAEUC,GAEVG,IAAAjhC,SAAAxB,YAGHzJ,EAAUgzB,KACVqN,EAAArN,IAAUhzB,EAAUgzB,6BAMlB0N,EAAWyF,OACX9F,EADA,0DAMAqL,EAAIjiC,UAAQiC,YAAAggC,IAKTjiC,UAAA2kB,0BACF,aAGDsd,EAAKjiC,UAAQ8iC,OAAc,SAAOhhB,GAClC,GAAAP,GAAArtB,KAAA+nB,MAAAuF,YAEF,IAAAD,EACE,IAAI,GAAO1sB,GAAG,EAAAA,EAAM0sB,EAAArsB,OAAAL,iBAEf0sB,EAAQ1sB,GAAGkuC,UAASjhB,QAKtBkb,MAAA7gC,KAAA2lB,QACF,KAAAib,SAAA7oC,KAAA8oC,QAGCiF,EAAKjiC,UAAK+iC,UAAc,SAAOA,UAChCC,IAAA,sFAMCA,GAAY,GAIVA,QACGrhB,KAAEob,SAAA7oC,KAAA8oC,WAOPiG,GAAA,QAAAA,GAAAC,EAAAxhB,GACF,GAA2C,kBAApC1M,GAAiB,WAAmB,OAEzC,MAAAA,GAAA,WAAAvd,WAAA,mBAEF,6GAKA0rC,GAAW,MAAA,SAAArhB,GACTJ,EAAKohB,OAAGhhB,iCAGVyE,EAAe,WAAG3Z,MAAAA,MAGjB,MAAAs2B,cAIGE,EAAO,SAAA7Z,EAAI7H,MACZlK,WAIC6rB,EAAA1Q,EAAA2Q,cAAA/Z,EACJ8Z,eAIEE,EAAA,WAAU/rB,EAAU/C,EAAAvN,KAAAhT,KAAA,SAAA8Y,EAAAc,EAAiC01B,GACtD,MAAAx2B,4BAID0U,EAAOihB,SAAW,mCAMlB,GAAS,MAALzuC,6DAIHuvC,GAAA5kC,OAAA3K,MAEGid,EAAKsyB,EAAGvuC,SAAE,KAEb,IAAAic,UAID,IAAA7c,IAAQovC,GAAQ,CAMhB,IAJIrrC,KAAAsrC,IAASrvC,aACV,GAGHA,GAAS6c,EACT,MAAA,mZC3SF,SAAMiB,GAAqB5L,GAAA,MAAmBA,IAAAA,EAAWmM,WAAAnM,GAAuBqM,UAAQrM,GAFxF9S,EAAMif,YAAa,mGAYNixB,EAAoB,yBAAiBC,KAAAC,gCAMvBC,EAAY,UAAI7kC,KAAA4kC,KAAEC,UAAAA,KACzCC,GAAC,QAAA9kC,KAAA4kC,oCAEEpwC,GAAMuwC,QAAcA,4CAIzB,GAAI9O,GAAQ2O,EAAW3O,MAAM,oBAC3BA,IAAKA,EAAA,GACAA,EAAC,eAIP+O,YAAAA,0BAEDxwC,GAAKywC,WAAWA,CAChB,IAAAC,GAAoB,WAGlB,GACDC,GACCC,EAFAnP,EAAO2O,EAAW3O,MAAQ,yCAI1B,OAAAA,6BAIGmP,EAAMnP,EAAA,IAAiBpN,WAAUoN,EAAK,IAChCkP,GAAAC,8BAEAD,EACA,MAPV,2BAUI,IAAM1K,GAAiBwK,GAAG,UAAcjlC,KAAA4kC,IAAe,IAAfM,oBACxC,IAAMG,GAAAJ,GAAgD,EAApBC,GAA6B,IAATI,2RCxD7B,kBAAkBhwB,GAAA,WAAAwiB,cAAA,SAAArd,gIAuBhD,GACEhhB,GACAulB,EAFFumB,EAAoB,QAKlB,MAAO,iBAIP1mB,EAAA2mB,EAAuB9Q,gBAAS,EAAA,GAGlC,KAAA,GAAO/+B,GAAA,EAAAA,EAAAkpB,EAAmB7oB,OAASL,IACpC8D,EAAAolB,EAAAplB,MAAA9D,8EAzBM,IAAA6vC,GAAStvC,EAAgB,gFCNhC,SAAMgd,GAAmB5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,kBAErB,IAAAm+B,GAAOvvC,EAAS,YAElBwvC,EAAGxyB,EAAkBuyB,2EA4BbjxC,GAAA,WAAA,SAAI4T,GACJ,GAAAu9B,GAAAhtC,UAAO3C,QAAiB,GAAiB4B,SAAZe,UAAU,MAAaA,UAAA,MAEvD,kBAAAitC,OAAA,IACDvN,GAAC,oGAIE,MADNqN,GAAA,WAAAG,KAAAF,EAAA/qC,IACakrC,EAAAlrC,GAAA3C,MAAAjD,KAAA2D,mUC3CO2O,GAAW,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,WAAjBy+B,GAAAC,EAAAC,GAAA,MAAAD,GAAAC,IAAAA,EAAAD,gBA4BV,0CAAS1wB,EAAqD,WAAA4wB,eAAAnuC,gBASjE,GAAAif,GAAYre,UAAS3C,QAAQ,GAAwB4B,SAAjBe,UAAI,GAAuB,MAAQA,UAAa,GAClFse,EAAAte,UAAQ3C,QAAA,GAAA4B,SAAAe,UAAA,MAEgFA,UAAK,GAC7Fic,EAAGjc,UAAa3C,QAAe,GAAA4B,SAAAe,UAAA,MAAAA,UAAA,GAE/Boc,EAAGO,EAAgB,WAAAwiB,cAAA9gB,EAoBlB,eAlBFvP,oBAAAwP,GAAAtF,QAAA,SAAAw0B,+DAOHT,EAAU,WAAAG,KAAAO,EAAA,WAAAC,EAAAF,EAAA3rB,IACXzF,EAAAmJ,aAAAioB,EAAA3rB,6FAUezF,8DAgBVuxB,EAAMvoB,YAAMxG,WA8BjBgvB,GAAAxxB,aAUM,gDAASyxB,EAAAzuC,uCAkBL4H,OAAG8H,oBAAU++B,EAAAzuC,IAAA/B,UAWpB,QAAA+gB,GAAkBhC,MAClBhd,GAAMgd,EAAG0xB,EAEP,IAAA1uC,EAAA,OAKHyuC,GAAAzuC,+EAqBI,QAAS8hB,GAAW6sB,EAAS9sB,GAClC,MAAsC,MAAjC,IAAA8sB,EAAWrqB,UAAS,KAAatJ,QAAA,IAAA6G,EAAA,8BAYjC8sB,EAASrqB,UAAoC,KAAtBqqB,EAASrqB,UAAetC,EAAA2sB,EAAArqB,UAAA,IAAAtC,WAUnDG,GAAAwsB,EAAAzsB;A1H5LH;AACA,A0HwMOysB,EAASrqB,UAAAsqB,EAAoB97B,KAAA,8LAoChC,GAAAvD,GAAKs/B,EAAcC,EAAUC,EAAUC,KAErCz/B,wFAQEu/B,EAAAnhC,EAAOkP,yCAGTkyB,EAAID,EAAYlxC,GAAA8T,KACjBs9B,EAAAF,EAAAlxC,GAAAwG,OAIJ,iBAAAuJ,GAAAohC,IAAA,KAAAF,EAAA7zB,QAAA,IAAA+zB,EAAA,iCAUC,MAAAx/B,0CAWKgO,EAAS,WAAoB0xB,cAAG,WACrC,OAAA,wEA0BCnnB,GAAA9K,eAOD,IAJMA,EAAAkyB,uBAAOlyB,EAAA+K,2CAIPonB,SAEAx0B,KAAA,EACAy0B,IAAA,EAIN,IAAAC,GAAO9xB,EAAA,WAAA8Y,gBACLzf,EAAM2G,EAAgB,WAAA3G,KAEtB04B,EAAAD,EAAAC,YAAA14B,EAAA04B,YAAA,EACHC,EAAAxxB,EAAA,WAAAyxB,aAAA54B,EAAA24B,uJAwBG,QAAKE,GAASzyB,EAAcU,GAC5B,GAAAmK,MACDsnB,EAAArnB,EAAA9K,mBAED0yB,EAAU1yB,EAAG+jB,qBAGb4O,EAAOR,EAAQx0B,KAChBi1B,EAAAlyB,EAAAkyB,2ZA/WoBC,qDACa,4MAAA,OAAA,MAAA,4MAAA,OAAA,QAElB1xC,EAAA,4BACCA,EAAM,mFAWrBkwC,EAAOlzB,EAAoB20B,qKCPVvgC,GAAA,MAAeA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,+JA0BhC,QAAOmN,GAACqzB,EAAQ3nC,EAAKiJ,uBAErB,MAAK2+B,GAAwBtzB,EAAAqzB,EAAA3nC,EAAAiJ,EAG3B,IAAAgH,GAAK4F,EAAQuwB,UAASuB,+BAKpB13B,EAAKosB,SAAGr8B,KAAciQ,EAAEosB,SAAAr8B,OAExBiJ,EAAI2P,OAAA3P,EAAQ2P,KAAQ1C,EAAAC,WAEpBlG,EAAAosB,SAAIr8B,GAAUlD,KAAAmM,GAEZgH,EAAI43B,2BAGF53B,EAAA43B,WAAU,SAAAvyB,EAAAwyB,SAET9H,UACC1qB,EAAAyyB,EAAAzyB,MAEH+mB,GAAApsB,EAAAosB,SAAA/mB,EAAAtV,KAEH,IAAAq8B,EAIE,IAAK,iBAAA2L,EAAA,EAAA/yC,EAAAgzC,EAAkBpyC,OAAAZ,EAAA+yC,IACpB1yB,EAAA4yB,gCADoBF,IAI1BC,EAAAD,GAAApyC,KAAA+xC,EAAAryB,EAAAwyB,6IAsBD,QAAApvB,GAAOivB,EAAA3nC,EAAAiJ,sBAIT,GAAIgH,GAAA4F,EAAUuwB,UAAGuB,MAGf13B,EAAAosB,UAIA,GAAA5iC,MAAKiC,QAASsE,GAAe,MAAA4nC,GAAclvB,EAAAivB,EAAA3nC,EAAAiJ,EAI7C,IAAIk/B,GAAW,SAAoBnzC,2BAMnC,IAAKgL,EAAL,CAMA,GAAIq8B,GAASpsB,EAAAosB,SAAAr8B,EAGP,IAAAq8B,EAAA,KAGLpzB,EAED,sGAbE,KAAA,GAAAjU,KAAWib,GAAMosB,SACjB8L,EAAOnzC,aAoCRwhB,GAAAmxB,EAAAryB,EAAAwyB,0CAKG3B,EAASwB,EAAAhoB,YAAYgoB,EAAAS,aAkBrB,yBAZF9yB,GAAUtV,KAAKsV,EAAMrN,OAAA0/B,kDAYnBxB,IAAI7wB,EAAO+yB,wBAA6B/yB,EAAAmB,WAAY,EAClDD,EAAA5gB,KAAM,KAAOuwC,EAAM7wB,EAAQwyB,OAG7B,KAAA3B,IAAW7wB,EAAWgzB,iBAAM,IAC7BC,GAAA1yB,EAAAuwB,UAAA9wB,EAAArN,2BAKJsgC,EAAAvI,UAAA,yEAUM,OAAS1qB,EAAIgzB,gKAqBbh0B,EAAAqzB,EAAS3nC,EAAQhJ,iBAUtB,QAAKwxC,KACH,OAAO,EAEP,QAAKC,8CAUH,GAAAC,GAAOpzB,GAAKK,EAAoB,WAAQL,0BAazC,WAAA7a,GAAA,WAAAA,GAAA,gBAAAA,GAAA,oBAAAA,GAAA,oBAAAA,IAGU,gBAADA,GAAgBiuC,EAAAlzB,iBACxBF,EAAM7a,GAAAiuC,EAAajuC,QAQjB6a,EAAIrN,WACLA,OAAAqN,EAAAqzB,YAAAxzB,EAAA,YAIDG,EAAAszB,oFAKFtzB,EAAME,eAAe,WACfkzB,EAAIlzB,gBACNkzB,EAAIlzB,iBAENF,EAAMuzB,aAAY,EAClBH,EAAIG,aAAY,EAChBvzB,EAAMgzB,kBAAA,GAGRhzB,EAAMgzB,kBAAA,EAGNhzB,EAAM+Z,gBAAA,WACAqZ,EAAIrZ,iBACNqZ,EAAIrZ,kBAEN/Z,EAAMwzB,cAAA,EACNJ,EAAAI,cAAM,EACNxzB,EAAA+yB,qBAAAG,4BAMAlzB,EAAI0c,yBAAM,WAA0B0W,EAAI1W,uDAKxC1c,EAAM4yB,8BACIM,EAEXlzB,EAAA+Z,mBAGD/Z,EAAM4yB,8BAAgCO,mBAItC,GAAIM,GAAM5zB,EAAgB,WAAA8Y,gBACxBzf,EAAM2G,EAAsB,WACzB3G,IAGN8G,GAAAwF,MAAAxF,EAAA0zB,SAAAD,GAAAA,EAAA5B,YAAA34B,GAAAA,EAAA24B,YAAA,IAAA4B,GAAAA,EAAA7B,YAAA14B,GAAAA,EAAA04B,YAAA,+LAeD,MAAI5xB,WAWD2zB,GAAetB,EAAA3nC,GACd,GAAAiQ,GAAK4F,EAAAuwB,UAAgBuB,mDASxBA,EAAAtkB,4EAGGskB,EAAAuB,YAAO,KAAAlpC,EAAoBiQ,EAAM43B,4PA5VvBvzB,GAAAA,gCACCyzB,SAAAA,6SCuBf,IAAAoB,GAAU,WACV,MAAAlgC,GAAAnR,MAAA4Z,EAAAlZ,gICVE,GAAA4wC,GAAQ5wC,UAAQ3C,QAAA,GAAA4B,SAAAe,UAAA,GAAA60B,EAAA70B,UAAA,SACjB,yDAGI6wC,EAAIrwC,KAAKswC,MAAMjc,EAAW,gOCrB7Bkc,KAAK,SAAKxzC,EAAAzB,EAAAD,wCASZA,EAAAif,YAAe,IAChB6C,QAAAA,sGCmCG,QAAAqzB,GAAaxpC,EAAAhI,sDASdyxC,EAAA9zB,EAAA,WAAA,uBAGDpI,MAAW2D,EAGXlR,kCAKCA,EAAM,MAIR0pC,EAAAC,QAAA7sC,KAAA8sC,sEAnECv1C,EAAAif,YAAe,+CAYjBk2B,EAAS,KAAGhxC,WAOZkxC,GAAIC,oDAYJD,EAAAhE,KAAS,iHClCP,kEAcA,QAAKmE,GAAQ1iC,GACX,QAAOA,GAAO,gBAAAA,IAAA,oBAAAA,EAAA1H,YAAA0H,EAAAvE,cAAApD,OAkChB,QAAAsqC,KAGA,GAAA9xC,GAAWyB,MAAIkH,UAAAwJ,MAAAvU,KAAA4C,sJA7Bf6C,EAAa,SAAc0uC,EAAA/vC,GAG3B,MAAA6vC,GAAA7vC,gDC7BAgwC,6BAAY,KAAAC,KAAS,SAAAl0C,EAAczB,EAASD,GAC5C,kEAEAA,EAAAif,YAAa,CAGR,IAAIiQ,GAAiBxtB,EAAjB,mBAEPof,EAAcpC,EAAkBwQ,GAEhC2mB,EAAiB,SAAQhuB,MAC1B5B,GAAAnF,EAAA,WAAAwiB,cAAA,eACDrd,GAAA4B,UAAAA,uOCYA,QAAIiuB,GAAoB7wC,EAAIulB,GAC1B,MAAAplB,OAAOiC,QAAApC,GACL8wC,EAAS9wC,GACF7B,SAAA6B,GAAW7B,SAAAonB,EAChBurB,IAECA,IAAa9wC,EAAAulB,KAKpB,QAAOurB,GAAA5V,GACL,MAAQ/8B,UAAR+8B,GAAqB,IAAAA,EAAA3+B,QAErBA,OAAK,EACLyD,MAAA,WACH,KAAA,IAAA7D,OAAA,oCAEDopB,IAAS,WACH,KAAA,IAAUppB,OAAK,sCAKnBI,OAAO2+B,EAAO3+B,OACfyD,MAAA+wC,EAAAxiC,KAAA,KAAA,QAAA,EAAA2sB,uCAKE6V,GAAAC,EAAAC,EAAA/V,EAAAgW,SACF/yC,UAAA+yC,uXAtBKjW,gBAAA4V,qTEtBJv0B,EAAe7f,EAAY,wBAW3B00C,EAAa,SAAEj7B,GACb,GAAAjV,IAAM,WAAA,WAAS,OAAA,WAAqB,SAAA,OAAA,yCAIpCjF,GAAAo1C,KAAIl7B,kDAOFm7B,KACJC,EAAKz1B,EAAoB,WAAUwiB,cAAI,OACrCiT,EAAA91B,UAAgB,YAActF,EAAE,SACjCla,EAAAs1C,EAAAnQ,+GASAoQ,yBAEDA,EAAItwC,EAAW/E,IAAAF,EAAAiF,EAAA/E,UAKf,UAAAq1C,EAAAC,8IAaAz2C,GAAKo2C,SAAUA,iJAkBf,MAAGj7B,8LAoBH,MAAI,4BAWJy0B,GAAA,SAAAz0B,gLCnHmB,IAAAu7B,KAAiB,SAAAh1C,EAAAzB,EAAAD,2BAEV8S,GAAA,GAAAA,GAAAA,EAAAmM,WAAuB,MAAAnM,EAAA,IAAAoM,KAAA,IAAA,MAAApM,EAAA,IAAA,GAAA1M,KAAA0M,GAAA3H,OAAAmB,UAAAF,eAAA7K,KAAAuR,EAAA1M,KAAA8Y,EAAA9Y,GAAA0M,EAAA1M,GAAA,OAAA8Y,GAAA,WAAApM,EAAAoM,UAAvCR,GAAU5L,GAAA,MAAAA,IAAAA,EAAAmM,WAAAnM,GAAAqM,UAAArM,KADVmM,YAAK,WAEK,oDAEE,yBAAZ03B,EAAMt1B,EAAAu1B,OACC,0BACA,yEAEPC,EAAEn4B,EAAAo4B,gCAGKp1C,EAAA,uEAEI4sB,mCACP5P,EAAgBq4B,wBACpB9W,KAAyBngB,GAAtBpe,EAAA,+BACU,0BAAb0qB,EAAO1N,EAAA8M,OACE,kBAATqH,EAAGnU,EAAAoU,OACM,2FAGA,0DAGHpU,EAAiBs4B,gDACjBt4B,EAAiBu4B,qBAMjCC,EAAAx1C,EAAA,kOA+BE,GAAAwP,EAII,IAAA,gBAAA3N,GAAA,IAGS,IAAXA,EAAIgb,QAAO,OACThb,EAAAA,EAAAuS,MAAQ,4BAOVjT,IACDgwB,EAAA,WAAAwe,KAAA,WAAA9tC,EAAA,0DAGIuhB,GACLrkB,EAAS02C,aAAA5zC,GAAAuhB,MAAAA,oBAMV5T,GAAAsQ,EAAA6f,MAAA99B,OAKD2N,GAAA3N,CAIF,KAAK2N,IAAOA,EAAAuT,SAEV,KAAQ,IAAGlgB,WAAA,kRAuBboyC,EAAQS,eAAUnxB,EAAc,qNAkC9BxlB,EAAK02C,WAAA,WACL,MAAKN,GAAA,WAAAjjB,wZA2NPnzB,EAAQ42C,YAAG,SAAAh2C,EAAOua,gHAsBlBnb,EAAQy/B,gBAAUz/B,EAAAq1C,iBAAc7V,EAAA6V;;ApIlZhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;wBC3BmB,aAAa;;;;2BACV,gBAAgB;;;;;;;;;;;;;;IAWhC,aAAa;Y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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *

    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = `
    `;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/video.js b/dist/video.js index 7aae347e20..ccf8397b4a 100644 --- a/dist/video.js +++ b/dist/video.js @@ -19979,7 +19979,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/video.min.js b/dist/video.min.js index 5c30adff59..100bca4cb0 100644 --- a/dist/video.min.js +++ b/dist/video.min.js @@ -19,5 +19,5 @@ return g(b,a),b.prototype.manualProgressOn=function(){this.on("durationchange",t a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a){var b=a.vttjs={},c=b.VTTCue,d=b.VTTRegion,e=a.VTTCue,f=a.VTTRegion;b.shim=function(){b.VTTCue=c,b.VTTRegion=d},b.restore=function(){b.VTTCue=e,b.VTTRegion=f}}(this),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=h[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){if("string"!=typeof a)return!1;var b=i[a.toLowerCase()];return b?a.toLowerCase():!1}function e(a){for(var b=1;ba||a>100)throw new Error("Position must be between 0 and 100.");u=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",e({},j,{get:function(){return v},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");v=b,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",e({},j,{get:function(){return w},set:function(a){if(0>a||a>100)throw new Error("Size must be between 0 and 100.");w=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",e({},j,{get:function(){return x},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");x=b,this.hasBeenReset=!0}})),h.displayState=void 0,i?h:void 0}var g="auto",h={"":!0,lr:!0,rl:!0},i={start:!0,middle:!0,end:!0,left:!0,right:!0};f.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},a.VTTCue=a.VTTCue||f,b.VTTCue=f}(this,this.vttjs||{}),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=f[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){return"number"==typeof a&&a>=0&&100>=a}function e(){var a=100,b=3,e=0,f=100,g=0,h=100,i="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return a},set:function(b){if(!d(b))throw new Error("Width must be between 0 and 100.");a=b}},lines:{enumerable:!0,get:function(){return b},set:function(a){if("number"!=typeof a)throw new TypeError("Lines must be set to a number.");b=a}},regionAnchorY:{enumerable:!0,get:function(){return f},set:function(a){if(!d(a))throw new Error("RegionAnchorX must be between 0 and 100.");f=a}},regionAnchorX:{enumerable:!0,get:function(){return e},set:function(a){if(!d(a))throw new Error("RegionAnchorY must be between 0 and 100.");e=a}},viewportAnchorY:{enumerable:!0,get:function(){return h},set:function(a){if(!d(a))throw new Error("ViewportAnchorY must be between 0 and 100.");h=a}},viewportAnchorX:{enumerable:!0,get:function(){return g},set:function(a){if(!d(a))throw new Error("ViewportAnchorX must be between 0 and 100.");g=a}},scroll:{enumerable:!0,get:function(){return i},set:function(a){var b=c(a);if(b===!1)throw new SyntaxError("An invalid or illegal string was specified.");i=b}}})}var f={"":!0,up:!0};a.VTTRegion=a.VTTRegion||e,b.VTTRegion=e}(this,this.vttjs||{}),function(a){function b(a,b){this.name="ParsingError",this.code=a.code,this.message=b||a.message}function c(a){function b(a,b,c,d){return 3600*(0|a)+60*(0|b)+(0|c)+(0|d)/1e3}var c=a.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return c?c[3]?b(c[1],c[2],c[3].replace(":",""),c[4]):c[1]>59?b(c[1],c[2],0,c[4]):b(0,c[1],c[2],c[4]):null}function d(){this.values=o(null)}function e(a,b,c,d){var e=d?a.split(d):[a];for(var f in e)if("string"==typeof e[f]){var g=e[f].split(c);if(2===g.length){var h=g[0],i=g[1];b(h,i)}}}function f(a,f,g){function h(){var d=c(a);if(null===d)throw new b(b.Errors.BadTimeStamp,"Malformed timestamp: "+k);return a=a.replace(/^[^\sa-zA-Z-]+/,""),d}function i(a,b){var c=new d;e(a,function(a,b){switch(a){case"region":for(var d=g.length-1;d>=0;d--)if(g[d].id===b){c.set(a,g[d].region);break}break;case"vertical":c.alt(a,b,["rl","lr"]);break;case"line":var e=b.split(","),f=e[0];c.integer(a,f),c.percent(a,f)?c.set("snapToLines",!1):null,c.alt(a,f,["auto"]),2===e.length&&c.alt("lineAlign",e[1],["start","middle","end"]);break;case"position":e=b.split(","),c.percent(a,e[0]),2===e.length&&c.alt("positionAlign",e[1],["start","middle","end"]);break;case"size":c.percent(a,b);break;case"align":c.alt(a,b,["start","middle","end","left","right"])}},/:/,/\s/),b.region=c.get("region",null),b.vertical=c.get("vertical",""),b.line=c.get("line","auto"),b.lineAlign=c.get("lineAlign","start"),b.snapToLines=c.get("snapToLines",!0),b.size=c.get("size",100),b.align=c.get("align","middle"),b.position=c.get("position",{start:0,left:0,middle:50,end:100,right:100},b.align),b.positionAlign=c.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},b.align)}function j(){a=a.replace(/^\s+/,"")}var k=a;if(j(),f.startTime=h(),j(),"-->"!==a.substr(0,3))throw new b(b.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+k);a=a.substr(3),j(),f.endTime=h(),j(),i(a,f)}function g(a,b){function d(){function a(a){return b=b.substr(a.length),a}if(!b)return null;var c=b.match(/^([^<]*)(<[^>]+>?)?/);return a(c[1]?c[1]:c[2])}function e(a){return p[a]}function f(a){for(;o=a.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)a=a.replace(o[0],e);return a}function g(a,b){return!s[b.localName]||s[b.localName]===a.localName}function h(b,c){var d=q[b];if(!d)return null;var e=a.document.createElement(d);e.localName=d;var f=r[b];return f&&c&&(e[f]=c.trim()),e}for(var i,j=a.document.createElement("div"),k=j,l=[];null!==(i=d());)if("<"!==i[0])k.appendChild(a.document.createTextNode(f(i)));else{if("/"===i[1]){l.length&&l[l.length-1]===i.substr(2).replace(">","")&&(l.pop(),k=k.parentNode);continue}var m,n=c(i.substr(1,i.length-2));if(n){m=a.document.createProcessingInstruction("timestamp",n),k.appendChild(m);continue}var o=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!o)continue;if(m=h(o[1],o[3]),!m)continue;if(!g(k,m))continue;o[2]&&(m.className=o[2].substr(1).replace("."," ")),l.push(o[1]),k.appendChild(m),k=m}return j}function h(a){function b(a,b){for(var c=b.childNodes.length-1;c>=0;c--)a.push(b.childNodes[c])}function c(a){if(!a||!a.length)return null;var d=a.pop(),e=d.textContent||d.innerText;if(e){var f=e.match(/^.*(\n|\r)/);return f?(a.length=0,f[0]):e}return"ruby"===d.tagName?c(a):d.childNodes?(b(a,d),c(a)):void 0}var d,e=[],f="";if(!a||!a.childNodes)return"ltr";for(b(e,a);f=c(e);)for(var g=0;g=0&&a.line<=100))return a.line;if(!a.track||!a.track.textTrackList||!a.track.textTrackList.mediaElement)return-1;for(var b=a.track,c=b.textTrackList,d=0,e=0;ei&&(e=new l(a),g=i),a=new l(f)}return e||f}var f=new l(b),g=b.cue,h=i(g),j=[];if(g.snapToLines){var k;switch(g.vertical){case"":j=["+y","-y"],k="height";break;case"rl":j=["+x","-x"],k="width";break;case"lr":j=["-x","+x"],k="width"}var m=f.lineHeight,n=m*Math.round(h),o=c[k]+m,p=j[0];Math.abs(n)>o&&(n=0>n?-1:1,n*=Math.ceil(o/m)*m),0>h&&(n+=""===g.vertical?c.height:c.width,j=j.reverse()),f.move(p,n)}else{var q=f.lineHeight/c.height*100;switch(g.lineAlign){case"middle":h-=q/2;break;case"end":h-=q}switch(g.vertical){case"":b.applyStyles({top:b.formatStyle(h,"%")});break;case"rl":b.applyStyles({left:b.formatStyle(h,"%")});break;case"lr":b.applyStyles({right:b.formatStyle(h,"%")})}j=["+y","-x","+x","-y"],f=new l(b)}var r=e(f,j);b.move(r.toCSSCompatValues(c))}function n(){}var o=Object.create||function(){function a(){}return function(b){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return a.prototype=b,new a}}();b.prototype=o(Error.prototype),b.prototype.constructor=b,b.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},d.prototype={set:function(a,b){this.get(a)||""===b||(this.values[a]=b)},get:function(a,b,c){return c?this.has(a)?this.values[a]:b[c]:this.has(a)?this.values[a]:b},has:function(a){return a in this.values},alt:function(a,b,c){for(var d=0;d=0&&100>=b)?(this.set(a,b),!0):!1}};var p={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},q={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},r={v:"title",lang:"lang"},s={rt:"ruby"},t=[1470,1472,1475,1478,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1544,1547,1549,1563,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1645,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1765,1766,1774,1775,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2e3,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2142,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,8207,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,64442,64443,64444,64445,64446,64447,64448,64449,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,67584,67585,67586,67587,67588,67589,67592,67594,67595,67596,67597,67598,67599,67600,67601,67602,67603,67604,67605,67606,67607,67608,67609,67610,67611,67612,67613,67614,67615,67616,67617,67618,67619,67620,67621,67622,67623,67624,67625,67626,67627,67628,67629,67630,67631,67632,67633,67634,67635,67636,67637,67639,67640,67644,67647,67648,67649,67650,67651,67652,67653,67654,67655,67656,67657,67658,67659,67660,67661,67662,67663,67664,67665,67666,67667,67668,67669,67671,67672,67673,67674,67675,67676,67677,67678,67679,67840,67841,67842,67843,67844,67845,67846,67847,67848,67849,67850,67851,67852,67853,67854,67855,67856,67857,67858,67859,67860,67861,67862,67863,67864,67865,67866,67867,67872,67873,67874,67875,67876,67877,67878,67879,67880,67881,67882,67883,67884,67885,67886,67887,67888,67889,67890,67891,67892,67893,67894,67895,67896,67897,67903,67968,67969,67970,67971,67972,67973,67974,67975,67976,67977,67978,67979,67980,67981,67982,67983,67984,67985,67986,67987,67988,67989,67990,67991,67992,67993,67994,67995,67996,67997,67998,67999,68e3,68001,68002,68003,68004,68005,68006,68007,68008,68009,68010,68011,68012,68013,68014,68015,68016,68017,68018,68019,68020,68021,68022,68023,68030,68031,68096,68112,68113,68114,68115,68117,68118,68119,68121,68122,68123,68124,68125,68126,68127,68128,68129,68130,68131,68132,68133,68134,68135,68136,68137,68138,68139,68140,68141,68142,68143,68144,68145,68146,68147,68160,68161,68162,68163,68164,68165,68166,68167,68176,68177,68178,68179,68180,68181,68182,68183,68184,68192,68193,68194,68195,68196,68197,68198,68199,68200,68201,68202,68203,68204,68205,68206,68207,68208,68209,68210,68211,68212,68213,68214,68215,68216,68217,68218,68219,68220,68221,68222,68223,68352,68353,68354,68355,68356,68357,68358,68359,68360,68361,68362,68363,68364,68365,68366,68367,68368,68369,68370,68371,68372,68373,68374,68375,68376,68377,68378,68379,68380,68381,68382,68383,68384,68385,68386,68387,68388,68389,68390,68391,68392,68393,68394,68395,68396,68397,68398,68399,68400,68401,68402,68403,68404,68405,68416,68417,68418,68419,68420,68421,68422,68423,68424,68425,68426,68427,68428,68429,68430,68431,68432,68433,68434,68435,68436,68437,68440,68441,68442,68443,68444,68445,68446,68447,68448,68449,68450,68451,68452,68453,68454,68455,68456,68457,68458,68459,68460,68461,68462,68463,68464,68465,68466,68472,68473,68474,68475,68476,68477,68478,68479,68608,68609,68610,68611,68612,68613,68614,68615,68616,68617,68618,68619,68620,68621,68622,68623,68624,68625,68626,68627,68628,68629,68630,68631,68632,68633,68634,68635,68636,68637,68638,68639,68640,68641,68642,68643,68644,68645,68646,68647,68648,68649,68650,68651,68652,68653,68654,68655,68656,68657,68658,68659,68660,68661,68662,68663,68664,68665,68666,68667,68668,68669,68670,68671,68672,68673,68674,68675,68676,68677,68678,68679,68680,126464,126465,126466,126467,126469,126470,126471,126472,126473,126474,126475,126476,126477,126478,126479,126480,126481,126482,126483,126484,126485,126486,126487,126488,126489,126490,126491,126492,126493,126494,126495,126497,126498,126500,126503,126505,126506,126507,126508,126509,126510,126511,126512,126513,126514,126516,126517,126518,126519,126521,126523,126530,126535,126537,126539,126541,126542,126543,126545,126546,126548,126551,126553,126555,126557,126559,126561,126562,126564,126567,126568,126569,126570,126572,126573,126574,126575,126576,126577,126578,126580,126581,126582,126583,126585,126586,126587,126588,126590,126592,126593,126594,126595,126596,126597,126598,126599,126600,126601,126603,126604,126605,126606,126607,126608,126609,126610,126611,126612,126613,126614,126615,126616,126617,126618,126619,126625,126626,126627,126629,126630,126631,126632,126633,126635,126636,126637,126638,126639,126640,126641,126642,126643,126644,126645,126646,126647,126648,126649,126650,126651,1114109]; -j.prototype.applyStyles=function(a,b){b=b||this.div;for(var c in a)a.hasOwnProperty(c)&&(b.style[c]=a[c])},j.prototype.formatStyle=function(a,b){return 0===a?0:a+b},k.prototype=o(j.prototype),k.prototype.constructor=k,l.prototype.move=function(a,b){switch(b=void 0!==b?b:this.lineHeight,a){case"+x":this.left+=b,this.right+=b;break;case"-x":this.left-=b,this.right-=b;break;case"+y":this.top+=b,this.bottom+=b;break;case"-y":this.top-=b,this.bottom-=b}},l.prototype.overlaps=function(a){return this.lefta.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;ea.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/video.hls.js b/dist/videojs.hls.js similarity index 99% rename from dist/video.hls.js rename to dist/videojs.hls.js index b2f7c1bf61..bf3b61fd26 100644 --- a/dist/video.hls.js +++ b/dist/videojs.hls.js @@ -19979,7 +19979,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/video.hls.min.js b/dist/videojs.hls.min.js similarity index 99% rename from dist/video.hls.min.js rename to dist/videojs.hls.min.js index d2081b9f9d..995ec8f86d 100644 --- a/dist/video.hls.min.js +++ b/dist/videojs.hls.min.js @@ -19,11 +19,11 @@ return g(b,a),b.prototype.manualProgressOn=function(){this.on("durationchange",t a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a){var b=a.vttjs={},c=b.VTTCue,d=b.VTTRegion,e=a.VTTCue,f=a.VTTRegion;b.shim=function(){b.VTTCue=c,b.VTTRegion=d},b.restore=function(){b.VTTCue=e,b.VTTRegion=f}}(this),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=h[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){if("string"!=typeof a)return!1;var b=i[a.toLowerCase()];return b?a.toLowerCase():!1}function e(a){for(var b=1;ba||a>100)throw new Error("Position must be between 0 and 100.");u=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",e({},j,{get:function(){return v},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");v=b,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",e({},j,{get:function(){return w},set:function(a){if(0>a||a>100)throw new Error("Size must be between 0 and 100.");w=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",e({},j,{get:function(){return x},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");x=b,this.hasBeenReset=!0}})),h.displayState=void 0,i?h:void 0}var g="auto",h={"":!0,lr:!0,rl:!0},i={start:!0,middle:!0,end:!0,left:!0,right:!0};f.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},a.VTTCue=a.VTTCue||f,b.VTTCue=f}(this,this.vttjs||{}),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=f[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){return"number"==typeof a&&a>=0&&100>=a}function e(){var a=100,b=3,e=0,f=100,g=0,h=100,i="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return a},set:function(b){if(!d(b))throw new Error("Width must be between 0 and 100.");a=b}},lines:{enumerable:!0,get:function(){return b},set:function(a){if("number"!=typeof a)throw new TypeError("Lines must be set to a number.");b=a}},regionAnchorY:{enumerable:!0,get:function(){return f},set:function(a){if(!d(a))throw new Error("RegionAnchorX must be between 0 and 100.");f=a}},regionAnchorX:{enumerable:!0,get:function(){return e},set:function(a){if(!d(a))throw new Error("RegionAnchorY must be between 0 and 100.");e=a}},viewportAnchorY:{enumerable:!0,get:function(){return h},set:function(a){if(!d(a))throw new Error("ViewportAnchorY must be between 0 and 100.");h=a}},viewportAnchorX:{enumerable:!0,get:function(){return g},set:function(a){if(!d(a))throw new Error("ViewportAnchorX must be between 0 and 100.");g=a}},scroll:{enumerable:!0,get:function(){return i},set:function(a){var b=c(a);if(b===!1)throw new SyntaxError("An invalid or illegal string was specified.");i=b}}})}var f={"":!0,up:!0};a.VTTRegion=a.VTTRegion||e,b.VTTRegion=e}(this,this.vttjs||{}),function(a){function b(a,b){this.name="ParsingError",this.code=a.code,this.message=b||a.message}function c(a){function b(a,b,c,d){return 3600*(0|a)+60*(0|b)+(0|c)+(0|d)/1e3}var c=a.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return c?c[3]?b(c[1],c[2],c[3].replace(":",""),c[4]):c[1]>59?b(c[1],c[2],0,c[4]):b(0,c[1],c[2],c[4]):null}function d(){this.values=o(null)}function e(a,b,c,d){var e=d?a.split(d):[a];for(var f in e)if("string"==typeof e[f]){var g=e[f].split(c);if(2===g.length){var h=g[0],i=g[1];b(h,i)}}}function f(a,f,g){function h(){var d=c(a);if(null===d)throw new b(b.Errors.BadTimeStamp,"Malformed timestamp: "+k);return a=a.replace(/^[^\sa-zA-Z-]+/,""),d}function i(a,b){var c=new d;e(a,function(a,b){switch(a){case"region":for(var d=g.length-1;d>=0;d--)if(g[d].id===b){c.set(a,g[d].region);break}break;case"vertical":c.alt(a,b,["rl","lr"]);break;case"line":var e=b.split(","),f=e[0];c.integer(a,f),c.percent(a,f)?c.set("snapToLines",!1):null,c.alt(a,f,["auto"]),2===e.length&&c.alt("lineAlign",e[1],["start","middle","end"]);break;case"position":e=b.split(","),c.percent(a,e[0]),2===e.length&&c.alt("positionAlign",e[1],["start","middle","end"]);break;case"size":c.percent(a,b);break;case"align":c.alt(a,b,["start","middle","end","left","right"])}},/:/,/\s/),b.region=c.get("region",null),b.vertical=c.get("vertical",""),b.line=c.get("line","auto"),b.lineAlign=c.get("lineAlign","start"),b.snapToLines=c.get("snapToLines",!0),b.size=c.get("size",100),b.align=c.get("align","middle"),b.position=c.get("position",{start:0,left:0,middle:50,end:100,right:100},b.align),b.positionAlign=c.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},b.align)}function j(){a=a.replace(/^\s+/,"")}var k=a;if(j(),f.startTime=h(),j(),"-->"!==a.substr(0,3))throw new b(b.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+k);a=a.substr(3),j(),f.endTime=h(),j(),i(a,f)}function g(a,b){function d(){function a(a){return b=b.substr(a.length),a}if(!b)return null;var c=b.match(/^([^<]*)(<[^>]+>?)?/);return a(c[1]?c[1]:c[2])}function e(a){return p[a]}function f(a){for(;o=a.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)a=a.replace(o[0],e);return a}function g(a,b){return!s[b.localName]||s[b.localName]===a.localName}function h(b,c){var d=q[b];if(!d)return null;var e=a.document.createElement(d);e.localName=d;var f=r[b];return f&&c&&(e[f]=c.trim()),e}for(var i,j=a.document.createElement("div"),k=j,l=[];null!==(i=d());)if("<"!==i[0])k.appendChild(a.document.createTextNode(f(i)));else{if("/"===i[1]){l.length&&l[l.length-1]===i.substr(2).replace(">","")&&(l.pop(),k=k.parentNode);continue}var m,n=c(i.substr(1,i.length-2));if(n){m=a.document.createProcessingInstruction("timestamp",n),k.appendChild(m);continue}var o=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!o)continue;if(m=h(o[1],o[3]),!m)continue;if(!g(k,m))continue;o[2]&&(m.className=o[2].substr(1).replace("."," ")),l.push(o[1]),k.appendChild(m),k=m}return j}function h(a){function b(a,b){for(var c=b.childNodes.length-1;c>=0;c--)a.push(b.childNodes[c])}function c(a){if(!a||!a.length)return null;var d=a.pop(),e=d.textContent||d.innerText;if(e){var f=e.match(/^.*(\n|\r)/);return f?(a.length=0,f[0]):e}return"ruby"===d.tagName?c(a):d.childNodes?(b(a,d),c(a)):void 0}var d,e=[],f="";if(!a||!a.childNodes)return"ltr";for(b(e,a);f=c(e);)for(var g=0;g=0&&a.line<=100))return a.line;if(!a.track||!a.track.textTrackList||!a.track.textTrackList.mediaElement)return-1;for(var b=a.track,c=b.textTrackList,d=0,e=0;ei&&(e=new l(a),g=i),a=new l(f)}return e||f}var f=new l(b),g=b.cue,h=i(g),j=[];if(g.snapToLines){var k;switch(g.vertical){case"":j=["+y","-y"],k="height";break;case"rl":j=["+x","-x"],k="width";break;case"lr":j=["-x","+x"],k="width"}var m=f.lineHeight,n=m*Math.round(h),o=c[k]+m,p=j[0];Math.abs(n)>o&&(n=0>n?-1:1,n*=Math.ceil(o/m)*m),0>h&&(n+=""===g.vertical?c.height:c.width,j=j.reverse()),f.move(p,n)}else{var q=f.lineHeight/c.height*100;switch(g.lineAlign){case"middle":h-=q/2;break;case"end":h-=q}switch(g.vertical){case"":b.applyStyles({top:b.formatStyle(h,"%")});break;case"rl":b.applyStyles({left:b.formatStyle(h,"%")});break;case"lr":b.applyStyles({right:b.formatStyle(h,"%")})}j=["+y","-x","+x","-y"],f=new l(b)}var r=e(f,j);b.move(r.toCSSCompatValues(c))}function n(){}var o=Object.create||function(){function a(){}return function(b){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return a.prototype=b,new a}}();b.prototype=o(Error.prototype),b.prototype.constructor=b,b.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},d.prototype={set:function(a,b){this.get(a)||""===b||(this.values[a]=b)},get:function(a,b,c){return c?this.has(a)?this.values[a]:b[c]:this.has(a)?this.values[a]:b},has:function(a){return a in this.values},alt:function(a,b,c){for(var d=0;d=0&&100>=b)?(this.set(a,b),!0):!1}};var p={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},q={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},r={v:"title",lang:"lang"},s={rt:"ruby"},t=[1470,1472,1475,1478,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1544,1547,1549,1563,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1645,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1765,1766,1774,1775,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2e3,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2142,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,8207,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,64442,64443,64444,64445,64446,64447,64448,64449,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,67584,67585,67586,67587,67588,67589,67592,67594,67595,67596,67597,67598,67599,67600,67601,67602,67603,67604,67605,67606,67607,67608,67609,67610,67611,67612,67613,67614,67615,67616,67617,67618,67619,67620,67621,67622,67623,67624,67625,67626,67627,67628,67629,67630,67631,67632,67633,67634,67635,67636,67637,67639,67640,67644,67647,67648,67649,67650,67651,67652,67653,67654,67655,67656,67657,67658,67659,67660,67661,67662,67663,67664,67665,67666,67667,67668,67669,67671,67672,67673,67674,67675,67676,67677,67678,67679,67840,67841,67842,67843,67844,67845,67846,67847,67848,67849,67850,67851,67852,67853,67854,67855,67856,67857,67858,67859,67860,67861,67862,67863,67864,67865,67866,67867,67872,67873,67874,67875,67876,67877,67878,67879,67880,67881,67882,67883,67884,67885,67886,67887,67888,67889,67890,67891,67892,67893,67894,67895,67896,67897,67903,67968,67969,67970,67971,67972,67973,67974,67975,67976,67977,67978,67979,67980,67981,67982,67983,67984,67985,67986,67987,67988,67989,67990,67991,67992,67993,67994,67995,67996,67997,67998,67999,68e3,68001,68002,68003,68004,68005,68006,68007,68008,68009,68010,68011,68012,68013,68014,68015,68016,68017,68018,68019,68020,68021,68022,68023,68030,68031,68096,68112,68113,68114,68115,68117,68118,68119,68121,68122,68123,68124,68125,68126,68127,68128,68129,68130,68131,68132,68133,68134,68135,68136,68137,68138,68139,68140,68141,68142,68143,68144,68145,68146,68147,68160,68161,68162,68163,68164,68165,68166,68167,68176,68177,68178,68179,68180,68181,68182,68183,68184,68192,68193,68194,68195,68196,68197,68198,68199,68200,68201,68202,68203,68204,68205,68206,68207,68208,68209,68210,68211,68212,68213,68214,68215,68216,68217,68218,68219,68220,68221,68222,68223,68352,68353,68354,68355,68356,68357,68358,68359,68360,68361,68362,68363,68364,68365,68366,68367,68368,68369,68370,68371,68372,68373,68374,68375,68376,68377,68378,68379,68380,68381,68382,68383,68384,68385,68386,68387,68388,68389,68390,68391,68392,68393,68394,68395,68396,68397,68398,68399,68400,68401,68402,68403,68404,68405,68416,68417,68418,68419,68420,68421,68422,68423,68424,68425,68426,68427,68428,68429,68430,68431,68432,68433,68434,68435,68436,68437,68440,68441,68442,68443,68444,68445,68446,68447,68448,68449,68450,68451,68452,68453,68454,68455,68456,68457,68458,68459,68460,68461,68462,68463,68464,68465,68466,68472,68473,68474,68475,68476,68477,68478,68479,68608,68609,68610,68611,68612,68613,68614,68615,68616,68617,68618,68619,68620,68621,68622,68623,68624,68625,68626,68627,68628,68629,68630,68631,68632,68633,68634,68635,68636,68637,68638,68639,68640,68641,68642,68643,68644,68645,68646,68647,68648,68649,68650,68651,68652,68653,68654,68655,68656,68657,68658,68659,68660,68661,68662,68663,68664,68665,68666,68667,68668,68669,68670,68671,68672,68673,68674,68675,68676,68677,68678,68679,68680,126464,126465,126466,126467,126469,126470,126471,126472,126473,126474,126475,126476,126477,126478,126479,126480,126481,126482,126483,126484,126485,126486,126487,126488,126489,126490,126491,126492,126493,126494,126495,126497,126498,126500,126503,126505,126506,126507,126508,126509,126510,126511,126512,126513,126514,126516,126517,126518,126519,126521,126523,126530,126535,126537,126539,126541,126542,126543,126545,126546,126548,126551,126553,126555,126557,126559,126561,126562,126564,126567,126568,126569,126570,126572,126573,126574,126575,126576,126577,126578,126580,126581,126582,126583,126585,126586,126587,126588,126590,126592,126593,126594,126595,126596,126597,126598,126599,126600,126601,126603,126604,126605,126606,126607,126608,126609,126610,126611,126612,126613,126614,126615,126616,126617,126618,126619,126625,126626,126627,126629,126630,126631,126632,126633,126635,126636,126637,126638,126639,126640,126641,126642,126643,126644,126645,126646,126647,126648,126649,126650,126651,1114109]; -j.prototype.applyStyles=function(a,b){b=b||this.div;for(var c in a)a.hasOwnProperty(c)&&(b.style[c]=a[c])},j.prototype.formatStyle=function(a,b){return 0===a?0:a+b},k.prototype=o(j.prototype),k.prototype.constructor=k,l.prototype.move=function(a,b){switch(b=void 0!==b?b:this.lineHeight,a){case"+x":this.left+=b,this.right+=b;break;case"-x":this.left-=b,this.right-=b;break;case"+y":this.top+=b,this.bottom+=b;break;case"-y":this.top-=b,this.bottom-=b}},l.prototype.overlaps=function(a){return this.lefta.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;ea.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else{for(f=[],d=arguments.length,d=1;dd;++d)c[d].apply(this,f)}},this.dispose=function(){a={}}}};b.prototype.pipe=function(a){return this.on("data",function(b){a.push(b)}),this.on("done",function(){a.flush()}),a},b.prototype.push=function(a){this.trigger("data",a)},b.prototype.flush=function(){this.trigger("done")},a.muxjs=a.muxjs||{},a.muxjs.Stream=b}(this),function(a,b){b.ExpGolomb=function(a){var b=a.byteLength,c=0,d=0;this.length=function(){return 8*b},this.bitsAvailable=function(){return 8*b+d},this.loadWord=function(){var e=a.byteLength-b,f=new Uint8Array(4),g=Math.min(4,b);if(0===g)throw new Error("no bytes available");f.set(a.subarray(e,e+g)),c=new DataView(f.buffer).getUint32(0),d=8*g,b-=g},this.skipBits=function(a){var e;d>a?(c<<=a,d-=a):(a-=d,e=Math.floor(a/8),a-=8*e,b-=e,this.loadWord(),c<<=a,d-=a)},this.readBits=function(a){var e=Math.min(d,a),f=c>>>32-e;return d-=e,d>0?c<<=e:b>0&&this.loadWord(),e=a-e,e>0?f<a;++a)if(0!==(c&2147483648>>>a))return c<<=a,d-=a,a;return this.loadWord(),a+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var a=this.skipLeadingZeros();return this.readBits(a+1)-1},this.readExpGolomb=function(){var a=this.readUnsignedExpGolomb();return 1&a?1+a>>>1:-1*(a>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()}}(this,this.muxjs),function(a){a.videojs=a.videojs||{},a.muxjs=a.muxjs||{};var b=a.muxjs;b.FlvTag=function(a,c){var d,e=0,f=function(a,b){var c,d=a.position+b;d0)throw new Error("Attempted to create new NAL wihout closing the old one");e=this.length,this.length+=4,this.position=this.length},this.endNalUnit=function(a){var b,c;this.length===e+4?this.length-=4:e>0&&(b=e+4,c=this.length-b,this.position=e,this.view.setUint32(this.position,c),this.position=this.length,a&&a.push(this.bytes.subarray(b,b+c))),e=0},this.writeMetaDataDouble=function(a,b){var c;if(f(this,2+a.length+9),this.view.setUint16(this.position,a.length),this.position+=2,"width"===a)this.bytes.set(g,this.position),this.position+=5;else if("height"===a)this.bytes.set(h,this.position),this.position+=6;else if("videocodecid"===a)this.bytes.set(i,this.position),this.position+=12;else for(c=0;c>>16,this.bytes[14]=(65280&a)>>>8,this.bytes[15]=(255&a)>>>0;break;case b.FlvTag.AUDIO_TAG:this.bytes[11]=175,this.bytes[12]=c?0:1;break;case b.FlvTag.METADATA_TAG:this.position=11,this.view.setUint8(this.position,2),this.position++,this.view.setUint16(this.position,10),this.position+=2,this.bytes.set([111,110,77,101,116,97,68,97,116,97],this.position),this.position+=10,this.bytes[this.position]=8,this.position++,this.view.setUint32(this.position,e),this.position=this.length,this.bytes.set([0,0,9],this.position),this.position+=3,this.length=this.position}return d=this.length-11,this.bytes[1]=(16711680&d)>>>16,this.bytes[2]=(65280&d)>>>8,this.bytes[3]=(255&d)>>>0,this.bytes[4]=(16711680&this.dts)>>>16,this.bytes[5]=(65280&this.dts)>>>8,this.bytes[6]=(255&this.dts)>>>0,this.bytes[7]=(4278190080&this.dts)>>>24,this.bytes[8]=0,this.bytes[9]=0,this.bytes[10]=0,f(this,4),this.view.setUint32(this.length,this.length),this.length+=4,this.position+=4,this.bytes=this.bytes.subarray(0,this.length),this.frameTime=b.FlvTag.frameTime(this.bytes),this}},b.FlvTag.AUDIO_TAG=8,b.FlvTag.VIDEO_TAG=9,b.FlvTag.METADATA_TAG=18,b.FlvTag.isAudioFrame=function(a){return b.FlvTag.AUDIO_TAG===a[0]},b.FlvTag.isVideoFrame=function(a){return b.FlvTag.VIDEO_TAG===a[0]},b.FlvTag.isMetaData=function(a){return b.FlvTag.METADATA_TAG===a[0]},b.FlvTag.isKeyFrame=function(a){return b.FlvTag.isVideoFrame(a)?23===a[11]:b.FlvTag.isAudioFrame(a)?!0:b.FlvTag.isMetaData(a)?!0:!1},b.FlvTag.frameTime=function(a){var b=a[4]<<16;return b|=a[5]<<8,b|=a[6]<<0,b|=a[7]<<24}}(this),function(){var a,b=window.muxjs.ExpGolomb,c=window.muxjs.FlvTag;window.muxjs.H264ExtraData=a=function(){this.sps=[],this.pps=[]},a.prototype.extraDataExists=function(){return this.sps.length>0},a.prototype.scaling_list=function(a,b){var c,d,e=8,f=8;for(c=0;a>c;++c)0!==f&&(d=b.readExpGolomb(),f=(e+d+256)%256),e=0===f?e:f},a.prototype.getSps0Rbsp=function(){for(var a=this.sps[0],b=1,c=1,d=0,e=a.byteLength-2,f=new Uint8Array(a.byteLength);e>b;)0===a[b]&&0===a[b+1]&&3===a[b+2]&&(f.set(a.subarray(c,b+1),d),d+=b+1-c,c=b+3),b++;return f.set(a.subarray(c),d),f.subarray(0,d+(a.byteLength-c))},a.prototype.metaDataTag=function(a){var d,e,f,g,h,i,j,k,l,m,n,o,p,q=new c(c.METADATA_TAG),r=0,s=0,t=0,u=0;if(q.dts=a,q.pts=a,d=new b(this.getSps0Rbsp()),e=d.readUnsignedByte(),d.skipBits(16),d.skipUnsignedExpGolomb(),(100===e||110===e||122===e||244===e||44===e||83===e||86===e||118===e||128===e)&&(f=d.readUnsignedExpGolomb(),3===f&&d.skipBits(1),d.skipUnsignedExpGolomb(),d.skipUnsignedExpGolomb(),d.skipBits(1),d.readBoolean()))for(g=3!==f?8:12,h=0;g>h;++h)d.readBoolean()&&(6>h?this.scaling_list(16,d):this.scaling_list(64,d));if(d.skipUnsignedExpGolomb(),i=d.readUnsignedExpGolomb(),0===i)d.readUnsignedExpGolomb();else if(1===i)for(d.skipBits(1),d.skipExpGolomb(),d.skipExpGolomb(),j=d.readUnsignedExpGolomb(),h=0;j>h;++h)d.skipExpGolomb();return d.skipUnsignedExpGolomb(),d.skipBits(1),k=d.readUnsignedExpGolomb(),l=d.readUnsignedExpGolomb(),m=d.readBits(1),0===m&&d.skipBits(1),d.skipBits(1),n=d.readBoolean(),n&&(r=d.readUnsignedExpGolomb(),s=d.readUnsignedExpGolomb(),t=d.readUnsignedExpGolomb(),u=d.readUnsignedExpGolomb()),o=16*(k+1)-2*r-2*s,p=(2-m)*(l+1)*16-2*t-2*u,q.writeMetaDataDouble("videocodecid",7),q.writeMetaDataDouble("width",o),q.writeMetaDataDouble("height",p),q},a.prototype.extraDataTag=function(a){var b,d=new c(c.VIDEO_TAG,!0);for(d.dts=a,d.pts=a,d.writeByte(1),d.writeByte(this.sps[0][1]),d.writeByte(this.sps[0][2]),d.writeByte(this.sps[0][3]),d.writeByte(255),d.writeByte(225),d.writeShort(this.sps[0].length),d.writeBytes(this.sps[0]),d.writeByte(this.pps.length),b=0;be?e:r,e-=r,s=q+r;s>q;)switch(d){default:d=0;break;case 0:if(q>=s)return;if(255!==p[q])return q+=1,void(d=0);q+=1,d=1;break;case 1:if(q>=s)return;if(240!==(240&p[q]))return q+=1,void(d=0);g=!!(1&p[q]),q+=1,d=2;break;case 2:if(q>=s)return;h=((192&p[q])>>>6)+1,i=(60&p[q])>>>2,j=(1&p[q])<<2,q+=1,d=3;break;case 3:if(q>=s)return;j|=(192&p[q])>>>6,k=(3&p[q])<<11,q+=1,d=4;break;case 4:if(q>=s)return;k|=p[q]<<3,q+=1,d=5;break;case 5:if(q>=s)return;k|=(224&p[q])>>>5,k-=g?7:9,q+=1,d=6;break;case 6:if(q>=s)return;l=1024*((3&p[q])+1),m=1e3*l/c[i],t=h<<11|i<<7|j<<3,(t!==o||a-f>=1e3)&&(n=new b(b.METADATA_TAG),n.pts=a,n.dts=a,n.writeMetaDataDouble("audiocodecid",10),n.writeMetaDataBoolean("stereo",2===j),n.writeMetaDataDouble("audiosamplerate",c[i]),n.writeMetaDataDouble("audiosamplesize",16),this.tags.push(n),o=t,n=new b(b.AUDIO_TAG,!0),n.pts=a,n.dts=n.pts,n.view.setUint16(n.position,t),n.position+=2,n.length=Math.max(n.length,n.position),this.tags.push(n),f=a),q+=1,d=7;break;case 7:if(!g){if(2>s-q)return;q+=2}n=new b(b.AUDIO_TAG),n.pts=a,n.dts=a,d=8;break;case 8:for(;k;){if(q>=s)return;u=k>s-q?s-q:k,n.writeBytes(p,q,u),q+=u,k-=u}this.tags.push(n),d=0,a+=m}}}}(this),function(a){var b,c,d=a.muxjs.FlvTag,e=a.muxjs.H264ExtraData;a.muxjs.NALUnitType=c={unspecified:0,slice_layer_without_partitioning_rbsp_non_idr:1,slice_data_partition_a_layer_rbsp:2,slice_data_partition_b_layer_rbsp:3,slice_data_partition_c_layer_rbsp:4,slice_layer_without_partitioning_rbsp_idr:5,sei_rbsp:6,seq_parameter_set_rbsp:7,pic_parameter_set_rbsp:8,access_unit_delimiter_rbsp:9,end_of_seq_rbsp:10,end_of_stream_rbsp:11},a.muxjs.H264Stream=b=function(){this._next_pts=0,this._next_dts=0,this._h264Frame=null,this._oldExtraData=new e,this._newExtraData=new e,this._nalUnitType=-1,this._state=0,this.tags=[]},b.prototype.setTimeStampOffset=function(){},b.prototype.setNextTimeStamp=function(a,b,c){this._next_pts=a,this._next_dts=b,c&&this.finishFrame()},b.prototype.finishFrame=function(){this._h264Frame&&(this._newExtraData.extraDataExists()&&(this._oldExtraData=this._newExtraData,this._newExtraData=new e),this._oldExtraData.extraDataExists()&&(this._h264Frame.keyFrame||0===this.tags.length)&&(this.tags.push(this._oldExtraData.metaDataTag(this._h264Frame.pts)),this.tags.push(this._oldExtraData.extraDataTag(this._h264Frame.pts))),this._h264Frame.endNalUnit(),this.tags.push(this._h264Frame)),this._h264Frame=null,this._nalUnitType=-1,this._state=0},b.prototype.writeBytes=function(a,b,e){var f,g,h,i;if(b=b||0,e=e||0,!(0>=e))switch(this._state){default:case 0:this._state=1;case 1:if(a[b]<=1&&(f=this._h264Frame?this._h264Frame.nalUnitSize():0,f>=1&&0===this._h264Frame.negIndex(1))){if(1===a[b]&&f>=2&&0===this._h264Frame.negIndex(2))return this._h264Frame.length-=f>=3&&0===this._h264Frame.negIndex(3)?3:2,this._state=3,this.writeBytes(a,b+1,e-1);if(e>1&&0===a[b]&&1===a[b+1])return this._h264Frame.length-=f>=2&&0===this._h264Frame.negIndex(2)?2:1,this._state=3,this.writeBytes(a,b+2,e-2);if(e>2&&0===a[b]&&0===a[b+1]&&1===a[b+2])return this._state=3,this.writeBytes(a,b+3,e-3)}this._state=2;case 2:for(g=b,h=g+e,i=h-3;i>b;)if(a[b+2]>1)b+=3;else if(0!==a[b+1])b+=2;else if(0!==a[b])b+=1;else{if(1===a[b+2])return b>g&&this._h264Frame.writeBytes(a,g,b-g),this._state=3,b+=3,this.writeBytes(a,b,h-b);if(h-b>=4&&0===a[b+2]&&1===a[b+3])return b>g&&this._h264Frame.writeBytes(a,g,b-g),this._state=3,b+=4,this.writeBytes(a,b,h-b);b+=3}return this._state=1,void(this._h264Frame&&this._h264Frame.writeBytes(a,g,e));case 3:if(this._h264Frame)switch(this._nalUnitType){case c.seq_parameter_set_rbsp:this._h264Frame.endNalUnit(this._newExtraData.sps);break;case c.pic_parameter_set_rbsp:this._h264Frame.endNalUnit(this._newExtraData.pps);break;case c.slice_layer_without_partitioning_rbsp_idr:this._h264Frame.endNalUnit();break;default:this._h264Frame.endNalUnit()}return this._nalUnitType=31&a[b],this._h264Frame&&(this._nalUnitType===c.access_unit_delimiter_rbsp?this.finishFrame():this._nalUnitType===c.slice_layer_without_partitioning_rbsp_idr&&(this._h264Frame.keyFrame=!0)),this._h264Frame||(this._h264Frame=new d(d.VIDEO_TAG),this._h264Frame.pts=this._next_pts,this._h264Frame.dts=this._next_dts),this._h264Frame.startNalUnit(),this._state=2,this.writeBytes(a,b,e)}}}(this),function(a,b){"use strict";var c,d=function(a,b,c){var d,e="";for(d=b;c>d;d++)e+="%"+("00"+a[d].toString(16)).slice(-2);return e},e=function(b,c,e){return a.decodeURIComponent(d(b,c,e))},f=function(b,c,e){return a.unescape(d(b,c,e))},g={TXXX:function(a){var b;if(3===a.data[0])for(b=1;bi)){for(b={data:new Uint8Array(f),frames:[],pts:h[0].pts,dts:h[0].dts},k=0;f>k;)b.data.set(h[0].data,k),k+=h[0].data.byteLength,i-=h[0].data.byteLength,h.shift();c=10,64&b.data[5]&&(c+=4,c+=b.data[10]<<24|b.data[11]<<16|b.data[12]<<8|b.data[13],f-=b.data[16]<<24|b.data[17]<<16|b.data[18]<<8|b.data[19]);do{if(d=b.data[c+4]<<24|b.data[c+5]<<16|b.data[c+6]<<8|b.data[c+7],1>d)return void 0;j={id:String.fromCharCode(b.data[c],b.data[c+1],b.data[c+2],b.data[c+3]),data:b.data.subarray(c+10,c+d+10)},g[j.id]&&g[j.id](j),b.frames.push(j),c+=10,c+=d}while(f>c);this.trigger("data",b)}}},c.prototype=new b.Stream,b.MetadataStream=c}(window,window.muxjs),function(){var a,b,c=muxjs.FlvTag,d=muxjs.H264Stream,e=muxjs.AacStream,f=muxjs.MetadataStream;muxjs.SegmentParser=function(){var g,h=this,i=new Uint8Array(a),j=0,k=new d,l=new e;h.stream={programMapTable:{}},h.metadataStream=new f,h.getFlvHeader=function(a,b,d){var e,f,g,h=new Uint8Array(9),i=new DataView(h.buffer);return a=a||0,b=void 0===b?!0:b,d=void 0===d?!0:d,i.setUint8(0,70),i.setUint8(1,76),i.setUint8(2,86),i.setUint8(3,1),i.setUint8(4,(b?4:0)|(d?1:0)),i.setUint32(5,h.byteLength),0>=a?(f=new Uint8Array(h.byteLength+4),f.set(h),f.set([0,0,0,0],h.byteLength),f):(e=new c(c.METADATA_TAG),e.pts=e.dts=0,e.writeMetaDataDouble("duration",a),g=e.finalize().length,f=new Uint8Array(h.byteLength+g),f.set(h),f.set(i.byteLength,g),f)},h.flushTags=function(){k.finishFrame()},h.tagsAvailable=function(){return k.tags.length+l.tags.length},h.getNextTag=function(){var a;return a=k.tags.length?l.tags.length&&l.tags[0].dts0){if(b.byteLength+j0&&(i.set(b.subarray(d),j),j+=b.byteLength-d));g(b.subarray(d,d+a))?d+=a:d++}},g=function(c){var d,e,f,g,i,j,m,n,o,p,q,r,s,t,u,v,w,x,y=0,z=y+a,A=!!(64&c[y+1]),B=(31&c[y+1])<<8|c[y+2],C=(48&c[y+3])>>>4;if(y+=4,C>1&&(y+=c[y]+1),0===B){if(A&&(y+=1+c[y]),d=c[y],e=!!(1&c[y+5]))for(f=(15&c[y+1])<<8|c[y+2],y+=8,j=y+(f-5-4);j>y;y+=4)if(g=c[y]<<8|c[y+1],i=(31&c[y+2])<<8|c[y+3],0===g)h.stream.networkPid=i;else if(void 0===h.stream.pmtPid)h.stream.pmtPid=i;else if(h.stream.pmtPid!==i)throw new Error("TS has more that 1 program")}else if(B===h.stream.programMapTable[b.h264]||B===h.stream.programMapTable[b.adts]||B===h.stream.programMapTable[b.metadata]){if(A){if(0!==c[y+0]||0!==c[y+1]||1!==c[y+2])throw new Error("PES did not begin with start code");m=c[y+4]<<8|c[y+5],n=0!==(4&c[y+6]),o=c[y+7],p=c[y+8],y+=9,192&o&&(q=(14&c[y+0])<<28|(255&c[y+1])<<21|(254&c[y+2])<<13|(255&c[y+3])<<6|(254&c[y+4])>>>2,q/=45,r=q,64&o&&(r=(14&c[y+5])<<28|(255&c[y+6])<<21|(254&c[y+7])<<13|(255&c[y+8])<<6|(254&c[y+9])>>>2,r/=45)),y+=p,B===h.stream.programMapTable[b.h264]?k.setNextTimeStamp(q,r,n):B===h.stream.programMapTable[b.adts]&&l.setNextTimeStamp(q,m,n)}B===h.stream.programMapTable[b.adts]?l.writeBytes(c,y,z-y):B===h.stream.programMapTable[b.h264]?k.writeBytes(c,y,z-y):B===h.stream.programMapTable[b.metadata]&&h.metadataStream.push({pts:q,dts:r,data:c.subarray(y)})}else if(h.stream.pmtPid===B){if(A&&(y+=1+c[y]),2!==c[y],s=!!(1&c[y+5]))for(h.stream.programMapTable={},u=(15&c[y+1])<<8|c[y+2],t=(15&c[y+10])<<8|c[y+11],u-=t,u-=13,h.stream.programMapTable.pcrPid=(31&c[y+8])<<8|c[y+9],y+=12+t;u>0;){if(v=c[y+0],w=(31&c[y+1])<<8|c[y+2],v===b.h264&&h.stream.programMapTable[v]&&h.stream.programMapTable[v]!==w)throw new Error("Program has more than 1 video stream");if(v===b.adts&&h.stream.programMapTable[v]&&h.stream.programMapTable[v]!==w)throw new Error("Program has more than 1 audio Stream");h.stream.programMapTable[v]=w,x=(15&c[y+3])<<8|c[y+4],v===b.metadata&&(h.metadataStream.descriptor=new Uint8Array(c.subarray(y+5,y+5+x))),y+=5+x,u-=5+x}}else h.stream.networkPid===B||17===B||8191===B||h.stream.programMapTable.pcrPid;return!0},h.getTags=function(){return k.tags},h.stats={h264Tags:function(){return k.tags.length},minVideoPts:function(){return k.tags[0].pts},maxVideoPts:function(){return k.tags[k.tags.length-1].pts},aacTags:function(){return l.tags.length},minAudioPts:function(){return l.tags[0].pts},maxAudioPts:function(){return l.tags[l.tags.length-1].pts}}},muxjs.SegmentParser.MP2T_PACKET_LENGTH=a=188,muxjs.SegmentParser.STREAM_TYPES=b={h264:27,adts:15,metadata:21},muxjs.mp2t=muxjs.mp2t||{},muxjs.mp2t.H264_STREAM_TYPE=b.h264,muxjs.mp2t.ADTS_STREAM_TYPE=b.adts,muxjs.mp2t.METADATA_STREAM_TYPE=b.metadata}(window),function(a,b){"use strict";var c,d,e,f,g,h,i,j,k=0,l=videojs.EventTarget,m="blob:vjs-media-source/";j=a.WebKitDataCue||a.VTTCue,i=function(a){Object.defineProperties(a.frame,{id:{get:function(){return videojs.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),a.value.key}},value:{get:function(){return videojs.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),a.value.data}},privateData:{get:function(){return videojs.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),a.value.data}}})},c={mode:"auto"},videojs.MediaSource=videojs.extend(l,{constructor:function(b){var d;return this.settings_=videojs.mergeOptions(c,b),"auto"===this.settings_.mode&&videojs.MediaSource.supportsNativeMediaSources()||"html5"===this.settings_.mode?(d=new a.MediaSource,e(d),d.addEventListener("sourceopen",function(){var a=document.querySelector('[src="'+d.url_+'"]');(a||!a.parentNode)&&(d.player_=videojs(a.parentNode))}),d):new videojs.FlashMediaSource}}),videojs.MediaSource.supportsNativeMediaSources=function(){return!!a.MediaSource},e=function(a){a.virtualBuffers=[],a.addSourceBuffer_=a.addSourceBuffer,a.addSourceBuffer=f},f=function(a){var b,c;return/^video\/mp2t/i.test(a)?(c=a.split(";").slice(1).join(";"),c=c.replace(/avc1\.(\d+)\.(\d+)/i,function(a,b,c){var d=("00"+Number(b).toString(16)).slice(-2),e=("00"+Number(c).toString(16)).slice(-2);return"avc1."+d+"00"+e}),b=new d(this,c),this.virtualBuffers.push(b),b):this.addSourceBuffer_(a)},g=function(a,b,c){return function(){return a[b]&&a[b].updating?void 0:a.trigger(c)}},d=videojs.extend(l,{constructor:function(a,b){var c=this;this.timestampOffset_=0,this.pendingBuffers_=[],this.bufferUpdating_=!1,this.transmuxer_=new Worker(URL.createObjectURL(new Blob(['var muxjs={},transmuxer,initOptions={};!function(a,b){b.ExpGolomb=function(a){var b=a.byteLength,c=0,d=0;this.length=function(){return 8*b},this.bitsAvailable=function(){return 8*b+d},this.loadWord=function(){var e=a.byteLength-b,f=new Uint8Array(4),g=Math.min(4,b);if(0===g)throw new Error("no bytes available");f.set(a.subarray(e,e+g)),c=new DataView(f.buffer).getUint32(0),d=8*g,b-=g},this.skipBits=function(a){var e;d>a?(c<<=a,d-=a):(a-=d,e=Math.floor(a/8),a-=8*e,b-=e,this.loadWord(),c<<=a,d-=a)},this.readBits=function(a){var e=Math.min(d,a),f=c>>>32-e;return console.assert(32>a,"Cannot read more than 32 bits at a time"),d-=e,d>0?c<<=e:b>0&&this.loadWord(),e=a-e,e>0?f<a;++a)if(0!==(c&2147483648>>>a))return c<<=a,d-=a,a;return this.loadWord(),a+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros())},this.readUnsignedExpGolomb=function(){var a=this.skipLeadingZeros();return this.readBits(a+1)-1},this.readExpGolomb=function(){var a=this.readUnsignedExpGolomb();return 1&a?1+a>>>1:-1*(a>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord()}}(this,this.muxjs),function(a,b,c){"use strict";var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P;O=a.Uint8Array,P=a.DataView,function(){var a;A={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],smhd:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],styp:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[]};for(a in A)A.hasOwnProperty(a)&&(A[a]=[a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2),a.charCodeAt(3)]);B=new O(["i".charCodeAt(0),"s".charCodeAt(0),"o".charCodeAt(0),"m".charCodeAt(0)]),D=new O(["a".charCodeAt(0),"v".charCodeAt(0),"c".charCodeAt(0),"1".charCodeAt(0)]),C=new O([0,0,0,1]),E=new O([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),F=new O([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),G={video:E,audio:F},J=new O([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),I=new O([0,0,0,0,0,0,0,0]),K=new O([0,0,0,0,0,0,0,0]),L=K,M=new O([0,0,0,0,0,0,0,0,0,0,0,0]),N=K,H=new O([0,0,0,1,0,0,0,0,0,0,0,0])}(),d=function(a){var b,c,d,e=[],f=0;for(b=1;b>>1,a.samplingfrequencyindex<<7|a.channelcount<<3,6,1,2]))},g=function(){return d(A.ftyp,B,C,B,D)},s=function(a){return d(A.hdlr,G[a])},h=function(a){return d(A.mdat,a)},r=function(a){var b=new O([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,a.duration>>>24&255,a.duration>>>16&255,a.duration>>>8&255,255&a.duration,85,196,0,0]);return a.samplerate&&(b[12]=a.samplerate>>>24&255,b[13]=a.samplerate>>>16&255,b[14]=a.samplerate>>>8&255,b[15]=255&a.samplerate),d(A.mdhd,b)},q=function(a){return d(A.mdia,r(a),s(a.type),j(a))},i=function(a){return d(A.mfhd,new O([0,0,0,0,(4278190080&a)>>24,(16711680&a)>>16,(65280&a)>>8,255&a]))},j=function(a){return d(A.minf,"video"===a.type?d(A.vmhd,H):d(A.smhd,I),e(),u(a))},k=function(a,b){for(var c=[],e=b.length;e--;)c[e]=x(b[e]);return d.apply(null,[A.moof,i(a)].concat(c))},l=function(a){for(var b=a.length,c=[];b--;)c[b]=o(a[b]);return d.apply(null,[A.moov,n(4294967295)].concat(c).concat(m(a)))},m=function(a){for(var b=a.length,c=[];b--;)c[b]=y(a[b]);return d.apply(null,[A.mvex].concat(c))},n=function(a){var b=new O([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&a)>>24,(16711680&a)>>16,(65280&a)>>8,255&a,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return d(A.mvhd,b)},t=function(a){var b,c,e=a.samples||[],f=new O(4+e.length);for(c=0;c>>8),f.push(255&c[b].byteLength),f=f.concat(Array.prototype.slice.call(c[b]));for(b=0;b>>8),g.push(255&e[b].byteLength),g=g.concat(Array.prototype.slice.call(e[b]));return d(A.avc1,new O([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&a.width)>>8,255&a.width,(65280&a.height)>>8,255&a.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),d(A.avcC,new O([1,a.profileIdc,a.profileCompatibility,a.levelIdc,255].concat([c.length]).concat(f).concat([e.length]).concat(g))),d(A.btrt,new O([0,28,156,128,0,45,198,192,0,45,198,192])))},b=function(a){return d(A.mp4a,new O([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&a.channelcount)>>8,255&a.channelcount,(65280&a.samplesize)>>8,255&a.samplesize,0,0,0,0,(65280&a.samplerate)>>8,255&a.samplerate,0,0]),f(a))}}(),w=function(){return d(A.styp,B,C,B)},p=function(a){var b=new O([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,0,(4278190080&a.duration)>>24,(16711680&a.duration)>>16,(65280&a.duration)>>8,255&a.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&a.width)>>8,255&a.width,0,0,(65280&a.height)>>8,255&a.height,0,0]);return d(A.tkhd,b)},x=function(a){var b,c,e,f,g;return b=d(A.tfhd,new O([0,0,0,58,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),c=d(A.tfdt,new O([0,0,0,0,a.baseMediaDecodeTime>>>24&255,a.baseMediaDecodeTime>>>16&255,a.baseMediaDecodeTime>>>8&255,255&a.baseMediaDecodeTime])),g=88,"audio"===a.type?(e=z(a,g),d(A.traf,b,c,e)):(f=t(a),e=z(a,f.length+g),d(A.traf,b,c,e,f))},o=function(a){return a.duration=a.duration||4294967295,d(A.trak,p(a),q(a))},y=function(a){var b=new O([0,0,0,0,(4278190080&a.id)>>24,(16711680&a.id)>>16,(65280&a.id)>>8,255&a.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return"video"!==a.type&&(b[b.length-1]=0),d(A.trex,b)},function(){var a,b,e;e=function(a,b){var d=0,e=0,f=0,g=0;return a.length&&(a[0].duration!==c&&(d=1),a[0].size!==c&&(e=2),a[0].flags!==c&&(f=4),a[0].compositionTimeOffset!==c&&(g=8)),[0,0,d|e|f|g,1,(4278190080&a.length)>>>24,(16711680&a.length)>>>16,(65280&a.length)>>>8,255&a.length,(4278190080&b)>>>24,(16711680&b)>>>16,(65280&b)>>>8,255&b]},b=function(a,b){var c,f,g,h;for(f=a.samples||[],b+=20+16*f.length,c=e(f,b),h=0;h>>24,(16711680&g.duration)>>>16,(65280&g.duration)>>>8,255&g.duration,(4278190080&g.size)>>>24,(16711680&g.size)>>>16,(65280&g.size)>>>8,255&g.size,g.flags.isLeading<<2|g.flags.dependsOn,g.flags.isDependedOn<<6|g.flags.hasRedundancy<<4|g.flags.paddingValue<<1|g.flags.isNonSyncSample,61440&g.flags.degradationPriority,15&g.flags.degradationPriority,(4278190080&g.compositionTimeOffset)>>>24,(16711680&g.compositionTimeOffset)>>>16,(65280&g.compositionTimeOffset)>>>8,255&g.compositionTimeOffset]);return d(A.trun,new O(c))},a=function(a,b){var c,f,g,h;for(f=a.samples||[],b+=20+8*f.length,c=e(f,b),h=0;h>>24,(16711680&g.duration)>>>16,(65280&g.duration)>>>8,255&g.duration,(4278190080&g.size)>>>24,(16711680&g.size)>>>16,(65280&g.size)>>>8,255&g.size]);return d(A.trun,new O(c))},z=function(c,d){return"audio"===c.type?a(c,d):b(c,d)}}(),b.mp4={ftyp:g,mdat:h,moof:k,moov:l,initSegment:function(a){var b,c=g(),d=l(a);return b=new O(c.byteLength+d.byteLength),b.set(c),b.set(d,c.byteLength),b}}}(this,this.muxjs),function(a,b){var c=function(){this.init=function(){var a={};this.on=function(b,c){a[b]||(a[b]=[]),a[b].push(c)},this.off=function(b,c){var d;return a[b]?(d=a[b].indexOf(c),a[b].splice(d,1),d>-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else{for(f=[],d=arguments.length,d=1;dd;++d)c[d].apply(this,f)}},this.dispose=function(){a={}}}};c.prototype.pipe=function(a){return this.on("data",function(b){a.push(b)}),this.on("done",function(){a.flush()}),a},c.prototype.push=function(a){this.trigger("data",a)},c.prototype.flush=function(){this.trigger("done")},a.muxjs=a.muxjs||{},a.muxjs.Stream=c}(this),function(a,b,c){"use strict";var d,e=function(a,b,c){var d,e="";for(d=b;c>d;d++)e+="%"+("00"+a[d].toString(16)).slice(-2);return e},f=function(b,c,d){return a.decodeURIComponent(e(b,c,d))},g=function(b,c,d){return a.unescape(e(b,c,d))},h={TXXX:function(a){var b;if(3===a.data[0]){for(b=1;bi)){for(b={data:new Uint8Array(f),frames:[],pts:g[0].pts,dts:g[0].dts},k=0;f>k;)b.data.set(g[0].data,k),k+=g[0].data.byteLength,i-=g[0].data.byteLength,g.shift();c=10,64&b.data[5]&&(c+=4,c+=b.data[10]<<24|b.data[11]<<16|b.data[12]<<8|b.data[13],f-=b.data[16]<<24|b.data[17]<<16|b.data[18]<<8|b.data[19]);do{if(d=b.data[c+4]<<24|b.data[c+5]<<16|b.data[c+6]<<8|b.data[c+7],1>d)return console.log("Malformed ID3 frame encountered. Skipping metadata parsing.");j={id:String.fromCharCode(b.data[c],b.data[c+1],b.data[c+2],b.data[c+3]),data:b.data.subarray(c+10,c+d+10)},j.key=j.id,h[j.id]&&h[j.id](j),b.frames.push(j),c+=10,c+=d}while(f>c);this.trigger("data",b)}}}},d.prototype=new b.Stream,b.mp2t=b.mp2t||{},b.mp2t.MetadataStream=d}(this,this.muxjs),function(a,b,c){"use strict";var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;q=188,v=71,r=27,s=15,t=21,u=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],w=b.mp4,d=function(){var a=new Uint8Array(q),b=0;d.prototype.init.call(this),this.push=function(c){var d,e=0,f=q;for(b?(d=new Uint8Array(c.byteLength+b),d.set(a),d.set(c,b),b=0):d=c;ff;)g.programMapTable[(31&a[f+1])<<8|a[f+2]]=a[f],f+=((15&a[f+3])<<8|a[f+4])+5;for(b.programMapTable=g.programMapTable;g.packetsWaitingForPmt.length;)g.processPes_.apply(g,g.packetsWaitingForPmt.shift())}},f=function(a,b){var c;return b.payloadUnitStartIndicator?(b.dataAlignmentIndicator=0!==(4&a[6]),c=a[7],192&c&&(b.pts=(14&a[9])<<28|(255&a[10])<<21|(254&a[11])<<13|(255&a[12])<<6|(254&a[13])>>>2,b.pts*=2,b.pts+=2&a[13],b.dts=b.pts,64&c&&(b.dts=(14&a[14])<<28|(255&a[15])<<21|(254&a[16])<<13|(255&a[17])<<6|(254&a[18])>>>2,b.dts*=2,b.dts+=2&a[18])),void(b.data=a.subarray(9+a[8]))):void(b.data=a)},this.push=function(b){var d={},e=4;d.payloadUnitStartIndicator=!!(64&b[1]),d.pid=31&b[1],d.pid<<=8,d.pid|=b[2],(48&b[3])>>>4>1&&(e+=b[e]+1),0===d.pid?(d.type="pat",a(b.subarray(e),d),this.trigger("data",d)):d.pid===this.pmtPid?(d.type="pmt",a(b.subarray(e),d),this.trigger("data",d)):this.programMapTable===c?this.packetsWaitingForPmt.push([b,e,d]):this.processPes_(b,e,d)},this.processPes_=function(a,b,c){c.streamType=this.programMapTable[c.pid],c.type="pes",f(a.subarray(b),c),this.trigger("data",c)}},e.prototype=new b.Stream,e.STREAM_TYPES={h264:27,adts:15},f=function(){var a,b={data:[],size:0},c={data:[],size:0},d={data:[],size:0},e=function(b,c){var d,e={type:c,data:new Uint8Array(b.size)},f=0;if(b.data.length){for(e.trackId=b.data[0].pid,e.pts=b.data[0].pts,e.dts=b.data[0].dts;b.data.length;)d=b.data.shift(),e.data.set(d.data,f),f+=d.data.byteLength;b.size=0,a.trigger("data",e)}};f.prototype.init.call(this),a=this,this.push=function(f){({pat:function(){},pes:function(){var a,g;switch(f.streamType){case r:a=b,g="video";break;case s:a=c,g="audio";break;case t:a=d,g="timed-metadata";break;default:return}f.payloadUnitStartIndicator&&e(a,g),a.data.push(f),a.size+=f.data.byteLength},pmt:function(){var b,c,d={type:"metadata",tracks:[]},e=f.programMapTable;for(b in e)e.hasOwnProperty(b)&&(c={timelineStartInfo:{}},c.id=+b,e[b]===r?(c.codec="avc",c.type="video"):e[b]===s&&(c.codec="adts",c.type="audio"),d.tracks.push(c));a.trigger("data",d)}})[f.type]()},this.flush=function(){e(b,"video"),e(c,"audio"),e(d,"timed-metadata"),this.trigger("done")}},f.prototype=new b.Stream,j=function(){var a,b,d=0;j.prototype.init.call(this),a=this,this.push=function(a){var e,f,g,h;if("audio"===a.type)for(b?(h=b,b=new Uint8Array(h.byteLength+a.data.byteLength),b.set(h),b.set(a.data,h.byteLength)):b=a.data;d+5>5,g=d+e,b.byteLength>>6&3)+1,channelcount:(1&b[d+2])<<3|(192&b[d+3])>>>6,samplerate:u[(60&b[d+2])>>>2],samplingfrequencyindex:(60&b[d+2])>>>2,samplesize:16,data:b.subarray(d+7+f,g)}),b.byteLength===g)return void(b=c);b=b.subarray(g),d=0}else console.log("adts desync"),d++}},j.prototype=new b.Stream,h=function(a){var b=[],d=0,e=0,f=0;h.prototype.init.call(this),this.push=function(e){n(a,e),a&&a.channelcount===c&&(a.audioobjecttype=e.audioobjecttype,a.channelcount=e.channelcount,a.samplerate=e.samplerate,a.samplingfrequencyindex=e.samplingfrequencyindex,a.samplesize=e.samplesize),b.push(e),d+=e.data.byteLength},this.setEarliestDts=function(a){f=a},this.flush=function(){var c,g,h,i,j,k,l;if(0===d)return void this.trigger("done");for(a.minSegmentDts=f?(a.minSegmentDts=Math.min(a.minSegmentDts,b.dts),!0):(d-=b.data.byteLength,!1)})),h=new Uint8Array(d),a.samples=[],j=0;b.length;)g=b[0],i={size:g.data.byteLength,duration:1024},a.samples.push(i),h.set(g.data,j),j+=g.data.byteLength,b.shift();d=0,k=w.mdat(h),p(a),l=w.moof(e,[a]),c=new Uint8Array(l.byteLength+k.byteLength),e++,c.set(l),c.set(k,l.byteLength),o(a),this.trigger("data",{track:a,boxes:c}),this.trigger("done")}},h.prototype=new b.Stream,l=function(){var a,b,c=0;l.prototype.init.call(this),this.push=function(d){var e;for(b?(e=new Uint8Array(b.byteLength+d.data.byteLength),e.set(b),e.set(d.data,b.byteLength),b=e):b=d.data;c3&&this.trigger("data",b.subarray(c+3)),b=null,c=0,this.trigger("done")}},l.prototype=new b.Stream,k=function(){var a,c,d,e,f,g,h,i=new l;k.prototype.init.call(this),a=this,this.push=function(a){"video"===a.type&&(c=a.trackId,d=a.pts,e=a.dts,i.push(a))},i.on("data",function(b){var h={trackId:c,pts:d,dts:e,data:b};switch(31&b[0]){case 5:h.nalUnitType="slice_layer_without_partitioning_rbsp_idr";break;case 6:h.nalUnitType="sei_rbsp";break;case 7:h.nalUnitType="seq_parameter_set_rbsp",h.escapedRBSP=f(b.subarray(1)),h.config=g(h.escapedRBSP);break;case 8:h.nalUnitType="pic_parameter_set_rbsp";break;case 9:h.nalUnitType="access_unit_delimiter_rbsp"}a.trigger("data",h)}),i.on("done",function(){a.trigger("done")}),this.flush=function(){i.flush()},h=function(a,b){var c,d,e=8,f=8;for(c=0;a>c;c++)0!==f&&(d=b.readExpGolomb(),f=(e+d+256)%256),e=0===f?e:f},f=function(a){for(var b,c,d=a.byteLength,e=[],f=1;d-2>f;)0===a[f]&&0===a[f+1]&&3===a[f+2]?(e.push(f+2),f+=2):f++;if(0===e.length)return a;b=d-e.length,c=new Uint8Array(b);var g=0;for(f=0;b>f;g++,f++)g===e[0]&&(g++,e.shift()),c[f]=a[g];return c},g=function(a){var c,d,e,f,g,i,j,k,l,m,n,o,p=0,q=0,r=0,s=0;if(c=new b.ExpGolomb(a),d=c.readUnsignedByte(),f=c.readUnsignedByte(),e=c.readUnsignedByte(),c.skipUnsignedExpGolomb(),(100===d||110===d||122===d||244===d||44===d||83===d||86===d||118===d||128===d||138===d||139===d||134===d)&&(g=c.readUnsignedExpGolomb(),3===g&&c.skipBits(1),c.skipUnsignedExpGolomb(),c.skipUnsignedExpGolomb(),c.skipBits(1),c.readBoolean()))for(n=3!==g?8:12,o=0;n>o;o++)c.readBoolean()&&(6>o?h(16,c):h(64,c));if(c.skipUnsignedExpGolomb(),i=c.readUnsignedExpGolomb(),0===i)c.readUnsignedExpGolomb();else if(1===i)for(c.skipBits(1),c.skipExpGolomb(),c.skipExpGolomb(),j=c.readUnsignedExpGolomb(),o=0;j>o;o++)c.skipExpGolomb();return c.skipUnsignedExpGolomb(),c.skipBits(1),k=c.readUnsignedExpGolomb(),l=c.readUnsignedExpGolomb(),m=c.readBits(1),0===m&&c.skipBits(1),c.skipBits(1),c.readBoolean()&&(p=c.readUnsignedExpGolomb(),q=c.readUnsignedExpGolomb(),r=c.readUnsignedExpGolomb(),s=c.readUnsignedExpGolomb()),{profileIdc:d,levelIdc:e,profileCompatibility:f,width:16*(k+1)-2*p-2*q,height:(2-m)*(l+1)*16-2*r-2*s}}},k.prototype=new b.Stream,g=function(a){var b,d,e=0,f=[],h=0;g.prototype.init.call(this),delete a.minPTS,this.push=function(c){n(a,c),"seq_parameter_set_rbsp"!==c.nalUnitType||b||(b=c.config,a.width=b.width,a.height=b.height,a.sps=[c.data],a.profileIdc=b.profileIdc,a.levelIdc=b.levelIdc,a.profileCompatibility=b.profileCompatibility),"pic_parameter_set_rbsp"!==c.nalUnitType||d||(d=c.data,a.pps=[c.data]),f.push(c),h+=c.data.byteLength},this.flush=function(){var g,i,j,k,l,m,n,q,r;if(0!==h){for(n=new Uint8Array(h+4*f.length),q=new DataView(n.buffer),a.samples=[],r={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0}},m=0;f.length;)i=f[0],"access_unit_delimiter_rbsp"===i.nalUnitType&&(g&&(r.duration=i.dts-g.dts,a.samples.push(r)),r={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0},compositionTimeOffset:i.pts-i.dts},g=i),"slice_layer_without_partitioning_rbsp_idr"===i.nalUnitType&&(r.flags.dependsOn=2),r.size+=4,r.size+=i.data.byteLength,q.setUint32(m,i.data.byteLength),m+=4,n.set(i.data,m),m+=i.data.byteLength,f.shift();a.samples.length&&(r.duration=a.samples[a.samples.length-1].duration),a.samples.push(r),h=0,k=w.mdat(n),p(a),this.trigger("timelineStartInfo",a.timelineStartInfo),j=w.moof(e,[a]),l=new Uint8Array(j.byteLength+k.byteLength),e++,l.set(j),l.set(k,j.byteLength),o(a),this.trigger("data",{track:a,boxes:l}),b=c,d=c,this.trigger("done")}}},g.prototype=new b.Stream,n=function(a,b){"number"==typeof b.pts&&(a.timelineStartInfo.pts===c?a.timelineStartInfo.pts=b.pts:a.timelineStartInfo.pts=Math.min(a.timelineStartInfo.pts,b.pts)),"number"==typeof b.dts&&(a.timelineStartInfo.dts===c?a.timelineStartInfo.dts=b.dts:a.timelineStartInfo.dts=Math.min(a.timelineStartInfo.dts,b.dts),a.minSegmentDts===c?a.minSegmentDts=b.dts:a.minSegmentDts=Math.min(a.minSegmentDts,b.dts),a.maxSegmentDts===c?a.maxSegmentDts=b.dts:a.maxSegmentDts=Math.max(a.maxSegmentDts,b.dts))},o=function(a){delete a.minSegmentDts,delete a.maxSegmentDts},p=function(a){var b,c=9e4;a.baseMediaDecodeTime=a.minSegmentDts-a.timelineStartInfo.dts,"audio"===a.type&&(b=a.samplerate/c,a.baseMediaDecodeTime*=b,a.baseMediaDecodeTime=Math.floor(a.baseMediaDecodeTime))},m=function(a){this.numberOfTracks=0,this.metadataStream=a.metadataStream,"undefined"!=typeof a.remux?this.remuxTracks=!!a.remux:this.remuxTracks=!0,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,m.prototype.init.call(this),this.push=function(a){return a.text?this.pendingCaptions.push(a):a.frames?this.pendingMetadata.push(a):(this.pendingTracks.push(a.track),this.pendingBoxes.push(a.boxes),this.pendingBytes+=a.boxes.byteLength,"video"===a.track.type&&(this.videoTrack=a.track),void("audio"===a.track.type&&(this.audioTrack=a.track)))}},m.prototype=new b.Stream,m.prototype.flush=function(){var a,c,d,e,f=0,g={captions:[],metadata:[]},h=0;if(!(0===this.pendingTracks.length||this.remuxTracks&&this.pendingTracks.lengthc;c++)e=3*c,f={type:3&b[e+2],pts:a},4&b[e+2]&&(f.ccData=b[e+3]<<8|b[e+4],g.push(f));return g},h=function(){h.prototype.init.call(this),this.field1_=new v,this.field1_.on("data",this.trigger.bind(this,"data"))};h.prototype=new b.Stream,h.prototype.push=function(a){var b,c,h,i;if("sei_rbsp"===a.nalUnitType&&(b=e(a.data),b.payloadType===d&&(c=f(b))))for(h=g(a.pts,c),i=0;i>>8,16===(240&d))return;this[this.mode_](a.pts,d,255&b)}}};v.prototype=new b.Stream,v.prototype.flushDisplayed=function(a){var b,c;for(c=0;ca;a++)this.displayed_[a]=this.displayed_[a+1];this.displayed_[t]=""},b.mp2t=b.mp2t||{},b.mp2t.CaptionStream=h,b.mp2t.Cea608Stream=v}(this,this.muxjs);var wireTransmuxerEvents=function(a){a.on("data",function(a){a.data=a.data.buffer,postMessage({action:"data",segment:a},[a.data])}),a.captionStream&&a.captionStream.on("data",function(a){postMessage({action:"caption",data:a})}),a.on("done",function(a){postMessage({action:"done"})})},messageHandlers={init:function(a){initOptions=a&&a.options||{},this.defaultInit()},defaultInit:function(){transmuxer=new muxjs.mp2t.Transmuxer(initOptions),wireTransmuxerEvents(transmuxer)},push:function(a){var b=new Uint8Array(a.data);transmuxer.push(b)},resetTransmuxer:function(a){this.defaultInit()},flush:function(a){transmuxer.flush()}};onmessage=function(a){transmuxer||"init"===a.data.action||messageHandlers.defaultInit(),a.data&&a.data.action&&messageHandlers[a.data.action]&&messageHandlers[a.data.action](a.data)};'],{ type:"application/javascript"}))),this.transmuxer_.onmessage=function(d){if("data"===d.data.action){var e=d.data.segment;return e.data=new Uint8Array(e.data),"video"===e.type?c.videoBuffer_||(c.videoBuffer_=a.addSourceBuffer_("video/mp4;"+(b||"codecs=avc1.4d400d")),c.videoBuffer_.timestampOffset=c.timestampOffset_,c.videoBuffer_.addEventListener("updatestart",g(c,"audioBuffer_","updatestart")),c.videoBuffer_.addEventListener("update",g(c,"audioBuffer_","update")),c.videoBuffer_.addEventListener("updateend",g(c,"audioBuffer_","updateend"))):"audio"===e.type?c.audioBuffer_||(c.audioBuffer_=a.addSourceBuffer_("audio/mp4;"+(b||"codecs=mp4a.40.2")),c.audioBuffer_.timestampOffset=c.timestampOffset_,c.audioBuffer_.addEventListener("updatestart",g(c,"videoBuffer_","updatestart")),c.audioBuffer_.addEventListener("update",g(c,"videoBuffer_","update")),c.audioBuffer_.addEventListener("updateend",g(c,"videoBuffer_","updateend"))):"combined"===e.type&&(c.videoBuffer_||(c.videoBuffer_=a.addSourceBuffer_("video/mp4;"+(b||"codecs=avc1.4d400d, mp4a.40.2")),c.videoBuffer_.timestampOffset=c.timestampOffset_,c.videoBuffer_.addEventListener("updatestart",g(c,"videoBuffer_","updatestart")),c.videoBuffer_.addEventListener("update",g(c,"videoBuffer_","update")),c.videoBuffer_.addEventListener("updateend",g(c,"videoBuffer_","updateend")))),e.captions&&e.captions.length&&!c.inbandTextTrack_&&(c.inbandTextTrack_=a.player_.addTextTrack("captions")),e.metadata&&e.metadata.length&&!c.metadataTrack_&&(c.metadataTrack_=a.player_.addTextTrack("metadata","Timed Metadata"),c.metadataTrack_.inBandMetadataTrackDispatchType=e.metadata.dispatchType),void c.pendingBuffers_.push(e)}return"done"===d.data.action?void c.processPendingSegments_():void 0},Object.defineProperty(this,"timestampOffset",{get:function(){return this.timestampOffset_},set:function(a){"number"==typeof a&&a>=0&&(this.timestampOffset_=a,this.videoBuffer_&&(this.videoBuffer_.timestampOffset=a),this.audioBuffer_&&(this.audioBuffer_.timestampOffset=a),this.transmuxer_.postMessage({action:"resetTransmuxer"}))}}),Object.defineProperty(this,"updating",{get:function(){return this.bufferUpdating_||this.audioBuffer_&&this.audioBuffer_.updating||this.videoBuffer_&&this.videoBuffer_.updating}}),Object.defineProperty(this,"buffered",{get:function(){var a=null,b=null,c=0,d=[],e=[];if(!(this.videoBuffer_&&0!==this.videoBuffer_.buffered.length||this.audioBuffer_&&0!==this.audioBuffer_.buffered.length))return videojs.createTimeRange();if(!this.videoBuffer_)return this.audioBuffer_.buffered;if(!this.audioBuffer_)return this.audioBuffer_.buffered;for(var f=this.videoBuffer_.buffered,g=this.audioBuffer_.buffered,h=f.length;h--;)d.push({time:f.start(h),type:"start"}),d.push({time:f.end(h),type:"end"});for(h=g.length;h--;)d.push({time:g.start(h),type:"start"}),d.push({time:g.end(h),type:"end"});for(d.sort(function(a,b){return a.time-b.time}),h=0;h=a&&c.removeCue(e)},remove:function(a,b){this.videoBuffer_&&this.videoBuffer_.remove(a,b),this.audioBuffer_&&this.audioBuffer_.remove(a,b),this.removeCuesFromTrack_(a,b,this.metadataTrack_),this.removeCuesFromTrack_(a,b,this.inbandTextTrack_)},processPendingSegments_:function(){var a={video:{segments:[],bytes:0},audio:{segments:[],bytes:0},captions:[],metadata:[]};a=this.pendingBuffers_.reduce(function(a,b){var c=b.type,d=b.data;return"combined"===c&&(c="video"),a[c].segments.push(d),a[c].bytes+=d.byteLength,b.captions&&(a.captions=a.captions.concat(b.captions)),b.metadata&&(a.metadata=a.metadata.concat(b.metadata)),a},a),a.captions.forEach(function(a){this.inbandTextTrack_.addCue(new VTTCue(a.startTime+this.timestampOffset,a.endTime+this.timestampOffset,a.text))},this),a.metadata.forEach(function(a){var b=a.cueTime+this.timestampOffset;a.frames.forEach(function(a){var c=new j(b,b,a.value||a.url||a.data||"");c.frame=a,c.value=a,i(c),this.metadataTrack_.addCue(c)},this)},this),this.concatAndAppendSegments_(a.video,this.videoBuffer_),this.concatAndAppendSegments_(a.audio,this.audioBuffer_),this.pendingBuffers_.length=0,this.bufferUpdating_=!1},concatAndAppendSegments_:function(a,b){var c,d=0;a.bytes&&(c=new Uint8Array(a.bytes),a.segments.forEach(function(a){c.set(a,d),d+=a.byteLength}),b.appendBuffer(c))},abort:function(){this.videoBuffer_&&this.videoBuffer_.abort(),this.audioBuffer_&&this.audioBuffer_.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"resetTransmuxer"}),this.pendingBuffers_.length=0,this.bufferUpdating_=!1}}),videojs.FlashMediaSource=videojs.extend(l,{constructor:function(){var a=this;this.sourceBuffers=[],this.readyState="closed",this.on(["sourceopen","webkitsourceopen"],function(b){this.swfObj=document.getElementById(b.swfId),this.tech_=this.swfObj.tech,this.readyState="open",this.tech_.on("seeking",function(){for(var b=a.sourceBuffers.length;b--;)a.sourceBuffers[b].abort()}),this.swfObj&&this.swfObj.vjs_load()})}}),videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL=4194304,videojs.FlashMediaSource.TICKS_PER_SECOND=60,videojs.FlashMediaSource.prototype.addSourceBuffer=function(a){var b;if(0!==a.indexOf("video/mp2t"))throw new Error("NotSupportedError (Video.js)");return b=new videojs.FlashSourceBuffer(this),this.sourceBuffers.push(b),b};try{Object.defineProperty(videojs.FlashMediaSource.prototype,"duration",{get:function(){return this.swfObj?this.swfObj.vjs_getProperty("duration"):0/0},set:function(a){return this.swfObj.vjs_setProperty("duration",a),a}})}catch(n){videojs.FlashMediaSource.prototype.duration=0/0}videojs.FlashMediaSource.prototype.endOfStream=function(a){"network"===a?this.tech_.error(2):"decode"===a&&this.tech_.error(3),this.readyState="ended"},videojs.mediaSources={},videojs.MediaSource.open=function(a,b){var c=videojs.mediaSources[a];if(!c)throw new Error("Media Source not found (Video.js)");c.trigger({type:"sourceopen",swfId:b})},h=function(b){a.setTimeout(b,Math.ceil(1e3/videojs.FlashMediaSource.TICKS_PER_SECOND))},videojs.FlashSourceBuffer=videojs.extend(l,{constructor:function(c){var d;this.buffer_=[],this.bufferSize_=0,this.basePtsOffset_=0/0,this.source=c,this.updating=!1,this.timestampOffset_=0,this.segmentParser_=new b.SegmentParser,d=a.btoa(String.fromCharCode.apply(null,Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))),this.source.swfObj.vjs_appendBuffer(d),Object.defineProperty(this,"timestampOffset",{get:function(){return this.timestampOffset_},set:function(a){"number"==typeof a&&a>=0&&(this.timestampOffset_=a,this.source.swfObj.vjs_discontinuity(),this.basePtsOffset_=0/0)}}),Object.defineProperty(this,"buffered",{get:function(){return videojs.createTimeRange(0,this.source.swfObj.vjs_getProperty("buffered"))}})},appendBuffer:function(a){var b,c;if(this.updating)throw b=new Error("SourceBuffer.append() cannot be called while an update is in progress"),b.name="InvalidStateError",b.code=11,b;0===this.buffer_.length&&h(this.processBuffer_.bind(this)),this.updating=!0,this.source.readyState="open",this.trigger({type:"update"}),c=this.tsToFlv_(a),this.buffer_.push(c),this.bufferSize_+=c.byteLength},abort:function(){this.buffer_=[],this.bufferSize_=0,this.source.swfObj.vjs_abort(),this.updating&&(this.updating=!1,this.trigger({type:"updateend"}))},remove:function(){this.trigger({type:"update"}),this.trigger({type:"updateend"})},processBuffer_:function(){var b,c,d,e,f,g,i;if(this.buffer_.length){for(f=document.hidden?videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL:Math.ceil(videojs.FlashMediaSource.BYTES_PER_SECOND_GOAL/videojs.FlashMediaSource.TICKS_PER_SECOND),e=new Uint8Array(Math.min(f,this.bufferSize_)),c=e.byteLength;c;)b=this.buffer_[0].subarray(0,c),e.set(b,e.byteLength-c),b.byteLengthc;c++)g+=String.fromCharCode(e[c]);i=a.btoa(g),this.source.swfObj.CallFunction(''+i+""),0!==this.bufferSize_?h(this.processBuffer_.bind(this)):(this.updating=!1,this.trigger({type:"updateend"}),"ended"===this.source.readyState&&this.source.swfObj.vjs_endOfStream())}},tsToFlv_:function(a){var b,c,d,e,f=0,g=[],h=this.source.tech_,i=0;for(this.segmentParser_.parseSegmentBinaryData(a),this.segmentParser_.flushTags();this.segmentParser_.tagsAvailable();)g.push(this.segmentParser_.getNextTag());if(isNaN(this.basePtsOffset_)&&g.length&&(this.basePtsOffset_=g[0].pts),h.seeking())for(e=h.currentTime()-this.timestampOffset,e*=1e3,e+=this.basePtsOffset_;i=2},b.Hls=b.extend(i,{constructor:function(a,c){var d,e=this;i.call(this,a),a.options_&&a.options_.playerId&&(d=b(a.options_.playerId),d.hls||Object.defineProperty(d,"hls",{get:function(){return b.log.warn("player.hls is deprecated. Use player.tech.hls instead."),e}})),this.tech_=a,this.source_=c.source,this.mode_=c.mode,this.pendingSegment_=null,this.bytesReceived=0,this.loadingState_="none","none"!==this.tech_.preload()&&(this.loadingState_="meta"),this.segmentBuffer_=[],this.startCheckingBuffer_(),this.on(this.tech_,"seeking",function(){this.setCurrentTime(this.tech_.currentTime())}),this.on(this.tech_,"play",this.play)}}),b.Hls.canPlaySource=function(){return b.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")},b.HlsSourceHandler=function(a){return{canHandleSource:function(a){var c=/^application\/(?:x-|vnd\.apple\.)mpegurl/i;return b.Hls.supportsNativeHls?!1:c.test(a.type)},handleSource:function(c,d){return"flash"===a&&d.setTimeout(function(){d.trigger("loadstart")},1),d.hls=new b.Hls(d,{source:c,mode:a}),d.hls.src(c.src),d.hls}}},b.MediaSource.supportsNativeMediaSources()&&b.getComponent("Html5").registerSourceHandler(b.HlsSourceHandler("html5")),b.getComponent("Flash").registerSourceHandler(b.HlsSourceHandler("flash")),b.Hls.GOAL_BUFFER_LENGTH=30,b.Hls.prototype.src=function(a){var c;a&&(this.mediaSource=new b.MediaSource({mode:this.mode_}),this.segmentBuffer_=[],this.mediaSource.addEventListener("sourceopen",this.handleSourceOpen.bind(this)),this.mediaIndex=0,this.options_={},this.source_.withCredentials!==d?this.options_.withCredentials=this.source_.withCredentials:b.options.hls&&(this.options_.withCredentials=b.options.hls.withCredentials),this.playlists=new b.Hls.PlaylistLoader(this.source_.src,this.options_.withCredentials),this.playlists.on("loadedmetadata",function(){var a,b,e,f,g,h,i;c=this.playlists.media(),c.endList&&"metadata"!==this.tech_.preload()&&"none"!==this.tech_.preload()&&(this.loadingState_="segments"),this.bandwidth===d&&this.setBandwidth({bandwidth:5*this.playlists.bandwidth}),this.setupSourceBuffer_(),a=this.selectPlaylist(),e=c.attributes&&c.attributes.BANDWIDTH||0,f=a.attributes&&a.attributes.BANDWIDTH||0,g=c.segments&&c.segments[this.mediaIndex].duration||c.targetDuration,h=g*f/this.bandwidth,h||(h=1/0),i=10,f>e&&i>=h?(this.playlists.media(a),b=function(){this.setupFirstPlay(),this.fillBuffer(),this.tech_.trigger("loadedmetadata"),this.playlists.off("loadedplaylist",b)}.bind(this),this.playlists.on("loadedplaylist",b)):(this.setupFirstPlay(),this.fillBuffer(),this.tech_.trigger("loadedmetadata"))}.bind(this)),this.playlists.on("error",function(){2===this.playlists.error.code?this.mediaSource.endOfStream("network"):4===this.playlists.error.code&&this.mediaSource.endOfStream("decode"),this.tech_.error(this.playlists.error)}.bind(this)),this.playlists.on("loadedplaylist",function(){var a=this.playlists.media();a&&(this.updateDuration(this.playlists.media()),this.mediaIndex=b.Hls.translateMediaIndex(this.mediaIndex,c,a),c=a,this.fetchKeys_())}.bind(this)),this.playlists.on("mediachange",function(){e&&this.cancelKeyXhr(),this.tech_.trigger({type:"mediachange",bubbles:!0})}.bind(this)),this.tech_.el()&&this.tech_.src(b.URL.createObjectURL(this.mediaSource)))},b.Hls.getMediaIndexForLive_=function(a){if(!a.segments)return 0;for(var b=a.segments.length,c=0,d=3*(a.targetDuration||10);d>c&&b>0;)c+=a.segments[b-1].duration,b--;return b},b.Hls.prototype.handleSourceOpen=function(){this.sourceBuffer||this.setupSourceBuffer_(),this.tech_.autoplay()&&this.play()},b.Hls.prototype.setupSourceBuffer_=function(){var a,b=this.playlists.media();b&&"open"===this.mediaSource.readyState&&(a="video/mp2t",b.attributes&&b.attributes.CODECS&&(a+='; codecs="'+b.attributes.CODECS+'"'),this.sourceBuffer=this.mediaSource.addSourceBuffer(a),this.sourceBuffer.addEventListener("updateend",function(){var a,b,c=this.pendingSegment_;if(this.pendingSegment_=null,this.duration()!==1/0&&this.mediaIndex===this.playlists.media().segments.length&&this.mediaSource.endOfStream(),2===this.tech_.buffered().length&&c.playlist===this.playlists.media())for(a=this.tech_.buffered().length;a--;)if(this.tech_.currentTime()=d&&a.removeCue(a.cues[e])})},b.Hls.prototype.addCuesForMetadata_=function(c){var d,e,f,g,h,i,j,k,l;for(j=this.playlists.expired_,j+=b.Hls.Playlist.duration(c.playlist,c.playlist.mediaSequence,c.playlist.mediaSequence+c.mediaIndex),i=c.playlist.segments[c.mediaIndex],h=Math.min(isFinite(i.minVideoPts)?i.minVideoPts:1/0,isFinite(i.minAudioPts)?i.minAudioPts:1/0);c.pendingMetadata.length;){for(g=c.pendingMetadata[0].metadata,k=c.pendingMetadata[0].textTrack,d=0;d=e)return a=b.createTimeRanges(f.start(c),f.end(c)),a.indexOf=c,a;return a=b.createTimeRanges(),a.indexOf=-1,a},b.Hls.prototype.fillBuffer=function(a){var c,d,e=this.tech_,f=e.currentTime(),g=this.findCurrentBuffered_(),h=0;"segments"===this.loadingState_&&e.currentSrc()&&this.playlists&&(this.segmentXhr_||"HAVE_NOTHING"!==this.playlists.state&&this.playlists.media()&&this.playlists.media().segments&&"SWITCHING_MEDIA"!==this.playlists.state&&(c=this.playlists.media().segments[this.mediaIndex],c&&(g&&g.length&&(h=Math.max(0,g.end(0)-f)),"number"!=typeof a&&h>=b.Hls.GOAL_BUFFER_LENGTH||(d=this.playlistUriToUrl(c.uri),this.loadSegment(d,a)))))},b.Hls.prototype.playlistUriToUrl=function(a){var b;return b=this.playlists.media().uri===this.source_.src?g(this.source_.src,a):g(g(this.source_.src,this.playlists.media().uri||""),a)},b.Hls.prototype.setBandwidth=function(a){this.segmentXhrTime=a.roundTripTime,this.bandwidth=a.bandwidth,this.bytesReceived+=a.bytesReceived||0,this.tech_.trigger("bandwidthupdate")},b.Hls.prototype.loadSegment=function(a,c){var d=this;this.segmentXhr_=b.Hls.xhr({uri:a,responseType:"arraybuffer",withCredentials:this.source_.withCredentials},function(b,e){var f;return d.segmentXhr_=null,e.timedout?(d.bandwidth=1,d.playlists.media(d.selectPlaylist())):!e.aborted&&b?(d.error={status:e.status,message:"HLS segment request error at URL: "+a,code:e.status>=500?4:2},void d.mediaIndex++):void(e.response&&(d.setBandwidth(e),f={mediaIndex:d.mediaIndex,playlist:d.playlists.media(),offset:c,bytes:null,encryptedBytes:null,decrypter:null,pendingMetadata:[]},f.playlist.segments[f.mediaIndex].key?f.encryptedBytes=new Uint8Array(e.response):f.bytes=new Uint8Array(e.response),d.segmentBuffer_.push(f),d.tech_.trigger("progress"),d.drainBuffer(),d.mediaIndex++,d.playlists.media(d.selectPlaylist())))})},b.Hls.prototype.drainBuffer=function(a){var c,d,e,g,h,i,j,k,l=0,m=0!==this.tech_.buffered().length,n=this.findCurrentBuffered_(),o=!(n&&n.length),p=this.segmentBuffer_;if(p.length&&this.sourceBuffer&&!this.sourceBuffer.updating){if(c=p[0],d=c.mediaIndex,e=c.playlist,g=c.offset,h=c.bytes,i=e.segments[d],i.key&&!h)return f(i.key)?p.shift():i.key.bytes?c.decrypter?void 0:(k=i.key.iv||new Uint32Array([0,0,0,d+e.mediaSequence]),j=new b.Hls.Decrypter(c.encryptedBytes,i.key.bytes,k,function(a,b){c.bytes=b}),void(c.decrypter=j)):this.fetchKeys_();if(a=a||{},this.addCuesForMetadata_(c),this.tech_.seeking()&&o){if(m)return void this.sourceBuffer.remove(0,1/0);c.playlist.discontinuityStarts.length&&(c.mediaIndex>0&&(l=b.Hls.Playlist.duration(c.playlist,0,c.mediaIndex)),this.sourceBuffer.timestampOffset=l)}else i.discontinuity&&(this.sourceBuffer.timestampOffset=n.end(0));this.sourceBuffer.appendBuffer(h),this.pendingSegment_=p.shift()}},b.Hls.prototype.fetchKeys_=function(){var a,c,d,g,h,i,j,k;if(!e&&this.segmentBuffer_.length)for(d=this,g=this.player(),h=this.options_,k=function(a){return function(b,c){return e=null,b||!c.response||16!==c.response.byteLength?(a.retries=a.retries||0,a.retries++,void(c.aborted||d.fetchKeys_())):(j=new DataView(c.response),a.bytes=new Uint32Array([j.getUint32(0),j.getUint32(4),j.getUint32(8),j.getUint32(12)]),void d.checkBuffer_())}},a=0;ad.segments.length||0>e?b.Hls.getMediaIndexForLive_(d)+1:e):0},b.Hls.getMediaIndexByTime=function(){return b.log.warn("getMediaIndexByTime is deprecated. Use PlaylistLoader.getMediaIndexForTime_ instead."),0},b.Hls.comparePlaylistBandwidth=function(b,c){var d,e;return b.attributes&&b.attributes.BANDWIDTH&&(d=b.attributes.BANDWIDTH),d=d||a.Number.MAX_VALUE,c.attributes&&c.attributes.BANDWIDTH&&(e=c.attributes.BANDWIDTH),e=e||a.Number.MAX_VALUE,d-e},b.Hls.comparePlaylistResolution=function(b,c){var d,e;return b.attributes&&b.attributes.RESOLUTION&&b.attributes.RESOLUTION.width&&(d=b.attributes.RESOLUTION.width),d=d||a.Number.MAX_VALUE,c.attributes&&c.attributes.RESOLUTION&&c.attributes.RESOLUTION.width&&(e=c.attributes.RESOLUTION.width),e=e||a.Number.MAX_VALUE,d===e&&b.attributes.BANDWIDTH&&c.attributes.BANDWIDTH?b.attributes.BANDWIDTH-c.attributes.BANDWIDTH:d-e},g=b.Hls.resolveUrl=function(a,b){var d,e,f=c.querySelector("base"),g=c.querySelector("head"),h=c.createElement("a"),i=f;return f?d=f.href:i=g.appendChild(c.createElement("base")),i.href=a,h.href=b,e=h.href,f?f.href=d:g.removeChild(i),e}}(window,window.videojs,document),function(a){"use strict";a.Hls.xhr=function(b,c){b=a.mergeOptions({timeout:45e3},b);var d=a.xhr(b,function(a,b){!a&&d.response&&(d.responseTime=(new Date).getTime(),d.roundTripTime=d.responseTime-d.requestTime,d.bytesReceived=d.response.byteLength||d.response.length,d.bandwidth||(d.bandwidth=Math.floor(d.bytesReceived/d.roundTripTime*8*1e3))),d.timedout=a||d.timedout?d.timedout||"ETIMEDOUT"===a.code:!1,a||200===b.statusCode||0===b.statusCode||(a=new Error("XHR Failed with a response of: "+(d&&(d.response||d.responseText)))),c(a,d)});return d.requestTime=(new Date).getTime(),d}}(window.videojs),function(a){var b=function(){this.init=function(){var a={};this.on=function(b,c){a[b]||(a[b]=[]),a[b].push(c)},this.off=function(b,c){var d;return a[b]?(d=a[b].indexOf(c),a[b].splice(d,1),d>-1):!1},this.trigger=function(b){var c,d,e,f;if(c=a[b])if(2===arguments.length)for(e=c.length,d=0;e>d;++d)c[d].call(this,arguments[1]);else for(f=Array.prototype.slice.call(arguments,1),e=c.length,d=0;e>d;++d)c[d].apply(this,f)},this.dispose=function(){a={}}}};b.prototype.pipe=function(a){this.on("data",function(b){a.push(b)})},a.Hls.Stream=b}(window.videojs),function(a,b,c,d,e){var f,g,h,i=function(){},j=function(){var a="[^=]*",b='"[^"]*"|[^,]*',c="(?:"+a+")=(?:"+b+")";return new RegExp("(?:^|,)("+c+")")}(),k=function(a){for(var b,c=a.split(j),d=c.length,e={};d--;)""!==c[d]&&(b=/([^=]*)=(.*)/.exec(c[d]).slice(1),b[0]=b[0].replace(/^\s+|\s+$/g,""),b[1]=b[1].replace(/^\s+|\s+$/g,""),b[1]=b[1].replace(/^['"](.*)['"]$/g,"$1"),e[b[0]]=b[1]);return e},l=a.Hls.Stream;f=function(){var a="";f.prototype.init.call(this),this.push=function(b){var c;for(a+=b,c=a.indexOf("\n");c>-1;c=a.indexOf("\n"))this.trigger("data",a.substring(0,c)),a=a.substring(c+1)}},f.prototype=new l,g=function(){g.prototype.init.call(this)},g.prototype=new l,g.prototype.push=function(a){var c,d;return a=a.replace(/^\s+|\s+$/g,""),0!==a.length?"#"!==a[0]?void this.trigger("data",{type:"uri",uri:a}):0!==a.indexOf("#EXT")?void this.trigger("data",{type:"comment",text:a.slice(1)}):(a=a.replace("\r",""),(c=/^#EXTM3U/.exec(a))?void this.trigger("data",{type:"tag",tagType:"m3u"}):(c=/^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(a))?(d={type:"tag",tagType:"inf"},c[1]&&(d.duration=parseFloat(c[1])),c[2]&&(d.title=c[2]),void this.trigger("data",d)):(c=/^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"targetduration"},c[1]&&(d.duration=b(c[1],10)),void this.trigger("data",d)):(c=/^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"totalduration"},c[1]&&(d.duration=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-VERSION:?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"version"},c[1]&&(d.version=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"media-sequence"},c[1]&&(d.number=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"discontinuity-sequence"},c[1]&&(d.number=b(c[1],10)),void this.trigger("data",d)):(c=/^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(a))?(d={type:"tag",tagType:"playlist-type"},c[1]&&(d.playlistType=c[1]),void this.trigger("data",d)):(c=/^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(a))?(d={type:"tag",tagType:"byterange"},c[1]&&(d.length=b(c[1],10)),c[2]&&(d.offset=b(c[2],10)),void this.trigger("data",d)):(c=/^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(a))?(d={type:"tag",tagType:"allow-cache"},c[1]&&(d.allowed=!/NO/.test(c[1])),void this.trigger("data",d)):(c=/^#EXT-X-STREAM-INF:?(.*)$/.exec(a))?(d={type:"tag",tagType:"stream-inf"},c[1]&&(d.attributes=k(c[1]),d.attributes.RESOLUTION&&!function(){var a=d.attributes.RESOLUTION.split("x"),c={};a[0]&&(c.width=b(a[0],10)),a[1]&&(c.height=b(a[1],10)),d.attributes.RESOLUTION=c}(),d.attributes.BANDWIDTH&&(d.attributes.BANDWIDTH=b(d.attributes.BANDWIDTH,10)),d.attributes["PROGRAM-ID"]&&(d.attributes["PROGRAM-ID"]=b(d.attributes["PROGRAM-ID"],10))),void this.trigger("data",d)):(c=/^#EXT-X-ENDLIST/.exec(a))?void this.trigger("data",{type:"tag",tagType:"endlist"}):(c=/^#EXT-X-DISCONTINUITY/.exec(a))?void this.trigger("data",{type:"tag",tagType:"discontinuity"}):(c=/^#EXT-X-KEY:?(.*)$/.exec(a))?(d={type:"tag",tagType:"key"},c[1]&&(d.attributes=k(c[1]),d.attributes.IV&&("0x"===d.attributes.IV.substring(0,2)&&(d.attributes.IV=d.attributes.IV.substring(2)),d.attributes.IV=d.attributes.IV.match(/.{8}/g),d.attributes.IV[0]=b(d.attributes.IV[0],16),d.attributes.IV[1]=b(d.attributes.IV[1],16),d.attributes.IV[2]=b(d.attributes.IV[2],16),d.attributes.IV[3]=b(d.attributes.IV[3],16),d.attributes.IV=new Uint32Array(d.attributes.IV))),void this.trigger("data",d)):void this.trigger("data",{type:"tag",data:a.slice(4,a.length)})):void 0},h=function(){var a,b=this,j=[],k={};h.prototype.init.call(this),this.lineStream=new f,this.parseStream=new g,this.lineStream.pipe(this.parseStream),this.manifest={allowCache:!0,discontinuityStarts:[]},this.parseStream.on("data",function(f){({tag:function(){(({"allow-cache":function(){this.manifest.allowCache=f.allowed,"allowed"in f||(this.trigger("info",{message:"defaulting allowCache to YES"}),this.manifest.allowCache=!0)},byterange:function(){var a={};"length"in f&&(k.byterange=a,a.length=f.length,"offset"in f||(this.trigger("info",{message:"defaulting offset to zero"}),f.offset=0)),"offset"in f&&(k.byterange=a,a.offset=f.offset)},endlist:function(){this.manifest.endList=!0},inf:function(){"mediaSequence"in this.manifest||(this.manifest.mediaSequence=0,this.trigger("info",{message:"defaulting media sequence to zero"})),"discontinuitySequence"in this.manifest||(this.manifest.discontinuitySequence=0,this.trigger("info",{message:"defaulting discontinuity sequence to zero"})),f.duration>=0&&(k.duration=f.duration),this.manifest.segments=j},key:function(){return f.attributes?"NONE"===f.attributes.METHOD?void(a=null):f.attributes.URI?(f.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),a={method:f.attributes.METHOD||"AES-128",uri:f.attributes.URI},void(f.attributes.IV!==e&&(a.iv=f.attributes.IV))):void this.trigger("warn",{message:"ignoring key declaration without URI"}):void this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function(){return c(f.number)?void(this.manifest.mediaSequence=f.number):void this.trigger("warn",{message:"ignoring invalid media sequence: "+f.number})},"discontinuity-sequence":function(){return c(f.number)?void(this.manifest.discontinuitySequence=f.number):void this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+f.number})},"playlist-type":function(){return/VOD|EVENT/.test(f.playlistType)?void(this.manifest.playlistType=f.playlistType):void this.trigger("warn",{message:"ignoring unknown playlist type: "+f.playlist})},"stream-inf":function(){return this.manifest.playlists=j,f.attributes?(k.attributes||(k.attributes={}),void(k.attributes=d(k.attributes,f.attributes))):void this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},discontinuity:function(){k.discontinuity=!0,this.manifest.discontinuityStarts.push(j.length)},targetduration:function(){return!c(f.duration)||f.duration<0?void this.trigger("warn",{message:"ignoring invalid target duration: "+f.duration}):void(this.manifest.targetDuration=f.duration)},totalduration:function(){return!c(f.duration)||f.duration<0?void this.trigger("warn",{ message:"ignoring invalid total duration: "+f.duration}):void(this.manifest.totalDuration=f.duration)}})[f.tagType]||i).call(b)},uri:function(){k.uri=f.uri,j.push(k),!this.manifest.targetDuration||"duration"in k||(this.trigger("warn",{message:"defaulting segment duration to the target duration"}),k.duration=this.manifest.targetDuration),a&&(k.key=a),k={}},comment:function(){}})[f.type].call(b)})},h.prototype=new l,h.prototype.push=function(a){this.lineStream.push(a)},h.prototype.end=function(){this.lineStream.push("\n")},window.videojs.m3u8={LineStream:f,ParseStream:g,Parser:h}}(window.videojs,window.parseInt,window.isFinite,window.videojs.mergeOptions),function(a,b){"use strict";var c,d,e,f,g,h,i,j,k=10;g=function(a,b){return a=isFinite(a)?a:1/0,b=isFinite(b)?b:1/0,Math.min(a,b)},h=function(a,b){return a=isFinite(a)?a:-(1/0),b=isFinite(b)?b:-(1/0),Math.max(a,b)},d=function(a,b){return a-b},c=function(a,b,c,e){var f,g=[],h=(a.discontinuityStarts||[]).concat(c),j=0;if(b>=c)return 0;for(h.sort(d),f=0;fb){g.push({start:b,end:h[f]}),f++;break}for(;f=c){g.push({start:h[f-1],end:c});break}g.push({start:g[g.length-1].end,end:h[f]})}for(f=0;f=e&&(d=a.segments[f],void 0===d.maxVideoPts&&void 0===d.maxAudioPts);f--)i+=d.duration||j;return f>=e&&(i+=.001*(h(a.segments[f].maxVideoPts,a.segments[f].maxAudioPts)-g(a.segments[e].minVideoPts,a.segments[e].minAudioPts))),i},f=function(a,b,d,e){var f,g,i=0;return void 0===b&&(b=a.mediaSequence||0),void 0===d&&(d=b+(a.segments||[]).length),f=a.targetDuration||k,g=h(a.mediaSequence-b,0),i+=g*f,i+=c(a,b+g-a.mediaSequence,d-a.mediaSequence,e)},e=function(b,c,d,e){if(!b)return 0;if(void 0===e&&(e=!0),void 0===c&&void 0===d){if(b.totalDuration)return b.totalDuration;if(!b.endList)return a.Infinity}return f(b,c,d,e)},j=function(a){var c,d,h,i,j,l,m;if(!a.segments)return b.createTimeRange();if(a.endList)return b.createTimeRange(0,e(a));if(c=0,d=f(a,a.mediaSequence,a.mediaSequence+a.segments.length),i=a.targetDuration||k,!a.endList)for(h=3*i,m=a.segments.length-1;m>=0&&h>0;m--)j=a.segments[m],l=g(e(a,a.mediaSequence+m,a.mediaSequence+m+1),h),h-=l,d-=l;return b.createTimeRange(c,d)},b.Hls.Playlist={duration:e,seekable:j}}(window,window.videojs),function(a,b){"use strict";var c=b.Hls.resolveUrl,d=b.Hls.xhr,e=b.Hls.Playlist,f=b.mergeOptions,g=function(a,b){var c,d,e=!1,g=f(a,{});for(c=a.playlists.length;c--;)if(d=g.playlists[c],d.uri===b.uri){if(d.segments&&b.segments&&d.segments.length===b.segments.length&&d.mediaSequence===b.mediaSequence)continue;g.playlists[c]=f(d,b),g.playlists[b.uri]=g.playlists[c],d.segments&&(g.playlists[c].segments=h(d.segments,b.segments,b.mediaSequence-d.mediaSequence)),e=!0}return e?g:null},h=function(a,b,c){var d,e,g=b.slice();for(c=c||0,d=Math.min(a.length,b.length+c),e=c;d>e;e++)g[e-c]=f(a[e],g[e-c]);return g},i=function(e,f){var h,j,k,l,m=this;if(i.prototype.init.call(this),!e)throw new Error("A non-empty playlist URL is required");l=function(c,d,e){var f,h,i;return m.setBandwidth(k||d),k=null,c?(m.error={status:d.status,message:"HLS playlist request error at URL: "+e,responseText:d.responseText,code:d.status>=500?4:2},m.trigger("error")):(m.state="HAVE_METADATA",f=new b.m3u8.Parser,f.push(d.responseText),f.end(),f.manifest.uri=e,i=g(m.master,f.manifest),h=1e3*(f.manifest.targetDuration||10),i?(m.master=i,m.updateMediaPlaylist_(f.manifest)):h/=2,m.media().endList||(a.clearTimeout(j),j=a.setTimeout(function(){m.trigger("mediaupdatetimeout")},h)),void m.trigger("loadedplaylist"))},m.state="HAVE_NOTHING",m.expired_=0,h=this.dispose,m.dispose=function(){k&&(k.onreadystatechange=null,k.abort(),k=null),a.clearTimeout(j),h.call(this)},m.media=function(a){var b=!1;if(!a)return m.media_;if("HAVE_NOTHING"===m.state||"HAVE_MASTER"===m.state)throw new Error("Cannot switch media playlist from "+m.state);if("string"==typeof a){if(!m.master.playlists[a])throw new Error("Unknown playlist URI: "+a);a=m.master.playlists[a]}if(b=a.uri!==m.media_.uri,m.master.playlists[a.uri].endList)return k&&(k.onreadystatechange=null,k.abort(),k=null),m.state="HAVE_METADATA",m.media_=a,void(b&&m.trigger("mediachange"));if(b){if(m.state="SWITCHING_MEDIA",k){if(c(m.master.uri,a.uri)===k.url)return;k.onreadystatechange=null,k.abort(),k=null}k=d({uri:c(m.master.uri,a.uri),withCredentials:f},function(b,c){l(b,c,a.uri),m.trigger("mediachange")})}},m.setBandwidth=function(a){m.bandwidth=a.bandwidth},m.on("mediaupdatetimeout",function(){"HAVE_METADATA"===m.state&&(m.state="HAVE_CURRENT_METADATA",k=d({uri:c(m.master.uri,m.media().uri),withCredentials:f},function(a,b){l(a,b,m.media().uri)}))}),k=d({uri:e,withCredentials:f},function(g,h){var i,j;if(k=null,g)return m.error={status:h.status,message:"HLS playlist request error at URL: "+e,responseText:h.responseText,code:2},m.trigger("error");if(i=new b.m3u8.Parser,i.push(h.responseText),i.end(),m.state="HAVE_MASTER",i.manifest.uri=e,i.manifest.playlists){for(m.master=i.manifest,j=m.master.playlists.length;j--;)m.master.playlists[m.master.playlists[j].uri]=m.master.playlists[j];return k=d({uri:c(e,i.manifest.playlists[0].uri),withCredentials:f},function(a,b){l(a,b,i.manifest.playlists[0].uri),a||m.trigger("loadedmetadata")}),m.trigger("loadedplaylist")}return m.master={uri:a.location.href,playlists:[{uri:e}]},m.master.playlists[e]=m.master.playlists[0],l(null,h,e),m.trigger("loadedmetadata")})};i.prototype=new b.Hls.Stream,i.prototype.updateMediaPlaylist_=function(a){var b;this.media_&&(b=a.mediaSequence-this.media_.mediaSequence,this.expired_+=e.duration(this.media_,this.media_.mediaSequence,a.mediaSequence)),this.media_=this.master.playlists[a.uri]},i.prototype.updateTimelineOffset=function(a,b){var c=e.duration(this.media_,this.media_.mediaSequence,this.media_.mediaSequence+a);this.expired_=b-c},i.prototype.getMediaIndexForTime_=function(a){var b;if(!this.media_)return 0;if(a-=this.expired_,0>a)return 0;for(b=0;b=a)return b;return this.media_.segments.length-1},b.Hls.PlaylistLoader=i}(window,window.videojs),!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),(b.pkcs7||(b.pkcs7={})).unpad=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>8|a>>>24},d=function(a){this._precompute();var b,c,d,e,f,g=this._tables[0][4],h=this._tables[1],i=a.length,j=1;if(4!==i&&6!==i&&8!==i)throw new Error("Invalid aes key size");for(e=a.slice(0),f=[],this._key=[e,f],b=i;4*i+28>b;b++)d=e[b-1],(b%i===0||8===i&&b%i===4)&&(d=g[d>>>24]<<24^g[d>>16&255]<<16^g[d>>8&255]<<8^g[255&d],b%i===0&&(d=d<<8^d>>>24^j<<24,j=j<<1^283*(j>>7))),e[b]=e[b-i]^d;for(c=0;b;c++,b--)d=e[3&c?b:b-4],f[c]=4>=b||4>c?d:h[0][g[d>>>24]]^h[1][g[d>>16&255]]^h[2][g[d>>8&255]]^h[3][g[255&d]]},d.prototype={_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var a,b,c,d,e,f,g,h,i,j=this._tables[0],k=this._tables[1],l=j[4],m=k[4],n=[],o=[];for(a=0;256>a;a++)o[(n[a]=a<<1^283*(a>>7))^a]=a;for(b=c=0;!l[b];b^=d||1,c=o[c]||1)for(g=c^c<<1^c<<2^c<<3^c<<4,g=g>>8^255&g^99,l[b]=g,m[g]=b,f=n[e=n[d=n[b]]],i=16843009*f^65537*e^257*d^16843008*b,h=257*n[g]^16843008*g,a=0;4>a;a++)j[a][b]=h=h<<24^h>>>8,k[a][g]=i=i<<24^i>>>8;for(a=0;5>a;a++)j[a]=j[a].slice(0),k[a]=k[a].slice(0)},decrypt:function(a,b,c,d,e,f){var g,h,i,j,k=this._key[1],l=a^k[0],m=d^k[1],n=c^k[2],o=b^k[3],p=k.length/4-2,q=4,r=this._tables[1],s=r[0],t=r[1],u=r[2],v=r[3],w=r[4];for(j=0;p>j;j++)g=s[l>>>24]^t[m>>16&255]^u[n>>8&255]^v[255&o]^k[q],h=s[m>>>24]^t[n>>16&255]^u[o>>8&255]^v[255&l]^k[q+1],i=s[n>>>24]^t[o>>16&255]^u[l>>8&255]^v[255&m]^k[q+2],o=s[o>>>24]^t[l>>16&255]^u[m>>8&255]^v[255&n]^k[q+3],q+=4,l=g,m=h,n=i;for(j=0;4>j;j++)e[(3&-j)+f]=w[l>>>24]<<24^w[m>>16&255]<<16^w[n>>8&255]<<8^w[255&o]^k[q++],g=l,l=m,m=n,n=o,o=g}},g=function(a,b,c){var e,f,g,i,j,k,l,m,n,o=new Int32Array(a.buffer,a.byteOffset,a.byteLength>>2),p=new d(Array.prototype.slice.call(b)),q=new Uint8Array(a.byteLength),r=new Int32Array(q.buffer);for(e=c[0],f=c[1],g=c[2],i=c[3],n=0;n logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/dist/video.osmf.js b/dist/videojs.osmf.js similarity index 99% rename from dist/video.osmf.js rename to dist/videojs.osmf.js index ac86bd3215..3ac8ffe046 100644 --- a/dist/video.osmf.js +++ b/dist/videojs.osmf.js @@ -19979,7 +19979,7 @@ HolaSkin.prototype.dispose = function(){ var defaults = { className: 'vjs5-hola-skin', css: '/css/videojs-hola-skin.css', - ver: 'ver=0.0.1' + ver: 'ver=0.0.2' }; // VideoJS plugin register diff --git a/dist/video.osmf.min.js b/dist/videojs.osmf.min.js similarity index 99% rename from dist/video.osmf.min.js rename to dist/videojs.osmf.min.js index 76541b633c..b75bbd8ee7 100644 --- a/dist/video.osmf.min.js +++ b/dist/videojs.osmf.min.js @@ -19,5 +19,5 @@ return g(b,a),b.prototype.manualProgressOn=function(){this.on("durationchange",t a.className=c.join(" ")}}function p(a,b){Object.getOwnPropertyNames(b).forEach(function(c){var d=b[c];null===d||"undefined"==typeof d||d===!1?a.removeAttribute(c):a.setAttribute(c,d===!0?"":d)})}function q(a){var b,c,d,e,f;if(b={},c=",autoplay,controls,loop,muted,default,",a&&a.attributes&&a.attributes.length>0){d=a.attributes;for(var g=d.length-1;g>=0;g--)e=d[g].name,f=d[g].value,("boolean"==typeof a[e]||-1!==c.indexOf(","+e+","))&&(f=null!==f?!0:!1),b[e]=f}return b}function r(){x["default"].body.focus(),x["default"].onselectstart=function(){return!1}}function s(){x["default"].onselectstart=function(){return!0}}function t(a){var b=void 0;if(a.getBoundingClientRect&&a.parentNode&&(b=a.getBoundingClientRect()),!b)return{left:0,top:0};var c=x["default"].documentElement,d=x["default"].body,e=c.clientLeft||d.clientLeft||0,f=z["default"].pageXOffset||d.scrollLeft,g=b.left+f-e,h=c.clientTop||d.clientTop||0,i=z["default"].pageYOffset||d.scrollTop,j=b.top+i-h;return{left:Math.round(g),top:Math.round(j)}}function u(a,b){var c={},d=t(a),e=a.offsetWidth,f=a.offsetHeight,g=d.top,h=d.left,i=b.pageY,j=b.pageX;return b.changedTouches&&(j=b.changedTouches[0].pageX,i=b.changedTouches[0].pageY),c.y=Math.max(0,Math.min(1,(g-i+f)/f)),c.x=Math.max(0,Math.min(1,(j-h)/e)),c}c.__esModule=!0,c.getEl=g,c.createEl=h,c.insertElFirst=i,c.getElData=j,c.hasElData=k,c.removeElData=l,c.hasElClass=m,c.addElClass=n,c.removeElClass=o,c.setElAttributes=p,c.getElAttributes=q,c.blockTextSelection=r,c.unblockTextSelection=s,c.findElPosition=t,c.getPointerPosition=u;var v=f(["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."],["Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set "," to ","."]),w=a("global/document"),x=e(w),y=a("global/window"),z=e(y),A=a("./guid.js"),B=d(A),C=a("./log.js"),D=e(C),E=a("tsml"),F=e(E),G={},H="vdata"+(new Date).getTime()},{"./guid.js":127,"./log.js":128,"global/document":1,"global/window":2,tsml:54}],124:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a,b,c){if(Array.isArray(b))return l(f,a,b,c);var d=n.getElData(a);d.handlers||(d.handlers={}),d.handlers[b]||(d.handlers[b]=[]),c.guid||(c.guid=p.newGUID()),d.handlers[b].push(c),d.dispatcher||(d.disabled=!1,d.dispatcher=function(b,c){if(!d.disabled){b=j(b);var e=d.handlers[b.type];if(e)for(var f=e.slice(0),g=0,h=f.length;h>g&&!b.isImmediatePropagationStopped();g++)f[g].call(a,b,c)}}),1===d.handlers[b].length&&(a.addEventListener?a.addEventListener(b,d.dispatcher,!1):a.attachEvent&&a.attachEvent("on"+b,d.dispatcher))}function g(a,b,c){if(n.hasElData(a)){var d=n.getElData(a);if(d.handlers){if(Array.isArray(b))return l(g,a,b,c);var e=function(b){d.handlers[b]=[],k(a,b)};if(b){var f=d.handlers[b];if(f){if(!c)return void e(b);if(c.guid)for(var h=0;h0||g>0?e+":":"",d=((e||f>=10)&&10>d?"0"+d:d)+":",c=10>c?"0"+c:c,e+d+c}()}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],127:[function(a,b,c){"use strict";function d(){return e++}c.__esModule=!0,c.newGUID=d;var e=1},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){var c=Array.prototype.slice.call(b),d=function(){},e=g["default"].console||{log:d,warn:d,error:d};a?c.unshift(a.toUpperCase()+":"):a="log",h.history.push(c),c.unshift("VIDEOJS:"),e[a].apply?e[a].apply(e,c):e[a](c.join(" "))}c.__esModule=!0;var f=a("global/window"),g=d(f),h=function(){e(null,arguments)};h.history=[],h.error=function(){e("error",arguments)},h.warn=function(){e("warn",arguments)},c["default"]=h,b.exports=c["default"]},{"global/window":2}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return!!a&&"object"==typeof a&&"[object Object]"===a.toString()&&a.constructor===Object}function f(){var a=Array.prototype.slice.call(arguments);return a.unshift({}),a.push(i),h["default"].apply(null,a),a[0]}c.__esModule=!0,c["default"]=f;var g=a("lodash-compat/object/merge"),h=d(g),i=function(a,b){return e(b)?e(a)?void 0:f(b):b};b.exports=c["default"]},{"lodash-compat/object/merge":40}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=function(a){var b=f["default"].createElement("style");return b.className=a,b};c.createStyleElement=g;var h=function(a,b){a.styleSheet?a.styleSheet.cssText=b:a.textContent=b};c.setTextContent=h},{"global/document":1}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){return Array.isArray(a)?f(a):void 0===a||void 0===b?f():f([[a,b]])}function f(a){return void 0===a||0===a.length?{length:0,start:function(){throw new Error("This TimeRanges object is empty")},end:function(){throw new Error("This TimeRanges object is empty")}}:{length:a.length,start:g.bind(null,"start",0,a),end:g.bind(null,"end",1,a)}}function g(a,b,c,d){return void 0===d&&(j["default"].warn("DEPRECATED: Function '"+a+"' on 'TimeRanges' called without an index argument."),d=0),h(a,d,c.length-1),c[d][b]}function h(a,b,c){if(0>b||b>c)throw new Error("Failed to execute '"+a+"' on 'TimeRanges': The index provided ("+b+") is greater than or equal to the maximum bound ("+c+").")}c.__esModule=!0,c.createTimeRanges=e;var i=a("./log.js"),j=d(i);c.createTimeRange=e},{"./log.js":128}],132:[function(a,b,c){"use strict";function d(a){return a.charAt(0).toUpperCase()+a.slice(1)}c.__esModule=!0,c["default"]=d,b.exports=c["default"]},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}c.__esModule=!0;var e=a("global/document"),f=d(e),g=a("global/window"),h=d(g),i=function(a){var b=["protocol","hostname","port","pathname","search","hash","host"],c=f["default"].createElement("a");c.href=a;var d=""===c.host&&"file:"!==c.protocol,e=void 0;d&&(e=f["default"].createElement("div"),e.innerHTML='',c=e.firstChild,e.setAttribute("style","display:none; position:absolute;"),f["default"].body.appendChild(e));for(var g={},h=0;hx',a=b.firstChild.href}return a};c.getAbsoluteURL=j;var k=function(a){if("string"==typeof a){var b=/^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i,c=b.exec(a);if(c)return c.pop().toLowerCase()}return""};c.getFileExtension=k;var l=function(a){var b=i(a),c=h["default"].location,d=":"===b.protocol?c.protocol:b.protocol,e=d+b.host!==c.protocol+c.host;return e};c.isCrossOrigin=l},{"global/document":1,"global/window":2}],134:[function(b,c,d){"use strict";function e(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function f(a){return a&&a.__esModule?a:{"default":a}}d.__esModule=!0;{var g=b("global/document"),h=f(g),i=b("./setup"),j=e(i),k=b("./utils/stylesheet.js"),l=e(k),m=b("./component"),n=f(m),o=b("./event-target"),p=f(o),q=b("./utils/events.js"),r=e(q),s=b("./player"),t=f(s),u=b("./plugins.js"),v=f(u),w=b("../../src/js/utils/merge-options.js"),x=f(w),y=b("./utils/fn.js"),z=e(y),A=b("./tracks/text-track.js"),B=f(A),C=b("object.assign"),D=(f(C),b("./utils/time-ranges.js")),E=b("./utils/format-time.js"),F=f(E),G=b("./utils/log.js"),H=f(G),I=b("./utils/dom.js"),J=e(I),K=b("./utils/browser.js"),L=e(K),M=b("./utils/url.js"),N=e(M),O=b("./extend.js"),P=f(O),Q=b("lodash-compat/object/merge"),R=f(Q),S=b("./utils/create-deprecation-proxy.js"),T=f(S),U=b("xhr"),V=f(U),W=b("./tech/html5.js"),X=(f(W),b("./tech/flash.js"));f(X)}"undefined"==typeof HTMLVideoElement&&(h["default"].createElement("video"),h["default"].createElement("audio"),h["default"].createElement("track"));var Y=function _(a,b,c){var d;if("string"==typeof a){if(0===a.indexOf("#")&&(a=a.slice(1)),_.getPlayers()[a])return b&&H["default"].warn('Player "'+a+'" is already initialised. Options will not be applied.'),c&&_.getPlayers()[a].ready(c),_.getPlayers()[a];d=J.getEl(a)}else d=a;if(!d||!d.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return d.player||new t["default"](d,b,c)},Z=h["default"].querySelector(".vjs-styles-defaults");if(!Z){Z=l.createStyleElement("vjs-styles-defaults");var $=h["default"].querySelector("head");$.insertBefore(Z,$.firstChild),l.setTextContent(Z,"\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ")}j.autoSetupTimeout(1,Y),Y.VERSION="5.0.2",Y.options=t["default"].prototype.options_,Y.getPlayers=function(){return t["default"].players},Y.players=T["default"](t["default"].players,{get:"Access to videojs.players is deprecated; use videojs.getPlayers instead",set:"Modification of videojs.players is deprecated"}),Y.getComponent=n["default"].getComponent,Y.registerComponent=n["default"].registerComponent,Y.browser=L,Y.TOUCH_ENABLED=L.TOUCH_ENABLED,Y.extend=P["default"],Y.mergeOptions=x["default"],Y.bind=z.bind,Y.plugin=v["default"],Y.addLanguage=function(a,b){var c;return a=(""+a).toLowerCase(),R["default"](Y.options.languages,(c={},c[a]=b,c))[a]},Y.log=H["default"],Y.createTimeRange=Y.createTimeRanges=D.createTimeRanges,Y.formatTime=F["default"],Y.parseUrl=N.parseUrl,Y.isCrossOrigin=N.isCrossOrigin,Y.EventTarget=p["default"],Y.on=r.on,Y.one=r.one,Y.off=r.off,Y.trigger=r.trigger,Y.xhr=V["default"],Y.TextTrack=B["default"],"function"==typeof a&&a.amd?a("videojs",[],function(){return Y}):"object"==typeof d&&"object"==typeof c&&(c.exports=Y),d["default"]=Y,c.exports=d["default"]},{"../../src/js/utils/merge-options.js":129,"./component":63,"./event-target":95,"./extend.js":96,"./player":103,"./plugins.js":104,"./setup":106,"./tech/flash.js":109,"./tech/html5.js":110,"./tracks/text-track.js":119,"./utils/browser.js":120,"./utils/create-deprecation-proxy.js":122,"./utils/dom.js":123,"./utils/events.js":124,"./utils/fn.js":125,"./utils/format-time.js":126,"./utils/log.js":128,"./utils/stylesheet.js":130,"./utils/time-ranges.js":131,"./utils/url.js":133,"global/document":1,"lodash-compat/object/merge":40,"object.assign":45,xhr:55}]},{},[134])(134)}),function(a){var b=a.vttjs={},c=b.VTTCue,d=b.VTTRegion,e=a.VTTCue,f=a.VTTRegion;b.shim=function(){b.VTTCue=c,b.VTTRegion=d},b.restore=function(){b.VTTCue=e,b.VTTRegion=f}}(this),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=h[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){if("string"!=typeof a)return!1;var b=i[a.toLowerCase()];return b?a.toLowerCase():!1}function e(a){for(var b=1;ba||a>100)throw new Error("Position must be between 0 and 100.");u=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",e({},j,{get:function(){return v},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");v=b,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",e({},j,{get:function(){return w},set:function(a){if(0>a||a>100)throw new Error("Size must be between 0 and 100.");w=a,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",e({},j,{get:function(){return x},set:function(a){var b=d(a);if(!b)throw new SyntaxError("An invalid or illegal string was specified.");x=b,this.hasBeenReset=!0}})),h.displayState=void 0,i?h:void 0}var g="auto",h={"":!0,lr:!0,rl:!0},i={start:!0,middle:!0,end:!0,left:!0,right:!0};f.prototype.getCueAsHTML=function(){return WebVTT.convertCueToDOMTree(window,this.text)},a.VTTCue=a.VTTCue||f,b.VTTCue=f}(this,this.vttjs||{}),function(a,b){function c(a){if("string"!=typeof a)return!1;var b=f[a.toLowerCase()];return b?a.toLowerCase():!1}function d(a){return"number"==typeof a&&a>=0&&100>=a}function e(){var a=100,b=3,e=0,f=100,g=0,h=100,i="";Object.defineProperties(this,{width:{enumerable:!0,get:function(){return a},set:function(b){if(!d(b))throw new Error("Width must be between 0 and 100.");a=b}},lines:{enumerable:!0,get:function(){return b},set:function(a){if("number"!=typeof a)throw new TypeError("Lines must be set to a number.");b=a}},regionAnchorY:{enumerable:!0,get:function(){return f},set:function(a){if(!d(a))throw new Error("RegionAnchorX must be between 0 and 100.");f=a}},regionAnchorX:{enumerable:!0,get:function(){return e},set:function(a){if(!d(a))throw new Error("RegionAnchorY must be between 0 and 100.");e=a}},viewportAnchorY:{enumerable:!0,get:function(){return h},set:function(a){if(!d(a))throw new Error("ViewportAnchorY must be between 0 and 100.");h=a}},viewportAnchorX:{enumerable:!0,get:function(){return g},set:function(a){if(!d(a))throw new Error("ViewportAnchorX must be between 0 and 100.");g=a}},scroll:{enumerable:!0,get:function(){return i},set:function(a){var b=c(a);if(b===!1)throw new SyntaxError("An invalid or illegal string was specified.");i=b}}})}var f={"":!0,up:!0};a.VTTRegion=a.VTTRegion||e,b.VTTRegion=e}(this,this.vttjs||{}),function(a){function b(a,b){this.name="ParsingError",this.code=a.code,this.message=b||a.message}function c(a){function b(a,b,c,d){return 3600*(0|a)+60*(0|b)+(0|c)+(0|d)/1e3}var c=a.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return c?c[3]?b(c[1],c[2],c[3].replace(":",""),c[4]):c[1]>59?b(c[1],c[2],0,c[4]):b(0,c[1],c[2],c[4]):null}function d(){this.values=o(null)}function e(a,b,c,d){var e=d?a.split(d):[a];for(var f in e)if("string"==typeof e[f]){var g=e[f].split(c);if(2===g.length){var h=g[0],i=g[1];b(h,i)}}}function f(a,f,g){function h(){var d=c(a);if(null===d)throw new b(b.Errors.BadTimeStamp,"Malformed timestamp: "+k);return a=a.replace(/^[^\sa-zA-Z-]+/,""),d}function i(a,b){var c=new d;e(a,function(a,b){switch(a){case"region":for(var d=g.length-1;d>=0;d--)if(g[d].id===b){c.set(a,g[d].region);break}break;case"vertical":c.alt(a,b,["rl","lr"]);break;case"line":var e=b.split(","),f=e[0];c.integer(a,f),c.percent(a,f)?c.set("snapToLines",!1):null,c.alt(a,f,["auto"]),2===e.length&&c.alt("lineAlign",e[1],["start","middle","end"]);break;case"position":e=b.split(","),c.percent(a,e[0]),2===e.length&&c.alt("positionAlign",e[1],["start","middle","end"]);break;case"size":c.percent(a,b);break;case"align":c.alt(a,b,["start","middle","end","left","right"])}},/:/,/\s/),b.region=c.get("region",null),b.vertical=c.get("vertical",""),b.line=c.get("line","auto"),b.lineAlign=c.get("lineAlign","start"),b.snapToLines=c.get("snapToLines",!0),b.size=c.get("size",100),b.align=c.get("align","middle"),b.position=c.get("position",{start:0,left:0,middle:50,end:100,right:100},b.align),b.positionAlign=c.get("positionAlign",{start:"start",left:"start",middle:"middle",end:"end",right:"end"},b.align)}function j(){a=a.replace(/^\s+/,"")}var k=a;if(j(),f.startTime=h(),j(),"-->"!==a.substr(0,3))throw new b(b.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '-->'): "+k);a=a.substr(3),j(),f.endTime=h(),j(),i(a,f)}function g(a,b){function d(){function a(a){return b=b.substr(a.length),a}if(!b)return null;var c=b.match(/^([^<]*)(<[^>]+>?)?/);return a(c[1]?c[1]:c[2])}function e(a){return p[a]}function f(a){for(;o=a.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);)a=a.replace(o[0],e);return a}function g(a,b){return!s[b.localName]||s[b.localName]===a.localName}function h(b,c){var d=q[b];if(!d)return null;var e=a.document.createElement(d);e.localName=d;var f=r[b];return f&&c&&(e[f]=c.trim()),e}for(var i,j=a.document.createElement("div"),k=j,l=[];null!==(i=d());)if("<"!==i[0])k.appendChild(a.document.createTextNode(f(i)));else{if("/"===i[1]){l.length&&l[l.length-1]===i.substr(2).replace(">","")&&(l.pop(),k=k.parentNode);continue}var m,n=c(i.substr(1,i.length-2));if(n){m=a.document.createProcessingInstruction("timestamp",n),k.appendChild(m);continue}var o=i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);if(!o)continue;if(m=h(o[1],o[3]),!m)continue;if(!g(k,m))continue;o[2]&&(m.className=o[2].substr(1).replace("."," ")),l.push(o[1]),k.appendChild(m),k=m}return j}function h(a){function b(a,b){for(var c=b.childNodes.length-1;c>=0;c--)a.push(b.childNodes[c])}function c(a){if(!a||!a.length)return null;var d=a.pop(),e=d.textContent||d.innerText;if(e){var f=e.match(/^.*(\n|\r)/);return f?(a.length=0,f[0]):e}return"ruby"===d.tagName?c(a):d.childNodes?(b(a,d),c(a)):void 0}var d,e=[],f="";if(!a||!a.childNodes)return"ltr";for(b(e,a);f=c(e);)for(var g=0;g=0&&a.line<=100))return a.line;if(!a.track||!a.track.textTrackList||!a.track.textTrackList.mediaElement)return-1;for(var b=a.track,c=b.textTrackList,d=0,e=0;ei&&(e=new l(a),g=i),a=new l(f)}return e||f}var f=new l(b),g=b.cue,h=i(g),j=[];if(g.snapToLines){var k;switch(g.vertical){case"":j=["+y","-y"],k="height";break;case"rl":j=["+x","-x"],k="width";break;case"lr":j=["-x","+x"],k="width"}var m=f.lineHeight,n=m*Math.round(h),o=c[k]+m,p=j[0];Math.abs(n)>o&&(n=0>n?-1:1,n*=Math.ceil(o/m)*m),0>h&&(n+=""===g.vertical?c.height:c.width,j=j.reverse()),f.move(p,n)}else{var q=f.lineHeight/c.height*100;switch(g.lineAlign){case"middle":h-=q/2;break;case"end":h-=q}switch(g.vertical){case"":b.applyStyles({top:b.formatStyle(h,"%")});break;case"rl":b.applyStyles({left:b.formatStyle(h,"%")});break;case"lr":b.applyStyles({right:b.formatStyle(h,"%")})}j=["+y","-x","+x","-y"],f=new l(b)}var r=e(f,j);b.move(r.toCSSCompatValues(c))}function n(){}var o=Object.create||function(){function a(){}return function(b){if(1!==arguments.length)throw new Error("Object.create shim only accepts one parameter.");return a.prototype=b,new a}}();b.prototype=o(Error.prototype),b.prototype.constructor=b,b.Errors={BadSignature:{code:0,message:"Malformed WebVTT signature."},BadTimeStamp:{code:1,message:"Malformed time stamp."}},d.prototype={set:function(a,b){this.get(a)||""===b||(this.values[a]=b)},get:function(a,b,c){return c?this.has(a)?this.values[a]:b[c]:this.has(a)?this.values[a]:b},has:function(a){return a in this.values},alt:function(a,b,c){for(var d=0;d=0&&100>=b)?(this.set(a,b),!0):!1}};var p={"&":"&","<":"<",">":">","‎":"‎","‏":"‏"," ":" "},q={c:"span",i:"i",b:"b",u:"u",ruby:"ruby",rt:"rt",v:"span",lang:"span"},r={v:"title",lang:"lang"},s={rt:"ruby"},t=[1470,1472,1475,1478,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1544,1547,1549,1563,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1645,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1765,1766,1774,1775,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2e3,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2142,2208,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,8207,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,64442,64443,64444,64445,64446,64447,64448,64449,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,67584,67585,67586,67587,67588,67589,67592,67594,67595,67596,67597,67598,67599,67600,67601,67602,67603,67604,67605,67606,67607,67608,67609,67610,67611,67612,67613,67614,67615,67616,67617,67618,67619,67620,67621,67622,67623,67624,67625,67626,67627,67628,67629,67630,67631,67632,67633,67634,67635,67636,67637,67639,67640,67644,67647,67648,67649,67650,67651,67652,67653,67654,67655,67656,67657,67658,67659,67660,67661,67662,67663,67664,67665,67666,67667,67668,67669,67671,67672,67673,67674,67675,67676,67677,67678,67679,67840,67841,67842,67843,67844,67845,67846,67847,67848,67849,67850,67851,67852,67853,67854,67855,67856,67857,67858,67859,67860,67861,67862,67863,67864,67865,67866,67867,67872,67873,67874,67875,67876,67877,67878,67879,67880,67881,67882,67883,67884,67885,67886,67887,67888,67889,67890,67891,67892,67893,67894,67895,67896,67897,67903,67968,67969,67970,67971,67972,67973,67974,67975,67976,67977,67978,67979,67980,67981,67982,67983,67984,67985,67986,67987,67988,67989,67990,67991,67992,67993,67994,67995,67996,67997,67998,67999,68e3,68001,68002,68003,68004,68005,68006,68007,68008,68009,68010,68011,68012,68013,68014,68015,68016,68017,68018,68019,68020,68021,68022,68023,68030,68031,68096,68112,68113,68114,68115,68117,68118,68119,68121,68122,68123,68124,68125,68126,68127,68128,68129,68130,68131,68132,68133,68134,68135,68136,68137,68138,68139,68140,68141,68142,68143,68144,68145,68146,68147,68160,68161,68162,68163,68164,68165,68166,68167,68176,68177,68178,68179,68180,68181,68182,68183,68184,68192,68193,68194,68195,68196,68197,68198,68199,68200,68201,68202,68203,68204,68205,68206,68207,68208,68209,68210,68211,68212,68213,68214,68215,68216,68217,68218,68219,68220,68221,68222,68223,68352,68353,68354,68355,68356,68357,68358,68359,68360,68361,68362,68363,68364,68365,68366,68367,68368,68369,68370,68371,68372,68373,68374,68375,68376,68377,68378,68379,68380,68381,68382,68383,68384,68385,68386,68387,68388,68389,68390,68391,68392,68393,68394,68395,68396,68397,68398,68399,68400,68401,68402,68403,68404,68405,68416,68417,68418,68419,68420,68421,68422,68423,68424,68425,68426,68427,68428,68429,68430,68431,68432,68433,68434,68435,68436,68437,68440,68441,68442,68443,68444,68445,68446,68447,68448,68449,68450,68451,68452,68453,68454,68455,68456,68457,68458,68459,68460,68461,68462,68463,68464,68465,68466,68472,68473,68474,68475,68476,68477,68478,68479,68608,68609,68610,68611,68612,68613,68614,68615,68616,68617,68618,68619,68620,68621,68622,68623,68624,68625,68626,68627,68628,68629,68630,68631,68632,68633,68634,68635,68636,68637,68638,68639,68640,68641,68642,68643,68644,68645,68646,68647,68648,68649,68650,68651,68652,68653,68654,68655,68656,68657,68658,68659,68660,68661,68662,68663,68664,68665,68666,68667,68668,68669,68670,68671,68672,68673,68674,68675,68676,68677,68678,68679,68680,126464,126465,126466,126467,126469,126470,126471,126472,126473,126474,126475,126476,126477,126478,126479,126480,126481,126482,126483,126484,126485,126486,126487,126488,126489,126490,126491,126492,126493,126494,126495,126497,126498,126500,126503,126505,126506,126507,126508,126509,126510,126511,126512,126513,126514,126516,126517,126518,126519,126521,126523,126530,126535,126537,126539,126541,126542,126543,126545,126546,126548,126551,126553,126555,126557,126559,126561,126562,126564,126567,126568,126569,126570,126572,126573,126574,126575,126576,126577,126578,126580,126581,126582,126583,126585,126586,126587,126588,126590,126592,126593,126594,126595,126596,126597,126598,126599,126600,126601,126603,126604,126605,126606,126607,126608,126609,126610,126611,126612,126613,126614,126615,126616,126617,126618,126619,126625,126626,126627,126629,126630,126631,126632,126633,126635,126636,126637,126638,126639,126640,126641,126642,126643,126644,126645,126646,126647,126648,126649,126650,126651,1114109]; -j.prototype.applyStyles=function(a,b){b=b||this.div;for(var c in a)a.hasOwnProperty(c)&&(b.style[c]=a[c])},j.prototype.formatStyle=function(a,b){return 0===a?0:a+b},k.prototype=o(j.prototype),k.prototype.constructor=k,l.prototype.move=function(a,b){switch(b=void 0!==b?b:this.lineHeight,a){case"+x":this.left+=b,this.right+=b;break;case"-x":this.left-=b,this.right-=b;break;case"+y":this.top+=b,this.bottom+=b;break;case"-y":this.top-=b,this.bottom-=b}},l.prototype.overlaps=function(a){return this.lefta.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.1"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e=10},e.onLoadedData=function(){var a=this;a.options_.autoplay?a.play():a.options_.preload&&(a.currentTime()&&a.currentTime(0),a.play(),a.pause(),a.bigPlayButton.show(),a.bigPlayButton.one("click",function(){a.bigPlayButton.hide()}))},e.onEnded=function(){this.options().loop&&this.currentTime(0),this.pause()},e.onReady=function(a){e.log_enabled&&b.log("OSMF","Ready",a),d.onReady(a);var f=c.getElementById(a).player;f.currentSrc()&&f.currentSrc().length>0&&f.tech.el_.vjs_src(f.currentSrc())},e.onError=function(a,d){var f=c.getElementById(a).player;"loaderror"==d&&(d="srcnotfound"),e.log_enabled&&b.log("OSMF","Error",d),f.tech.options_.reconnectOnError&&!f.tech.reconnecting_&&(f.tech.reconnecting_=!0,f.trigger("waiting"),setTimeout(function(){f.src(f.currentSrc()),f.tech.reconnecting_=!1,f.error(null)},5e3)),f.error({code:4,msg:""})},e.onEvent=function(a,f){var g=c.getElementById(a).player;"playing"===f&&g.tech.firstplay===!1&&(e.log_enabled&&b.log("OSMF","Event",a,"loadstart"),g.trigger("loadstart"),g.tech.loadstart=!0,e.log_enabled&&b.log("OSMF","Event",a,"firstplay"),g.trigger("firstplay"),g.tech.firstplay=!0),"buffering"==f?f="waiting":"ready"==f&&(f="loadeddata"),d.onEvent(a,f),"timeupdate"!==f&&e.log_enabled&&b.log("OSMF","Event",a,f)},e.prototype.supportsFullScreen=function(){return!1},e.prototype.enterFullScreen=function(){return!1},b.options.osmf={},b.options.techOrder.push("osmf"),b.registerComponent("Osmf",e)}(window,window.videojs,document); -//# sourceMappingURL=video.osmf.min.js.map \ No newline at end of file +j.prototype.applyStyles=function(a,b){b=b||this.div;for(var c in a)a.hasOwnProperty(c)&&(b.style[c]=a[c])},j.prototype.formatStyle=function(a,b){return 0===a?0:a+b},k.prototype=o(j.prototype),k.prototype.constructor=k,l.prototype.move=function(a,b){switch(b=void 0!==b?b:this.lineHeight,a){case"+x":this.left+=b,this.right+=b;break;case"-x":this.left-=b,this.right-=b;break;case"+y":this.top+=b,this.bottom+=b;break;case"-y":this.top-=b,this.bottom-=b}},l.prototype.overlaps=function(a){return this.lefta.left&&this.topa.top},l.prototype.overlapsAny=function(a){for(var b=0;b=a.top&&this.bottom<=a.bottom&&this.left>=a.left&&this.right<=a.right},l.prototype.overlapsOppositeAxis=function(a,b){switch(b){case"+x":return this.lefta.right;case"+y":return this.topa.bottom}},l.prototype.intersectPercentage=function(a){var b=Math.max(0,Math.min(this.right,a.right)-Math.max(this.left,a.left)),c=Math.max(0,Math.min(this.bottom,a.bottom)-Math.max(this.top,a.top)),d=b*c;return d/(this.height*this.width)},l.prototype.toCSSCompatValues=function(a){return{top:this.top-a.top,bottom:a.bottom-this.bottom,left:this.left-a.left,right:a.right-this.right,height:this.height,width:this.width}},l.getSimpleBoxPosition=function(a){var b=a.div?a.div.offsetHeight:a.tagName?a.offsetHeight:0,c=a.div?a.div.offsetWidth:a.tagName?a.offsetWidth:0,d=a.div?a.div.offsetTop:a.tagName?a.offsetTop:0;a=a.div?a.div.getBoundingClientRect():a.tagName?a.getBoundingClientRect():a;var e={left:a.left,right:a.right,top:a.top||d,height:a.height||b,bottom:a.bottom||d+(a.height||b),width:a.width||c};return e},n.StringDecoder=function(){return{decode:function(a){if(!a)return"";if("string"!=typeof a)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(a))}}},n.convertCueToDOMTree=function(a,b){return a&&b?g(a,b):null};var u=.05,v="sans-serif",w="1.5%";n.processCues=function(a,b,c){function d(a){for(var b=0;b")){i.cue.id=j;continue}case"CUE":try{f(j,i.cue,i.regionList)}catch(m){i.reportOrThrowError(m),i.cue=null,i.state="BADCUE";continue}i.state="CUETEXT";continue;case"CUETEXT":var n=-1!==j.indexOf("-->");if(!j||n&&(l=!0)){i.oncue&&i.oncue(i.cue),i.cue=null,i.state="ID";continue}i.cue.text&&(i.cue.text+="\n"),i.cue.text+=j;continue;case"BADCUE":j||(i.state="ID");continue}}}catch(m){i.reportOrThrowError(m),"CUETEXT"===i.state&&i.cue&&i.oncue&&i.oncue(i.cue),i.cue=null,i.state="INITIAL"===i.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var a=this;try{if(a.buffer+=a.decoder.decode(),(a.cue||"HEADER"===a.state)&&(a.buffer+="\n\n",a.parse()),"INITIAL"===a.state)throw new b(b.Errors.BadSignature)}catch(c){a.reportOrThrowError(c)}return a.onflush&&a.onflush(),this}},a.WebVTT=n}(this,this.vttjs||{}),function(a,b){"use strict";function c(a,b){var c=document.createElement("link");c.setAttribute("rel","stylesheet"),c.setAttribute("href",a+(b?"?"+b:"")),document.getElementsByTagName("head")[0].appendChild(c)}function d(a){return a.className.split(/\s+/g)}var e=function(a,b){var c=this;this.vjs=a,this.el=a.el(),this.opt=b,this.intv=0,this.stagger=3,this.steptotal=5,this.vjs.on("dispose",function(){c.dispose()}),this.vjs.on("ready",function(){c.init()}),this.apply()};e.prototype.apply=function(){var a=d(this.el);-1==a.indexOf(this.opt.className)&&(a.push(this.opt.className),this.class_added=this.opt.className,this.el.className=a.join(" "))};var f="M 21.5,18 32,25 21.5,32 21.5,32 Z",g="M 19.5,18 22.5,18 22.5,32 19.5,32 Z",h="M 21.5,18 24.5,25 24.5,25 21.5,32 Z",i="M 27.5,18 30.5,18 30.5,32 27.5,32 Z",j=['','','','',"",""].join(""),k=['','',""].join("");e.prototype.set_play_button_state=function(a,b){function c(a,b,c){return function(){var d=parseFloat(a),e=(parseFloat(b)-d)/parseFloat(c);return function(){return d+=e}}()}function d(a,b,d){var e=a.split(" ").slice(1,-1),f=b.split(" ").slice(1,-1);return function(){var a=e.map(function(a,b){return a.split(",").map(function(a,e){return c(a,f[b].split(",")[e],d)})});return function(){return a.reduce(function(a,b){return a+" "+b.reduce(function(a,b){return a()+","+b()})},"M")+" Z"}}()}var e=this.intv,j=this.steptotal,k=this.stagger,l=a.getElementsByTagName("path"),m=0;if(e&&clearInterval(e),b){var n=d(g,f,j),o=d(i,h,j);e=setInterval(function(){j>m&&l[1].setAttribute("d",o()),m>=k&&l[0].setAttribute("d",n()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}else{var p=d(f,g,j),q=d(h,i,j);e=setInterval(function(){j>m&&l[0].setAttribute("d",p()),m>=k&&l[1].setAttribute("d",q()),m++,m>=j+k&&(clearInterval(e),e=0)},20)}},e.prototype.init=function(){var a=this,b=this.vjs;this.opt.no_play_transform&&(this.steptotal=1,this.stagger=0);var c=b.controlBar.playToggle.el();c.insertAdjacentHTML("beforeend",j),b.bigPlayButton.el().insertAdjacentHTML("beforeend",k);var d=document.getElementById("morph");b.on("play",function(){a.set_play_button_state(d,!1)}).on("pause",function(){a.set_play_button_state(d,!0)}),a.set_play_button_state(d,b.paused())},e.prototype.dispose=function(){if(this.class_added){var a=d(this.el),b=a.indexOf(this.class_added);b>=0&&(a.splice(b,1),this.el.className=a.join(" "))}};var l={className:"vjs5-hola-skin",css:"/css/videojs-hola-skin.css",ver:"ver=0.0.2"};b.plugin("hola_skin",function(a){var d=b.mergeOptions(l,a);!d.css||a.className&&!a.css||c(d.css,d.ver),new e(this,d)})}(window,window.videojs),function(a,b){"use strict";function c(a){return"number"!=typeof a?a:Math.round(1e3*a)/1e3}var d,e,f=function(a,b){if(!b)return a;for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);return a},g=b.getComponent("MenuButton");b.registerComponent("SettingsButton",b.extend(g,{buttonText:"Settings",className:"vjs-settings-button",createItems:function(){this.addClass(this.className);var a=[],c=this.player_,d=this.options();d.info&&(d.info=b.mergeOptions({label:"Technical info"},d.info),a.push(new l(c,d.info))),d.report&&(d.report=b.mergeOptions({label:"Report playback issue"},d.report),a.push(new k(c,d.report)));var e=d.quality,f=e&&e.sources?e.sources:null;if(f&&f.length>1){a.push(new m(c,{label:"Quality"}));for(var g,h=0;h=d)return c(b.end(e)-d);return"--"}},downloaded:{units:"sec",title:"Downloaded",get:function(a){var b=a.buffered(),d=0;if(b&&b.length)for(var e=0;e=10},e.onLoadedData=function(){var a=this;a.options_.autoplay?a.play():a.options_.preload&&(a.currentTime()&&a.currentTime(0),a.play(),a.pause(),a.bigPlayButton.show(),a.bigPlayButton.one("click",function(){a.bigPlayButton.hide()}))},e.onEnded=function(){this.options().loop&&this.currentTime(0),this.pause()},e.onReady=function(a){e.log_enabled&&b.log("OSMF","Ready",a),d.onReady(a);var f=c.getElementById(a).player;f.currentSrc()&&f.currentSrc().length>0&&f.tech.el_.vjs_src(f.currentSrc())},e.onError=function(a,d){var f=c.getElementById(a).player;"loaderror"==d&&(d="srcnotfound"),e.log_enabled&&b.log("OSMF","Error",d),f.tech.options_.reconnectOnError&&!f.tech.reconnecting_&&(f.tech.reconnecting_=!0,f.trigger("waiting"),setTimeout(function(){f.src(f.currentSrc()),f.tech.reconnecting_=!1,f.error(null)},5e3)),f.error({code:4,msg:""})},e.onEvent=function(a,f){var g=c.getElementById(a).player;"playing"===f&&g.tech.firstplay===!1&&(e.log_enabled&&b.log("OSMF","Event",a,"loadstart"),g.trigger("loadstart"),g.tech.loadstart=!0,e.log_enabled&&b.log("OSMF","Event",a,"firstplay"),g.trigger("firstplay"),g.tech.firstplay=!0),"buffering"==f?f="waiting":"ready"==f&&(f="loadeddata"),d.onEvent(a,f),"timeupdate"!==f&&e.log_enabled&&b.log("OSMF","Event",a,f)},e.prototype.supportsFullScreen=function(){return!1},e.prototype.enterFullScreen=function(){return!1},b.options.osmf={},b.options.techOrder.push("osmf"),b.registerComponent("Osmf",e)}(window,window.videojs,document); +//# sourceMappingURL=videojs.osmf.min.js.map \ No newline at end of file diff --git a/dist/videojs.osmf.min.js.map b/dist/videojs.osmf.min.js.map new file mode 100644 index 0000000000..7b4d289f70 --- /dev/null +++ b/dist/videojs.osmf.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"videojs.osmf.min.js","sources":["node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/grunt-browserify/node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/lodash-compat/date/now.js","node_modules/lodash-compat/function/debounce.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/function/throttle.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object.assign/hasSymbols.js","node_modules/object.assign/implementation.js","node_modules/object.assign/index.js","node_modules/object.assign/node_modules/define-properties/index.js","node_modules/object.assign/node_modules/define-properties/node_modules/foreach/index.js","node_modules/object.assign/node_modules/function-bind/index.js","node_modules/object.assign/node_modules/object-keys/index.js","node_modules/object.assign/node_modules/object-keys/isArguments.js","node_modules/object.assign/polyfill.js","node_modules/object.assign/shim.js","node_modules/safe-json-parse/tuple.js","node_modules/tsml/tsml.js","node_modules/xhr/index.js","node_modules/xhr/node_modules/once/once.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js","node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js","node_modules/xhr/node_modules/parse-headers/parse-headers.js","src/js/big-play-button.js","src/js/button.js","src/js/component.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/mouse-time-display.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extend.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/player.js","src/js/plugins.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-enums.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/create-deprecation-proxy.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"_dereq_","topLevel","minDoc","document","doccy","min-document",2,3,4,"getNative","nativeNow","Date","now","getTime","../internal/getNative",5,"debounce","func","wait","options","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","undefined","complete","isCalled","id","result","apply","thisArg","args","delayed","remaining","stamp","setTimeout","maxDelayed","trailing","debounced","arguments","leading","maxWait","leadingCall","TypeError","FUNC_ERROR_TEXT","isObject","nativeMax","Math","max","../date/now","../lang/isObject",6,"restParam","start","index","rest","Array","otherArgs",7,"throttle","./debounce",8,"arrayCopy","source","array",9,"arrayEach","iteratee",10,"baseCopy","props","object","key",11,"createBaseFor","baseFor","./createBaseFor",12,"baseForIn","keysIn","../object/keysIn","./baseFor",13,"baseMerge","customizer","stackA","stackB","isSrcArr","isArrayLike","isArray","isTypedArray","keys","srcValue","isObjectLike","baseMergeDeep","value","isCommon","../lang/isArray","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",14,"mergeFunc","isPlainObject","isArguments","toPlainObject","push","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",15,"baseProperty","toObject","./toObject",16,"bindCallback","argCount","identity","collection","accumulator","other","../utility/identity",17,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",18,"fromRight","keysFunc","iterable",19,"getLength","./baseProperty",20,"isNative","../lang/isNative",21,"isLength","./getLength","./isLength",22,"isHostObject","Object","toString",23,"isIndex","reIsUint","test","MAX_SAFE_INTEGER",24,"type","./isIndex",25,26,27,"shimKeys","propsLength","allowIndexes","isString","hasOwnProperty","objectProto","prototype","../lang/isString",28,"support","unindexedChars","charAt","../support",29,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",30,"arrayTag","objToString","nativeIsArray","../internal/isLength",31,"isFunction","funcTag","./isObject",32,"reIsNative","fnToString","reIsHostCtor","Function","RegExp","replace","../internal/isHostObject","./isFunction",33,34,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",35,"stringTag",36,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",37,"../internal/baseCopy",38,"nativeKeys","enumPrototypes","../internal/shimKeys",39,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",40,"merge","../internal/baseMerge","../internal/createAssigner",41,"arrayProto","splice","x","0","y","spliceObjects",42,43,"Symbol","getOwnPropertySymbols","iterator","obj","sym","symVal","getOwnPropertyNames","syms","getOwnPropertyDescriptor","descriptor","enumerable","object-keys",44,"bind","canBeObject","hasSymbols","propIsEnumerable","target","objTarget","./hasSymbols","function-bind",45,"defineProperties","getPolyfill","shim","implementation","./implementation","./polyfill","./shim","define-properties",46,"foreach","toStr","fn","arePropertyDescriptorsSupported","defineProperty","_","supportsDescriptors","name","predicate","configurable","writable","map","predicates","concat",47,"hasOwn","ctx","k",48,"ERROR_MESSAGE","slice","funcType","that","binder","bound","boundLength","boundArgs","join","Empty",49,"has","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","blacklistedKeys","$console","$frame","$frameElement","$frames","$parent","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","keysWorksWithArguments","originalKeys",50,"str","callee",51,"lacksProperEnumerationOrder","assign","letters","split","actual","assignHasPendingExceptions","preventExtensions","thrower",52,"polyfill",53,"SafeParseTuple","reviver","error","json","JSON","parse","err",54,"clean","sa",55,"isEmpty","createXHR","callback","readystatechange","xhr","readyState","loadFunc","getBody","body","response","responseType","responseText","responseXML","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","headers","url","uri","rawRequest","getAllResponseHeaders","parseHeaders","once","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","onload","onerror","onprogress","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","beforeSend","send","noop","global/window","parse-headers",56,"called",57,"forEach","list","context","forEachArray","forEachString","forEachObject","len","string","is-function",58,"alert","confirm","prompt",59,"trim","left","right",60,"arg","row","indexOf","toLowerCase","_componentJs2","_interopRequireDefault","_componentJs","_classCallCheck","BigPlayButton","_Button","player","buildCSSClass","__esModule","newObj","default","Constructor","instance","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_component2","_component","_objectAssign","Button","_Component","on","handleBlur","createEl","attributes","_objectAssign2","tabIndex","el","controlTextEl_","innerHTML","localize","controlText_","handleFocus","Events","_globalDocument2","Fn","handleKeyPress","event","which","preventDefault","handleClick","_interopRequireWildcard","_globalWindow2","_globalWindow","Dom","_utilsDomJs","Component","player_","id_","Guid","newGUID","el_","childIndex_","childNameIndex_","reportTouchActivity","trigger","bubbles","children_","dispose","removeElData","tagName","properties","languages","language","children","getChildById","addChild","child","componentName","componentClassName","componentClass","_utilsToTitleCaseJs2","ComponentClass","getComponent","component","removeChild","getChild","childFound","options_","parentOptions","_this","handleAdd","opts","playerOptions","_name","first","second","removeOnDispose","_this2","off","cleanRemover","guid","third","nodeName","one","_this3","_arguments","newFunc","ready","isReady_","triggerReady","readyQueue","readyQueue_","hasClass","classToCheck","hasElClass","addElClass","classToAdd","removeClass","classToRemove","removeElClass","show","dimension","num","skipListeners","widthOrHeight","val","style","emitTapEvents","touchStart","touchTimeThreshold","couldBeTap","touches","firstTouch","xdiff","pageX","touchDistance","tapMovementThreshold","noTap","touchTime","enableTouchActivity","report","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","intervalId","comp","init","subObj","extend","_name2","_spacerControlsCustomControlSpacerJs","ControlBar","className","FullscreenToggle","isFullscreen","controlText","updateShowing","LiveDisplay","contentEl_","aria-live","MuteToggle","update","tech_","addClass","vol","muted","level","toMute","handlePlay","handlePause","PlayToggle","play","pause","_menuMenuJs2","_menuMenuJs","PlaybackRateMenuButton","_MenuButton","updateVisibility","appendChild","labelEl_","menu","setAttribute","playbackRate","currentRate","newRate","playbackRates","playbackRateSupported","updateLabel","PlaybackRateMenuItem","_MenuItem","label","rate","buffered","percentify","time","end","percent","part","width","bufferedEnd","_lodashCompatFunctionThrottle2","_lodashCompatFunctionThrottle","MouseTimeDisplay","controlBar","progressControl","handleMouseMove","duration","position","findElPosition","parentNode","newTime","_utilsFormatTimeJs","updateDataAttr","_mouseTimeDisplayJs","ProgressControl","_Slider","updateARIAAttributes","aria-label","scrubbing","getCache","currentTime","getPercent","toFixed","_utilsFormatTimeJs2","SeekBar","videoWasPlaying","stepForward","stepBack","CustomControlSpacer","_Spacer","Spacer","_TextTrackMenuItem","CaptionSettingsMenuItem","_captionSettingsMenuItemJs2","_captionSettingsMenuItemJs","_TextTrackButton","CaptionsButton","threshold","hide","items","kind","kind_","_textTrackMenuItemJs2","_textTrackMenuItemJs","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","ChaptersButton","createItems","tracks","textTracks","createMenu","track","cues","chaptersTrack","contentEl","cue","mi","_utilsFnJs","ChaptersTrackMenuItem","addEventListener","startTime","OffTextTrackMenuItem","selected","handleTracksChange","_offTextTrackMenuItemJs","TextTrackButton","updateHandler","removeEventListener","_offTextTrackMenuItemJs2","_globalDocument","TextTrackMenuItem","onchange","Event","dispatchEvent","updateContent","DurationDisplay","formattedTime","remainingTime","localizedText","TimeDivider","_sliderSliderJs","_volumeLevelJs","volume","calculateDistance","VolumeBar","VolumeControl","_volumeBarJs","VolumeLevel","_volumeControlVolumeBarJs","VolumeMenuButton","inline","vertical","volumeBar","volumeUpdate","orientationClass","vb","./utils/dom.js",95,"_utilsEventsJs","EventTarget","allowedEvents_","ael","_utilsLog","_utilsLog2","subClassMethods","methods","FullscreenApi","apiMap","browserApi","LoadingSpinner","MediaError","message","errorTypes","_buttonJs2","_buttonJs","_utilsToTitleCaseJs","MenuButton","title","buttonPressed_","unpressButton","focus","MenuItem","_selected","Menu","unlockShowing","contentElType","append","_utilsBrowserJs","_utilsLogJs2","_utilsLogJs","_utilsMergeOptionsJs","_tracksTextTrackListConverterJs","_controlBarControlBarJs","tagAttributes","getElAttributes","languagesToLower","_utilsMergeOptionsJs2","plugins","playerOptionsCopy","isAudio","controls","Player","styleEl_","players","removeAttribute","defaultsStyleEl","querySelector","height","aspectRatio","privDimension","_dimension","parsedVal","parseFloat","updateStyleEl_","fluid","bool","ratio","aspectRatio_","videoWidth","videoHeight","ratioParts","width_","height_","ratioMultiplier","loadTech_","techName","disposeMediaElement","techName_","techOptions","nativeControlsForTouch","playerId","techId","textTracks_","preload","loop","poster","src","cache_","techComponent","handleTechReady_","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechLoadStart_","handleTechWaiting_","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechEnded_","handleTechSeeking_","handleTechSeeked_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechProgress_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechAbort_","handleTechStalled_","handleTechLoadedMetaData_","handleTechLoadedData_","handleTechTextTrackChange_","handleTechPosterChange_","usingNativeControls","addTechControlsListeners_","removeTechControlsListeners_","handleTechClick_","handleTechTouchMove_","handleTechTouchEnd_","hasStarted","_hasStarted","hasStarted_","handleTechTap_","userActive","handleTechTouchStart_","userWasActive","handleStageClick_","handleTechSuspend_","handleTechEmptied_","handleTechTimeUpdate_","handleTechRateChange_","handleTechVolumeChange_","techCall_","techGet_","isScrubbing","scrubbing_","seconds","bufferedPercent","_utilsBufferJs","percentAsDecimal","fsApi","fullscreenchange","documentFullscreenChange","requestFullscreen","supportsFullScreen","exitFullscreen","isFullWindow","docOrigOverflow","documentElement","overflow","exitFullWindow","tech","b","currentTech","sourceList_","currentType_","load","sourceTech","selectSource","controls_","usingNativeControls_","error_","_mediaErrorJs2","ended","seeking","seekable","userActivity_","userActive_","stopPropagation","listenForUserActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseDown","handleMouseUp","inactivityTimeout","addTextTrack","addRemoteTextTrack","removeRemoteTextTrack","languages_","toJSON","tagOptions","dataSetup","_safeParseTuple","baseOptions","hasChildNodes","childNodes","childName","_playerJs","PosterImage","fallbackImg_","setSrc","_windowLoaded","autoSetup","vids","getElementsByTagName","mediaEls","audios","mediaEl","getAttribute","autoSetupTimeout","vjs","Slider","bar","barName","playerEvent","progress","percentage","stopImmediatePropagation","vertical_","registerComponent","FlashRtmpDecorator","Flash","streamingFormats","streamToParts","parts","connection","stream","connEnd","streamBegin","lastIndexOf","substring","rtmpSourceHandler","attrUpper","attr","toUpperCase","_api","vjs_setProperty","vjs_getProperty","_tech","_utilsUrlJs","_Tech","setSource","swf","objId","eventProxyFunction","errorEventProxyFunction","flashVars","params","wmode","embed","setCurrentTime","vjs_pause","lastSeekTarget_","currentSource_","setPoster","_utilsTimeRangesJs","createTimeRange","ranges","enterFullScreen","_tech2","_readWrite","_readOnly","_createGetter","nativeSourceHandler","canHandleSource","guessMimeType","ext","Url","getFileExtension","video/flv","video/mp4","checkReady","onEvent","swfID","eventName","getEl","version","navigator","description","match","getEmbedCode","flashVarsString","paramsString","attrsString","flashvars","_techJs2","_techJs","Html5","currentSrc","initNetworkState_","handleLateInit_","nodesLength","nodes","node","featuresNativeTextTracks","remoteTextTracks","addTrack_","removeNodes","handleTextTrackChange_","handleTextTrackChange","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","emulatedTt","tt","handleTextTrackAdd_","clone","cloneNode","createElement","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","overwriteAttrs","_ret","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","paused","setVolume","setMuted","offsetWidth","offsetHeight","video","networkState","HAVE_METADATA","webkitEnterFullScreen","exitFullScreen","webkitExitFullScreen","_src","setPreload","autoplay","setAutoplay","setControls","setLoop","defaultMuted","played","removeTrack_","TEST_VID","srclang","isSupported","canPlayType","registerSourceHandler","canControlVolume","canControlPlaybackRate","supportsNativeTextTracks","supportsTextTracks","mpegurlRE","patchCanPlayType","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","firstChild","MediaLoader","_tracksTextTrackList","Tech","manualProgressOn","featuresTimeupdateEvents","nativeCaptions","nativeTextTracks","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","onDurationChange","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","currentTimeInterval","manuallyTriggered","initTextTrackListeners","textTrackListChanges","script","textTracksChanges","updateDisplay","_tracksTextTrackList2","createTrackHelper","withSourceHandlers","handler","handlers","sourceHandlers","selectSourceHandler","sh","srcObj","sourceHandler_","disposeSourceHandler","handleSource","../tracks/text-track","../tracks/text-track-list","../utils/buffer.js","../utils/fn.js","../utils/log.js","../utils/time-ranges.js","global/document",113,"IS_IE8","prop","TextTrackCueList","get","length_","setCues_","cues_","oldLength","defineProp","parseInt","color","opacity","darkGray","lightGray","TextTrackDisplay","clearDisplay","updateForTrack","overrides","getValues","_i","cueDiv","displayState","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","fontMap","../component","../menu/menu-button.js","../menu/menu-item.js","../menu/menu.js",115,"TextTrackMode","disabled","hidden","showing","trackToJson_","inBandMetadataTrackDispatchType","textTracksToJson","trackEls","querySelectorAll","trackObjs","TextTrackList","tracks_","_eventTarget2","change","addtrack","removetrack","_event","rtrack","getTrackById","getSelectedOptionValue","selectedOption","selectedOptions","selectedIndex","option","TextTrackSettings","persistTextTrackSettings","saveSettings","restoreSettings","textEdge","fgColor","bgColor","bgOpacity","setValues","values","setSelectedOption","_safeJsonParseTuple2","localStorage","getItem","removeItem","ttDisplay","safe-json-parse/tuple",119,"_textTrackCueList2","_textTrackCueList","_eventTarget","TextTrack","TextTrackEnum","TextTrackKind","mode","activeCues_","activeCues","changed","timeupdateHandler","set","newMode","loaded_","ct","active","addCue","removeCue","removed","parseCues","srcContent","parser","loadTrack","crossOrigin","isCrossOrigin","_xhr2","responseBody","O","fromIndex","abs","webkitVersionMap","exec","USER_AGENT","IS_IPHONE","IS_IPAD","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","appleWebkitVersion","bufferedDuration","_timeRangesJs","_logJs","_logJs2","messages","Proxy","warn","defaultBehaviors","_taggedTemplateLiteralLoose","strings","raw","getElementById","propName","_tsml2","_templateObject","parent","getElData","elData","elIdAttr","element","classNames","knownBooleans","attrs","attrName","attrVal","onselectstart","getBoundingClientRect","box","top","docEl","clientLeft","scrollLeft","pageXOffset","getPointerPosition","boxH","boxX","pageY","unblockTextSelection","_tsml","elem","_handleMultipleEvents","dispatcher","hash","fixEvent","m","handlersCopy","isImmediatePropagationStopped","removeType","ownerDocument","isPropagationStopped","defaultPrevented","targetData","returnTrue","returnFalse","old","srcElement","relatedTarget","returnValue","cancelBubble","doc","clientX","_cleanUpEvents","detachEvent","ret","guide","h","floor",127,"_logType","console","log","history","argsArray","isPlain","mergeOptions","destination","lodash-compat/object/merge",130,"createStyleElement","createTimeRanges","createTimeRangesObj","getRange","fnName","valueIndex","rangeIndex","parseUrl","href","addToBody","div","details","protocol",134,"stylesheet","_utilsStylesheetJs","_player2","_player","_tracksTextTrackJs","_lodashCompatObjectMerge","_utilsCreateDeprecationProxyJs","_techHtml5Js","getPlayers","setTextContent","addLanguage"],"mappings":"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ACpB9W,KAAyBngB,GAAtBpe,EAAA,+BACU,0BAAb0qB,EAAO1N,EAAA8M,OACE,kBAATqH,EAAGnU,EAAAoU,OACM,2FAGA,0DAGHpU,EAAiBs4B,gDACjBt4B,EAAiBu4B,qBAMjCC,EAAAx1C,EAAA,kOA+BE,GAAAwP,EAII,IAAA,gBAAA3N,GAAA,IAGS,IAAXA,EAAIgb,QAAO,OACThb,EAAAA,EAAAuS,MAAQ,4BAOVjT,IACDgwB,EAAA,WAAAwe,KAAA,WAAA9tC,EAAA,0DAGIuhB,GACLrkB,EAAS02C,aAAA5zC,GAAAuhB,MAAAA,oBAMV5T,GAAAsQ,EAAA6f,MAAA99B,OAKD2N,GAAA3N,CAIF,KAAK2N,IAAOA,EAAAuT,SAEV,KAAQ,IAAGlgB,WAAA,kRAuBboyC,EAAQS,eAAUnxB,EAAc,qNAkC9BxlB,EAAK02C,WAAA,WACL,MAAKN,GAAA,WAAAjjB,wZA2NPnzB,EAAQ42C,YAAG,SAAAh2C,EAAOua,gHAsBlBnb,EAAQy/B,gBAAUz/B,EAAAq1C,iBAAc7V,EAAA6V;;ApIlZhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;wBC3BmB,aAAa;;;;2BACV,gBAAgB;;;;;;;;;;;;;;IAWhC,aAAa;Y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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n var bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\nvar hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar blacklistedKeys = {\n\t$console: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$parent: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar parseHeaders = require(\"parse-headers\")\n\n\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction createXHR(options, callback) {\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n if (typeof options === \"string\") {\n options = { uri: options }\n }\n\n options = options || {}\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\n};\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class Button\n */\nclass Button extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of element attributes that should be set on the element Tag name\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n // Add standard Aria info\n attributes = assign({\n role: 'button',\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n el.appendChild(this.controlTextEl_);\n\n this.controlText(this.controlText_);\n\n return el;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for button\n * @return {String}\n * @method controlText\n */\n controlText(text) {\n if (!text) return this.controlText_ || 'Need Text';\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = this.localize(this.controlText_);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle Click - Override with specific functionality for button\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when keys are pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n}\n\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n *
    \n *
    Button
    \n *
    \n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || (options.el && options.el.id);\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.newGUID()}`;\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the component and all child components\n *\n * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the component's DOM element\n * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // ->
    \n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // ->
    myButton
    \n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(componentName);\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n let ComponentClass = Component.getComponent(componentClassName);\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.push(component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || (component.name && component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n this.contentEl().appendChild(component.el());\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child component from this component's list of children, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n let compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (name, opts) => {\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n this[name] = this.addChild(name, opts);\n };\n\n // Allow for an array of children details to passed in the options\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n let name;\n let opts;\n\n if (typeof child === 'string') {\n // ['myComponent']\n name = child;\n opts = {};\n } else {\n // [{ name: 'myComponent', otherOption: true }]\n name = child.name;\n opts = child;\n }\n\n handleAdd(name, opts);\n }\n } else {\n Object.getOwnPropertyNames(children).forEach(function(name){\n handleAdd(name, children[name]);\n });\n }\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function(fn){\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove and return a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n this.trigger('resize');\n }\n\n // Return component\n return this;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n let val = this.el_.style[widthOrHeight];\n let pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\n\n this.on('touchstart', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function(event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function(event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\n\n this.on('touchstart', function() {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n const touchEnd = function(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Clears a timeout and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.clearInterval(intervalId);\n };\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Clears an interval and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar'\n });\n }\n}\n\nControlBar.prototype.options_ = {\n loadEvent: 'play',\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'subtitlesButton',\n 'captionsButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `${this.localize('Stream Type')}${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n let localizedMute = this.localize(toMute);\n if (this.controlText() !== localizedMute) {\n this.controlText(localizedMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get supported playback rates\n *\n * @return {Array} Supported playback rates\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `${this.localize('Loaded')}: 0%`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `${this.localize('Progress')}: 0%`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'video progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'default': false,\n mode: 'disabled'\n };\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items = [];\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n if (!track.cues) {\n track['mode'] = 'hidden';\n /* jshint loopfunc:true */\n // TODO see if we can figure out a better way of doing this https://github.com/videojs/video.js/issues/1864\n window.setTimeout(Fn.bind(this, function() {\n this.createMenu();\n }), 100);\n /* jshint loopfunc:false */\n } else {\n chaptersTrack = track;\n break;\n }\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n }));\n }\n\n if (chaptersTrack) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n this.addChild(menu);\n }\n\n if (this.items.length > 0) {\n this.show();\n }\n\n return menu;\n }\n\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n let tracks = this.player_.textTracks();\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n // Create a menu item for each text track\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: 'Current Time ' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`;\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `${this.localize('Duration Time')} 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration) {\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `${localizedText} ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `${this.localize('Remaining Time')} -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n this.contentEl_.innerHTML = `${localizedText} -${formattedTime}`;\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '
    /
    '\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n\n this.player_.volume(this.calculateDistance(event));\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: ''\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport Menu from '../menu/menu.js';\nimport MenuButton from '../menu/menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends MenuButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Menu} The volume menu button\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n menu.addChild(vb);\n\n this.volumeBar = vb;\n return menu;\n }\n\n /**\n * Handle click on volume menu and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\n\n/**\n * Display that an error has occurred making the video unplayable\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.update();\n this.on(player, 'error', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-error-display'\n });\n\n this.contentEl_ = Dom.createEl('div');\n el.appendChild(this.contentEl_);\n\n return el;\n }\n\n /**\n * Update the error message in localized language\n *\n * @method update\n */\n update() {\n if (this.player().error()) {\n this.contentEl_.innerHTML = this.localize(this.player().error().message);\n }\n }\n}\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\n\nEventTarget.prototype.on = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = Function.prototype;\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n Events.one(this, type, fn);\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _inherits = function (subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i=0; i 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n menu.contentEl().appendChild(Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n }));\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * Focus - Add keyboard functionality to element\n * This function is not needed anymore. Instead, the\n * keyboard functionality is handled by\n * treating the button as triggering a submenu.\n * When the button is pressed, the submenu\n * appears. Pressing the button again makes\n * the submenu disappear.\n *\n * @method handleFocus\n */\n handleFocus() {}\n\n /**\n * Can't turn off list display that we turned\n * on with focus, because list would go away.\n *\n * @method handleBlur\n */\n handleBlur() {}\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Check for space bar (32) or enter (13) keys\n if (event.which === 32 || event.which === 13) {\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n event.preventDefault();\n // Check for escape (27) key\n } else if (event.which === 27){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n event.preventDefault();\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-pressed', true);\n if (this.items && this.items.length > 0) {\n this.items[0].el().focus(); // set the focus to the title of the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-pressed', false);\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `
  • `\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.selected(options['selected']);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label'])\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-selected',true);\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-selected',false);\n }\n }\n\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * \n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = document.querySelector('.vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n let width;\n let height;\n let aspectRatio;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n let idClass = this.id()+'-dimensions';\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Component.getComponent('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'textTracks': this.textTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Component.getComponent(techName);\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.textTracks_ = this.textTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.tag && this.options_.autoplay && this.paused()) {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error && error.code);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n this.techCall_('play');\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Select source based on tech order\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Loop through each playback technology in the options order\n for (var i=0,j=this.options_.techOrder;i 0) {\n // In milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // videoTracks: function(){ return this.techCall_('videoTracks'); },\n // audioTracks: function(){ return this.techCall_('audioTracks'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i 0) {\n for(let i=0, e=vids.length; i 0) {\n for(let i=0, e=audios.length; i 0) {\n\n for (let i=0, e=mediaEls.length; i seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoTracks,audioTracks,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n this.remoteTextTracks().addTrack_(node.track);\n }\n }\n }\n\n for (let i=0; i= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt && tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() { return this.el_.currentSrc; }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n var track = document.createElement('track');\n\n if (options['kind']) {\n track['kind'] = options['kind'];\n }\n if (options['label']) {\n track['label'] = options['label'];\n }\n if (options['language'] || options['srclang']) {\n track['srclang'] = options['language'] || options['srclang'];\n }\n if (options['default']) {\n track['default'] = options['default'];\n }\n if (options['id']) {\n track['id'] = options['id'];\n }\n if (options['src']) {\n track['src'] = options['src'];\n }\n\n this.el().appendChild(track);\n\n this.remoteTextTracks().addTrack_(track.track);\n\n return track;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n var tracks, i;\n\n this.remoteTextTracks().removeTrack_(track);\n\n tracks = this.el().querySelectorAll('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source){\n var match, ext;\n\n function canPlayType(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n }\n\n // If a type was provided we should rely on that\n if (source.type) {\n return canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Number} [description]\n */\nHtml5.canControlPlaybackRate = function(){\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i this.trigger('texttrackchange');\n\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n });\n\n tracks.addEventListener('change', textTracksChanges);\n\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {TextTrackObject}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = createTrackHelper(this, options.kind, options.label, options.language, options);\n this.remoteTextTracks().addTrack_(track);\n return {\n track: track\n };\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n this.remoteTextTracks().removeTrack_(track);\n }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n}\n\n/*\n * List of associated text tracks\n *\n * @type {Array}\n * @private\n */\nTech.prototype.textTracks_;\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj){\n let sh = _Tech.selectSourceHandler(srcObj);\n\n if (sh) {\n return sh.canHandleSource(srcObj);\n }\n\n return '';\n };\n\n let originalSeekable = _Tech.prototype.seekable;\n\n // when a source handler is registered, prefer its implementation of\n // seekable when present.\n _Tech.prototype.seekable = function() {\n if (this.sourceHandler_ && this.sourceHandler_.seekable) {\n return this.sourceHandler_.seekable();\n }\n return originalSeekable.call(this);\n };\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n this.currentSource_ = source;\n this.sourceHandler_ = sh.handleSource(source, this);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function(){\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nexport default Tech;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n */\n\nlet TextTrackCueList = function(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackCueList.prototype) {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackCueList.prototype.setCues_ = function(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(i) {\n if (!(''+i in this)) {\n Object.defineProperty(this, '' + i, {\n get: function() {\n return this.cues_[i];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for(; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n};\n\nTextTrackCueList.prototype.getCueById = function(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n for (let i=0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n this.updateForTrack(track);\n }\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, track['activeCues'], this.el_);\n\n let i = cues.length;\n while (i--) {\n let cueDiv = cues[i].displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * @file text-track-enums.js\n *\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nvar TextTrackMode = {\n 'disabled': 'disabled',\n 'hidden': 'hidden',\n 'showing': 'showing'\n};\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind { \"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\" };\n */\nvar TextTrackKind = {\n 'subtitles': 'subtitles',\n 'captions': 'captions',\n 'descriptions': 'descriptions',\n 'chapters': 'chapters',\n 'metadata': 'metadata'\n};\n\nexport { TextTrackMode, TextTrackKind };\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n return {\n kind: track.kind,\n label: track.label,\n language: track.language,\n id: track.id,\n inBandMetadataTrackDispatchType: track.inBandMetadataTrackDispatchType,\n mode: track.mode,\n cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n }),\n src: track.src\n };\n};\n\n/**\n * Examine a tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n let trackEls = tech.el().querySelectorAll('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\n json.src = trackEl.src;\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n */\nlet TextTrackList = function(tracks) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in TextTrackList.prototype) {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n\n tracks = tracks || [];\n list.tracks_ = [];\n\n Object.defineProperty(list, 'length', {\n get: function() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n};\n\nTextTrackList.prototype = Object.create(EventTarget.prototype);\nTextTrackList.prototype.constructor = TextTrackList;\n\n/*\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\n */\nTextTrackList.prototype.allowedEvents_ = {\n 'change': 'change',\n 'addtrack': 'addtrack',\n 'removetrack': 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (let event in TextTrackList.prototype.allowedEvents_) {\n TextTrackList.prototype['on' + event] = null;\n}\n\nTextTrackList.prototype.addTrack_ = function(track) {\n let index = this.tracks_.length;\n if (!(''+index in this)) {\n Object.defineProperty(this, index, {\n get: function() {\n return this.tracks_[index];\n }\n });\n }\n\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n this.tracks_.push(track);\n\n this.trigger({\n type: 'addtrack',\n track: track\n });\n};\n\nTextTrackList.prototype.removeTrack_ = function(rtrack) {\n let result = null;\n let track;\n\n for (let i = 0, l = this.length; i < l; i++) {\n track = this[i];\n if (track === rtrack) {\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n this.trigger({\n type: 'removetrack',\n track: track\n });\n};\n\nTextTrackList.prototype.getTrackById = function(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n};\n\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.el().querySelector('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.el().querySelector('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.el().querySelector('.vjs-fg-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-color > select').selectedIndex = 0;\n this.el().querySelector('.window-color > select').selectedIndex = 0;\n this.el().querySelector('.vjs-text-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-bg-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-window-opacity > select').selectedIndex = 0;\n this.el().querySelector('.vjs-edge-style select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-family select').selectedIndex = 0;\n this.el().querySelector('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.el().querySelector('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.el().querySelector('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @return {Object} \n * @method getValues\n */\n getValues() {\n const el = this.el();\n\n const textEdge = getSelectedOptionValue(el.querySelector('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(el.querySelector('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(el.querySelector('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(el.querySelector('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(el.querySelector('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(el.querySelector('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(el.querySelector('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(el.querySelector('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(el.querySelector('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings \n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity \n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n const el = this.el();\n\n setSelectedOption(el.querySelector('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(el.querySelector('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(el.querySelector('.vjs-fg-color > select'), values.color);\n setSelectedOption(el.querySelector('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(el.querySelector('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(el.querySelector('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(el.querySelector('.window-color > select'), values.windowColor);\n setSelectedOption(el.querySelector('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(el.querySelector('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings \n *\n * @method restoreSettings\n */\n restoreSettings() {\n let [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage \n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {}\n }\n\n /**\n * Update display of texttrack settings \n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    `;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport * as Guid from '../utils/guid.js';\nimport * as browser from '../utils/browser.js';\nimport * as TextTrackEnum from './text-track-enums';\nimport log from '../utils/log.js';\nimport EventTarget from '../event-target';\nimport document from 'global/document';\nimport window from 'global/window';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\n\n/*\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n */\nlet TextTrack = function(options={}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let tt = this;\n if (browser.IS_IE8) {\n tt = document.createElement('custom');\n\n for (let prop in TextTrack.prototype) {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n\n tt.tech_ = options.tech;\n\n let mode = TextTrackEnum.TextTrackMode[options['mode']] || 'disabled';\n let kind = TextTrackEnum.TextTrackKind[options['kind']] || 'subtitles';\n let label = options['label'] || '';\n let language = options['language'] || options['srclang'] || '';\n let id = options['id'] || 'vjs_text_track_' + Guid.newGUID();\n\n if (kind === 'metadata' || kind === 'chapters') {\n mode = 'hidden';\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this['activeCues'];\n if (changed) {\n this['trigger']('cuechange');\n changed = false;\n }\n });\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'kind', {\n get: function() {\n return kind;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'label', {\n get: function() {\n return label;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'language', {\n get: function() {\n return language;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'id', {\n get: function() {\n return id;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'mode', {\n get: function() {\n return mode;\n },\n set: function(newMode) {\n if (!TextTrackEnum.TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: Function.prototype\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get: function() {\n if (!this.loaded_) {\n return null;\n }\n\n if (this['cues'].length === 0) {\n return activeCues; // nothing to do\n }\n\n let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this['cues'].length; i < l; i++) {\n let cue = this['cues'][i];\n if (cue['startTime'] <= ct && cue['endTime'] >= ct) {\n active.push(cue);\n } else if (cue['startTime'] === cue['endTime'] && cue['startTime'] <= ct && cue['startTime'] + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (indexOf.call(this.activeCues_, active[i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n set: Function.prototype\n });\n\n if (options.src) {\n tt.src = options.src;\n loadTrack(options.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n if (browser.IS_IE8) {\n return tt;\n }\n};\n\nTextTrack.prototype = Object.create(EventTarget.prototype);\nTextTrack.prototype.constructor = TextTrack;\n\n/*\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n 'cuechange': 'cuechange'\n};\n\nTextTrack.prototype.addCue = function(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this['cues'].setCues_(this.cues_);\n};\n\nTextTrack.prototype.removeCue = function(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n};\n\n/*\n* Downloading stuff happens below this point\n*/\nvar parseCues = function(srcContent, track) {\n if (typeof window['WebVTT'] !== 'function') {\n //try again a bit later\n return window.setTimeout(function() {\n parseCues(srcContent, track);\n }, 25);\n }\n\n let parser = new window['WebVTT']['Parser'](window, window['vttjs'], window['WebVTT']['StringDecoder']());\n\n parser['oncue'] = function(cue) {\n track.addCue(cue);\n };\n parser['onparsingerror'] = function(error) {\n log.error(error);\n };\n\n parser['parse'](srcContent);\n parser['flush']();\n};\n\nvar loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n\n let crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.bind(this, function(err, response, responseBody){\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n parseCues(responseBody, track);\n }));\n};\n\nvar indexOf = function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n let O = Object(this);\n\n let len = O.length >>> 0;\n\n if (len === 0) {\n return -1;\n }\n\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n if (n >= len) {\n return -1;\n }\n\n let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n while (k < len) {\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n};\n\nexport default TextTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT);\nexport const IS_IPAD = (/iPad/i).test(USER_AGENT);\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const ANDROID_VERSION = (function() {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i),\n major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n } else {\n return null;\n }\n})();\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_CHROME = (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let i = 0; i < buffered.length; i++){\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n","import log from './log.js';\n\n/**\n * Object containing the default behaviors for available handler methods.\n *\n * @private\n * @type {Object}\n */\nconst defaultBehaviors = {\n get(obj, key) {\n return obj[key];\n },\n set(obj, key, value) {\n obj[key] = value;\n return true;\n }\n};\n\n/**\n * Expose private objects publicly using a Proxy to log deprecation warnings.\n *\n * Browsers that do not support Proxy objects will simply return the `target`\n * object, so it can be directly exposed.\n *\n * @param {Object} target The target object.\n * @param {Object} messages Messages to display from a Proxy. Only operations\n * with an associated message will be proxied.\n * @param {String} [messages.get]\n * @param {String} [messages.set]\n * @return {Object} A Proxy if supported or the `target` argument.\n */\nexport default (target, messages={}) => {\n if (typeof Proxy === 'function') {\n let handler = {};\n\n // Build a handler object based on those keys that have both messages\n // and default behaviors.\n Object.keys(messages).forEach(key => {\n if (defaultBehaviors.hasOwnProperty(key)) {\n handler[key] = function() {\n log.warn(messages[key]);\n return defaultBehaviors[key].apply(this, arguments);\n };\n }\n });\n\n return new Proxy(target, handler);\n }\n return target;\n};\n","/**\n * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String=} tagName Name of tag to be created.\n * @param {Object=} properties Element properties to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml`Setting attributes in the second argument of createEl()\n has been deprecated. Use the third argument instead.\n createEl(type, properties, attributes). Attempting to set ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch(e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n * @function hasElClass\n */\nexport function hasElClass(element, classToCheck) {\n return ((' ' + element.className + ' ').indexOf(' ' + classToCheck + ' ') !== -1);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n * @function addElClass\n */\nexport function addElClass(element, classToAdd) {\n if (!hasElClass(element, classToAdd)) {\n element.className = element.className === '' ? classToAdd : element.className + ' ' + classToAdd;\n }\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n * @function removeElClass\n */\nexport function removeElClass(element, classToRemove) {\n if (!hasElClass(element, classToRemove)) {return;}\n\n let classNames = element.className.split(' ');\n\n // no arr.indexOf in ie8, and we don't want to add a big shim\n for (let i = classNames.length - 1; i >= 0; i--) {\n if (classNames[i] === classToRemove) {\n classNames.splice(i,1);\n }\n }\n\n element.className = classNames.join(' ');\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, (attrValue === true ? '' : attrValue));\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(','+attrName+',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = (attrVal !== null) ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @method blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @method unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el Element from which to get offset\n * @return {Object=}\n * @method findElPosition\n */\nexport function findElPosition(el) {\n let box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object=} position This object will have x and y coordinates corresponding to the mouse position\n * @metho getPointerPosition\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, ((boxY - pageY) + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n","/**\n * @file events.js\n *\n * Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n */\n\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash){\n\n if (data.disabled) return;\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = (Dom.hasElData(elem)) ? Dom.getElData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type:event, target:elem };\n }\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = Dom.getElData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' &&\n key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ?\n event.toElement :\n event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n Dom.removeElData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function(type) {\n //Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n","/**\n * @file fn.js\n */\nimport { newGUID } from './guid.js';\n\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function createTimeRanges(start, end){\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = ``;\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n let details = {};\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(url){\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n let div = document.createElement('div');\n div.innerHTML = `x`;\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let urlInfo = parseUrl(url);\n let winLoc = window.location;\n\n // IE8 protocol relative urls will return ':' for protocol\n let srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\n\nimport assign from 'object.assign';\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport createDeprecationProxy from './utils/create-deprecation-proxy.js';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nvar videojs = function(id, options, ready){\n var tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || new Player(tag, options, ready);\n};\n\n// Add default styles\nlet style = document.querySelector('.vjs-styles-defaults');\nif (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = document.querySelector('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = function() {\n return Player.players;\n};\n\n/**\n * For backward compatibility, expose players object.\n *\n * @deprecated\n * @memberOf videojs\n * @property {Object|Proxy} players\n */\nvideojs.players = createDeprecationProxy(Player.players, {\n get: 'Access to videojs.players is deprecated; use videojs.getPlayers instead',\n set: 'Modification of videojs.players is deprecated'\n});\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = Component.registerComponent;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} The options object whose values will be overriden\n * @param {Object} The options object with values to override the first\n * @param {Object} Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} The plugin name\n * @param {Function} The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n// REMOVING: We probably should add this to the migration plugin\n// // Expose but deprecate the window[componentName] method for accessing components\n// Object.getOwnPropertyNames(Component.components).forEach(function(name){\n// let component = Component.components[name];\n//\n// // A deprecation warning as the constuctor\n// module.exports[name] = function(player, options, ready){\n// log.warn('Using videojs.'+name+' to access the '+name+' component has been deprecated. Please use videojs.getComponent(\"componentName\")');\n//\n// return new Component(player, options, ready);\n// };\n//\n// // Allow the prototype and class methods to be accessible still this way\n// // Though anything that attempts to override class methods will no longer work\n// assign(module.exports[name], component);\n// });\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]} \ No newline at end of file diff --git a/package.json b/package.json index cdaa2491be..51c33b3cd1 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "videojs-swf": "5.0.0-rc1", "vtt.js": "git+https://github.com/gkatsev/vtt.js.git#vjs-v0.12.1", "xhr": "2.1.0", - "videojs-hola-skin": "git+https://github.com/hola/videojs5-hola-skin.git#vjs-5.0.2", + "videojs-hola-skin": "git+https://github.com/hola/videojs5-hola-skin.git#vjs-5.0.2-2", "videojs-settings": "git+https://github.com/hola/videojs5-settings.git#vjs-5.0.2", "videojs-contrib-hls": "git+https://github.com/hola/videojs-contrib-hls.git#hola_5.0.2-1", "videojs-osmf": "git+https://github.com/hola/videojs5-osmf"
  • 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](&Q?ix}s!X!tZ4#wA* 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

    72}qQ6ZC##Tf!lrAN?X+iCN%2~ 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 z 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%0A>poxV5jr=Y`Epx*s8KzFYzE>CQ zZ2YZ)D^gh2;!;=aZ)rNu<{_V)F395)r^L34n8;$utRut2jahsjUj5HgIPhHYKOtlN z>BDmtm!WK_9I-zmQRBHQUZrOGAR*O?1cY^H5YJB~JQ?eQpwF2x$IyDy{9GM=zDbVzTp-eYNP^h*Pdir(WXY zB&>gR9J93UPma_6L$){t)YGRDs5n^F+sLR(#<`UP3N(R=-KuAWDR#@s?qls6t^S_j zo?o4e_fCoTe9Egj;8R64e#oYqg`md}A4iUzIBDjH(1)H66ASH#7}Z<6)M#kof-N_fR7& z$Oy+>pPS~);5n(!SJ0DEtL!=8j?dNl8&Xs^Z8aI3$}sOK@xL+yHKi7ev=k3+|GCmb z&rTokeEH_Wx~8FDCh$%26alnf*AQ?>!_aPJ+`;42VqUTtoCVWWiSkY&?U8}RCu}aU z9VA?w2}(!8;i9oIi)&&OwuL`SUztw`UzOi*d4b)&9gy7noZB>@zq*9Ug=Qsp`xm*L z=wq6-n`9o5$b)=iyzadqd4~l|Pba@{CF0&dYYo2)37P8VvG|ePLG)D6GdIoM%_m%v zQotMAYV(@fx2yyT*)6ste>%ZmihH4~)0Ka<4poZUE*NX#OR_0kw-%(?YsxK7u}2;~ zhO2z>HFm6d4O7(0yV9&Sr{?Mb5%hM{%R4_G+r4$=k_n+lfV8?#2P6j208-iI#}25u zp&=o;?ydB9d)XfN9oNftxsuvD;4<|SjJ3_cRM4M!+0t(kQ|nC^g2@@B(3l?C$T-cL zK=#B=K~IzrP2$D?$?&Uh@7|869Z`f2SyywGiyj1_c}(Q0-x85i7}(CMI10fXA6wpG z&5~cN$%AH*=i|V%xCI62&%ESVlOCQ)4%G--IBP(jw|-MY_v>Z{EFjl1T@4RrcHNDj zACoNK{hg9seA)!#b3c9I3dQ?M%d36kr!eBn&7*$z5_9gi$VH`7OW;MQ2umqgk*{1; zj7p3Sha&HpmNfqx4m4>t1%AO+-kFkZfG=As$~~~$j0Tsf=0^<8z!|SNB{?1AT{be$ z+;sR=5yx?IWC{EfidC>s4z()p2zc#L8o09D?A?hv%|egy@Nq`tzGyDcx>b0G&Bs!_ zP!Gy}&Ro6&9I&P@(7ee9@1|i9*+rUG`FYeAYJm>=EcbhqN?P?ra_KC-9W@>|Rg%)Y zDPI{{Hnt{=qo|2|TUN{2mpor+$*46C%?U^3SkHaCP&y+0ZE<-yt=qHdT-@+nsMc`Y zTbLUM+3=st<0bN4s*`G-hV>UJCp9!bM{l`08@~Gc_FaQ^E^BytoRXHNwB?r^gKYZs zv2MddKze4^|4e#&lR!toi+Daa?}XE=lfmxERNe);CMDBAxOm`zDIB?ch1e2Y)=3t* zE!M6ZsEd~(S4tmncX{KisOr}Ki3EUpgvD1;MKpY1Z7-MGT-fB1GU+yPX7(oTapC!A zdR`L+nV{`I?(HG*h+ z`TNn%cUxO*qIR-MS})fSudXV9YWQ@>DjoKA#>X7rx#!8aV{n;MfeRUuCnhJyRTjX+ zS=`I3VJ#Rz%4@yrA396SBdiTu+EzP7yZR=Syp?UJ8Q1pm1EndLa_&5}qhuRA9ndew z$K>VYQr|PmBoeomT@!kHw2L^dHY2dmd#yC>kOauC=CR=_v6Q=)4@p($Hxo|6$9mWUA4ai#ERMo!F`E*Fk(UrzR3W{c_w#qwv7EZ#U9 z4LBQ+IEJCe7W4uMpk6+8M-tgK#=Id-C=D^Ko~3xypN)po-Dm3urs+i8!yOEFCDi#S zjE{&XA#LhffgD?-pRJNDFNu3C^(d{P+PkHy#m9gPL-#t0+70^R0*FawjGGY~NsTn? z8+qjU>@z|!?WMZHhG1O19D;%k#WisWLlE9CBawEm0da45%w1zUv;L9Gq<6V7@o0Qp zCQ)@M9dn>Yk0jI6a*lm*n?F;}U>^>D^(t3Udmo|oR;O3|ows|1L!1ri1<5`~Xe4z| zYT&EQpCuV>=(w}7{j+P+TN9OiDKu8)&F9w8_uuysl-EL#7W>&w7Z-H4Fyr7qlM=o- zT!cAU9v6SAoHJT}7^Scq;3#`Tmt8M1wDay-_nnz_^@7axVKv+f6DCi~Gq)s~n+N;> zr;ZQh)N%dlg`GN5IJfJo-$`crH2+R^eq#Fb*upQ72_J(ePewCTLAq=Gb3K6eUg;WS zb2UTq)uY!qRD}OP+x!9f7Vm`)e$4KnwHdo$ntsnRZMK1n+$#XSXD?{cvEOYkws@6q z`xhieTDx<$_3h^R!zXKBt>52LMek2Qs)U8X(eRh?(;?CDgA*i$HN}yAY<+z(+WC2W z{GD>&O^)sjp95uejl1ecZ1{g0A3s{{Z$H`_JbwT3>X@tcM!Wr{LAs#PBH3B#1`IIf zz<%!g`yIB;<9_$;;Q8b^as)H!m%7B6>h|cD@$N{RmUy)BgJ*bOaUzlt@C#is(tGvg zWO6VX9wGiKce7IJ4XM0>tDTAgru`*tp$**w~~KrFYr@vTylSrIQ;D^s-dh*bF!un@_%5 zf4F&f<37OVgjnJ3P&Xy>vYC1ADdkar6=?lOd+%R~lY{mhO#@`1gU~ha`tuLds4=r7mbdR8{6^C>jX1+nXG4lw!7FbJqtqP$=3B_i`>XWl(U_UXYk&%_plUr9}Uk#lV;` zB);*@?Id%s+|ax*xaypD0ngIgPUn%==*`E?;#>f`YOE~L`)gZwzgs`G5A&^jsKys; zBcJp>yz!@+J8V8#1iSsLbmPw5hwFDXegFrnckt5NpZvOD*sakuHNaZ@DBx~={cz)+ zZ6CLuae5fN30Nr)EdO3W;i92l-P^po{%H2+M}w=Y3wEL!?Op*ud~qmS8{gjg`pNqJ zwJ*O}7c;!XC1of`CMUbkOj*Ay$@)}rKwHJBF9#|3YzdmCCW_|s`Z!55+H`l%RKc_% zvaoagbVt$p?F0RC?bhGEdbsiJ{o7AA@BXj#C!60sc(Czs%Ld)A(j_YHsUGyA&UXD> z}7?;VP6UQSNPA|(u?{EOQYv%Qq! zVBX{aY?1(e89kH?&&2^I)@2#rEnoMxCdVXp+B=!rJ>^y;xb&+mk^{`ok90=_~u)r5s#mi)x?O zFC}a(=JKOs8!Kfv8`QHJD?zGDo9O;kKdr}h-d0$k<`$#^#EzmgX$nLo9&9dTW{J41dkm{Ppv! z`FC)^c%B$pM$l09T?b>hIUg52L!+VSxCyVi(xN%TT9LDk%2q%^T`-IdTjHcfC!-0f zDJ%stk;O3{62MG0mReJ^SVUr2$iRP>)v*DOIg?+ zJN@|}=Sx5rULrTC4a4(mt`>H@!?$80=moT{RglOouEc&paLP@UVh6rjHm12eXxU8) z6`$nPIOAw?O*=<55W^9hbv&QtC=XlsA+vpt)OYq z`&`bfMK{vu1xKbYPjo-ju)KGQ>+KA6f7C?Qbgd5-X;8G=)Nu&Pd9)z)Kyh{~Pqx?UfZB=y3JYOb{F{)3dz=z)Wxs37%vvNOCb@pFmbZ?pwa$~Ks13VSwDY7Xxu|-YIXV_^NjR` z-ZA9~Ho@Mva9eFmm_DZ!C>{Ps!@a>gl+uDWiYwYp*_n^WBTUaFd}nrf&|@YUr*a}n zjA7P$_?#~5yFLeUO8B2UHc7)}6X+OyN>C~6Q8K((Ctv3Uc)biJ$$JG7kBBbdq4rmJ zH1q@Uu)P)#mx__Q@l0Z~lE$cNjC#m(l?xPvQEhMT3rTsGl`ltAxwrAczW(+>4(=_n^?(y`hQN)TU_p8xthJ?#QW<28TYvO zup_yq0pRZKa%zinNAFc0E5K+k+5?guJYwm;ipQ_T#IuMUb9A^k;3Sh33hi6pfl=$W z>{)*tkxk+`1ec``&GH`+(pt{>Hp7&daV#D6uYs@7t3MtVQ$R(Cni5*W1PO-_+aA zLd^f7A>`{?=56XYw{$WM{xMtwylV$R>8T0}l)7WY2}37CzeD>7FIszlN32V)lno+I&9@seTmV;b{UJzo|5&27Ox>EuHbeDL-sOxA_QX01TiP~^(3<3t% zEBj1Tn9pI``B^utj5w(%E55xf-W6_ehltLL=G|AOeyI)&?KTV7_^#$HPmPd}2j$b3#Oes>^8@t@z08kzEBS zWZ1bugvldIC?v=2ic+<1_1YGVHV$9yMm|AW6Z%D})A~U0@WG1PjFGF#TN6q;?`E|}>+ zb6bX#%#mg)sKd4^6L7LQ1=OU=omQ*8N{3r+)}mf zWT@^tJ;nod7S6f*b6q&kp9W}a;;orZH`#wvr4W}bM=J!Vn)Nj=KxPDF)R3JW#_H=Y zqYivOdpWRjlFQ`e*TZ+G98RrR4JJy2pj&gYwLRIE3TDb4)*$aq$U@qy@P+2vah#CO zz@6GQq$K93Y{d)Sco0hU4&IsQ2u`yJ!c-(4ab25V+SD|iR^yf4HF*OODRh<3m6hzb_-IpFVZ4@S zKzwIwQsYC%q^6+t9?jACO3#%?$=T@1JcVH_6F|eo;3rHeG3DWI*I%)cI-XpGRe5Xs**lwEI&7svcXE)?lMPU&Z3x_{JI0m#|E*C|QU9a4J zX+l>L(!woQPdZ+H@?8C9|A zmY#u#UcfiL+;OxsLPP%~f?3P*exg&1pyU-(;!rar8I+j=`NF(h)&a$12vaBsK&(ht zkB$*k9&4WFyXo!u-o;@$BewZ%WVi(M#C$>{V0uT-9w%T_*hNc=n!GrQ zqeIvj<3of~NWsXL3UTaV)?t`Gt8Q-|5B?UODGw(Ta13DBO_S8BFSiZctYw3{GqPM zl}@>^uN+J!&#xRJ$nISUcMvOh#j{k4S8J+p1>|E;H9hwv*?x6TsETVRYF7=m(Aqt$ zWI{M?;~h))MbGIi3->^hin+7o$e``%tZp3|`t}9T=ZEWzG;@8$ehM9JVg6s~#tnmZdvDlkV6W5~muF%pz{ zQTpX|b^)wVCFdXRRz`LI)ZA3HwqQ&x#um%b6=-oI{k#)Nhn>wA2oum*_Ocy9@NrBd zN2gR?XyDHMb3eUa}Tb#*4AU&*x#3z$v2~Y3ol@2`Er7E!l-UxSv)#^2-++Ot1CLS z%W1;@I(c@44r7L-tPI9CS64?r@n|raK3xSZPgem1UpGLz21wqpE92S9@Wp7RaG^w+ zYr|S%XY8+jh-q!9Oai@C2Rd5DPg@k%b~);xx&0Cmve`O!Cci=*ML08-DmI5mwHPt% z5WI6e`hAvp@+}8+S~VwFTf%~ViPBjy1%z1L2TaS&CPadbjbHYzQBrEpM_;o3CaYlT zR06wNGped}#GubwJ}P3kPc40uINpQaAh1d{UZm=F-(n-KIcjvS5H zAK~m%twMmcC`{ro7jC$p$i+!ey{sn0#&i?{a5OVZVBB79fcLScl2SOwtS{ zTiy#iiUwtPFs^V0H-TZdc!{ddjbS45OnN}PGE)>PL1ozwyOfW`3MEE2Yv+3>`F(gHhRK%z(ypsaJ;+jxGh7wPjnWP8A)ONnY0H zxD$?T@E&?4`w9Nq^7#If@}{si$Is@Ho7@>r$%rBs22!GYU=HIST-agUCQIRw(5h&8 z-B#1)OYFOcy?!M~tZ*9@K0vszOUm#4b+dP0mfaLEDnsw89p?LnIb1MLp{5AY!tgMWgBx$C6r!5qa4^ftTe87`^@Kn%ygiL-R!1-B^x zzmm(t84w*t1M&c>K5&6h)zbIXk9MmsFm6p=6yR++Y`&SKs8+d7Tes8DINw@w#cq39 z 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